From b70ec8f5f372d269465a781294259e64c85cfca0 Mon Sep 17 00:00:00 2001 From: Adolfo Reyna Date: Sat, 1 Nov 2025 21:18:31 -0400 Subject: [PATCH] fresh download --- .DS_Store | Bin 0 -> 6148 bytes .../Frameworks/SDL2.framework/Headers/SDL.h | 233 + .../SDL2.framework/Headers/SDL2/SDL.h | 233 + .../SDL2.framework/Headers/SDL2/SDL_assert.h | 322 + .../SDL2.framework/Headers/SDL2/SDL_atomic.h | 414 + .../SDL2.framework/Headers/SDL2/SDL_audio.h | 1500 ++ .../SDL2.framework/Headers/SDL2/SDL_bits.h | 126 + .../Headers/SDL2/SDL_blendmode.h | 198 + .../Headers/SDL2/SDL_clipboard.h | 141 + .../SDL2.framework/Headers/SDL2/SDL_config.h | 61 + .../Headers/SDL2/SDL_config_macosx.h | 277 + .../SDL2.framework/Headers/SDL2/SDL_copying.h | 20 + .../SDL2.framework/Headers/SDL2/SDL_cpuinfo.h | 594 + .../SDL2.framework/Headers/SDL2/SDL_endian.h | 348 + .../SDL2.framework/Headers/SDL2/SDL_error.h | 163 + .../SDL2.framework/Headers/SDL2/SDL_events.h | 1166 ++ .../Headers/SDL2/SDL_filesystem.h | 149 + .../Headers/SDL2/SDL_gamecontroller.h | 1074 ++ .../SDL2.framework/Headers/SDL2/SDL_gesture.h | 117 + .../SDL2.framework/Headers/SDL2/SDL_guid.h | 100 + .../SDL2.framework/Headers/SDL2/SDL_haptic.h | 1341 ++ .../SDL2.framework/Headers/SDL2/SDL_hidapi.h | 451 + .../SDL2.framework/Headers/SDL2/SDL_hints.h | 2624 +++ .../Headers/SDL2/SDL_joystick.h | 1069 ++ .../Headers/SDL2/SDL_keyboard.h | 353 + .../SDL2.framework/Headers/SDL2/SDL_keycode.h | 358 + .../SDL2.framework/Headers/SDL2/SDL_loadso.h | 115 + .../SDL2.framework/Headers/SDL2/SDL_locale.h | 103 + .../SDL2.framework/Headers/SDL2/SDL_log.h | 404 + .../SDL2.framework/Headers/SDL2/SDL_main.h | 282 + .../Headers/SDL2/SDL_messagebox.h | 193 + .../SDL2.framework/Headers/SDL2/SDL_metal.h | 113 + .../SDL2.framework/Headers/SDL2/SDL_misc.h | 79 + .../SDL2.framework/Headers/SDL2/SDL_mouse.h | 464 + .../SDL2.framework/Headers/SDL2/SDL_mutex.h | 545 + .../SDL2.framework/Headers/SDL2/SDL_name.h | 33 + .../SDL2.framework/Headers/SDL2/SDL_opengl.h | 2132 +++ .../Headers/SDL2/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../Headers/SDL2/SDL_opengles.h | 39 + .../Headers/SDL2/SDL_opengles2.h | 52 + .../Headers/SDL2/SDL_opengles2_gl2.h | 656 + .../Headers/SDL2/SDL_opengles2_gl2ext.h | 4033 +++++ .../Headers/SDL2/SDL_opengles2_gl2platform.h | 27 + .../Headers/SDL2/SDL_opengles2_khrplatform.h | 311 + .../SDL2.framework/Headers/SDL2/SDL_pixels.h | 644 + .../Headers/SDL2/SDL_platform.h | 261 + .../SDL2.framework/Headers/SDL2/SDL_power.h | 87 + .../SDL2.framework/Headers/SDL2/SDL_quit.h | 58 + .../SDL2.framework/Headers/SDL2/SDL_rect.h | 376 + .../SDL2.framework/Headers/SDL2/SDL_render.h | 1924 +++ .../Headers/SDL2/SDL_revision.h | 7 + .../SDL2.framework/Headers/SDL2/SDL_rwops.h | 841 + .../Headers/SDL2/SDL_scancode.h | 438 + .../SDL2.framework/Headers/SDL2/SDL_sensor.h | 322 + .../SDL2.framework/Headers/SDL2/SDL_shape.h | 155 + .../SDL2.framework/Headers/SDL2/SDL_stdinc.h | 838 + .../SDL2.framework/Headers/SDL2/SDL_surface.h | 997 ++ .../SDL2.framework/Headers/SDL2/SDL_system.h | 623 + .../SDL2.framework/Headers/SDL2/SDL_syswm.h | 386 + .../SDL2.framework/Headers/SDL2/SDL_thread.h | 464 + .../SDL2.framework/Headers/SDL2/SDL_timer.h | 222 + .../SDL2.framework/Headers/SDL2/SDL_touch.h | 150 + .../SDL2.framework/Headers/SDL2/SDL_types.h | 29 + .../SDL2.framework/Headers/SDL2/SDL_version.h | 204 + .../SDL2.framework/Headers/SDL2/SDL_video.h | 2178 +++ .../SDL2.framework/Headers/SDL2/SDL_vulkan.h | 215 + .../SDL2.framework/Headers/SDL2/begin_code.h | 187 + .../SDL2.framework/Headers/SDL2/close_code.h | 40 + .../SDL2.framework/Headers/SDL_assert.h | 322 + .../SDL2.framework/Headers/SDL_atomic.h | 414 + .../SDL2.framework/Headers/SDL_audio.h | 1500 ++ .../SDL2.framework/Headers/SDL_bits.h | 126 + .../SDL2.framework/Headers/SDL_blendmode.h | 198 + .../SDL2.framework/Headers/SDL_clipboard.h | 141 + .../SDL2.framework/Headers/SDL_config.h | 61 + .../Headers/SDL_config_macosx.h | 277 + .../SDL2.framework/Headers/SDL_copying.h | 20 + .../SDL2.framework/Headers/SDL_cpuinfo.h | 594 + .../SDL2.framework/Headers/SDL_endian.h | 348 + .../SDL2.framework/Headers/SDL_error.h | 163 + .../SDL2.framework/Headers/SDL_events.h | 1166 ++ .../SDL2.framework/Headers/SDL_filesystem.h | 149 + .../Headers/SDL_gamecontroller.h | 1074 ++ .../SDL2.framework/Headers/SDL_gesture.h | 117 + .../SDL2.framework/Headers/SDL_guid.h | 100 + .../SDL2.framework/Headers/SDL_haptic.h | 1341 ++ .../SDL2.framework/Headers/SDL_hidapi.h | 451 + .../SDL2.framework/Headers/SDL_hints.h | 2624 +++ .../SDL2.framework/Headers/SDL_joystick.h | 1069 ++ .../SDL2.framework/Headers/SDL_keyboard.h | 353 + .../SDL2.framework/Headers/SDL_keycode.h | 358 + .../SDL2.framework/Headers/SDL_loadso.h | 115 + .../SDL2.framework/Headers/SDL_locale.h | 103 + .../SDL2.framework/Headers/SDL_log.h | 404 + .../SDL2.framework/Headers/SDL_main.h | 282 + .../SDL2.framework/Headers/SDL_messagebox.h | 193 + .../SDL2.framework/Headers/SDL_metal.h | 113 + .../SDL2.framework/Headers/SDL_misc.h | 79 + .../SDL2.framework/Headers/SDL_mouse.h | 464 + .../SDL2.framework/Headers/SDL_mutex.h | 545 + .../SDL2.framework/Headers/SDL_name.h | 33 + .../SDL2.framework/Headers/SDL_opengl.h | 2132 +++ .../SDL2.framework/Headers/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../SDL2.framework/Headers/SDL_opengles.h | 39 + .../SDL2.framework/Headers/SDL_opengles2.h | 52 + .../Headers/SDL_opengles2_gl2.h | 656 + .../Headers/SDL_opengles2_gl2ext.h | 4033 +++++ .../Headers/SDL_opengles2_gl2platform.h | 27 + .../Headers/SDL_opengles2_khrplatform.h | 311 + .../SDL2.framework/Headers/SDL_pixels.h | 644 + .../SDL2.framework/Headers/SDL_platform.h | 261 + .../SDL2.framework/Headers/SDL_power.h | 87 + .../SDL2.framework/Headers/SDL_quit.h | 58 + .../SDL2.framework/Headers/SDL_rect.h | 376 + .../SDL2.framework/Headers/SDL_render.h | 1924 +++ .../SDL2.framework/Headers/SDL_revision.h | 7 + .../SDL2.framework/Headers/SDL_rwops.h | 841 + .../SDL2.framework/Headers/SDL_scancode.h | 438 + .../SDL2.framework/Headers/SDL_sensor.h | 322 + .../SDL2.framework/Headers/SDL_shape.h | 155 + .../SDL2.framework/Headers/SDL_stdinc.h | 838 + .../SDL2.framework/Headers/SDL_surface.h | 997 ++ .../SDL2.framework/Headers/SDL_system.h | 623 + .../SDL2.framework/Headers/SDL_syswm.h | 386 + .../SDL2.framework/Headers/SDL_thread.h | 464 + .../SDL2.framework/Headers/SDL_timer.h | 222 + .../SDL2.framework/Headers/SDL_touch.h | 150 + .../SDL2.framework/Headers/SDL_types.h | 29 + .../SDL2.framework/Headers/SDL_version.h | 204 + .../SDL2.framework/Headers/SDL_video.h | 2178 +++ .../SDL2.framework/Headers/SDL_vulkan.h | 215 + .../SDL2.framework/Headers/begin_code.h | 187 + .../SDL2.framework/Headers/close_code.h | 40 + .../Resources/CMake/sdl2-config-version.cmake | 48 + .../Resources/CMake/sdl2-config.cmake | 71 + .../SDL2.framework/Resources/Info.plist | 50 + .../SDL2.framework/Resources/License.txt | 19 + .../SDL2.framework/Resources/ReadMe.txt | 44 + .../SDL2.framework/Resources/default.metallib | Bin 0 -> 21968 bytes .../Contents/Frameworks/SDL2.framework/SDL2 | Bin 0 -> 3188064 bytes .../SDL2.framework/Versions/.DS_Store | Bin 0 -> 6148 bytes .../SDL2.framework/Versions/A/.DS_Store | Bin 0 -> 8196 bytes .../SDL2.framework/Versions/A/Headers/SDL.h | 233 + .../Versions/A/Headers/SDL2/SDL.h | 233 + .../Versions/A/Headers/SDL2/SDL_assert.h | 322 + .../Versions/A/Headers/SDL2/SDL_atomic.h | 414 + .../Versions/A/Headers/SDL2/SDL_audio.h | 1500 ++ .../Versions/A/Headers/SDL2/SDL_bits.h | 126 + .../Versions/A/Headers/SDL2/SDL_blendmode.h | 198 + .../Versions/A/Headers/SDL2/SDL_clipboard.h | 141 + .../Versions/A/Headers/SDL2/SDL_config.h | 61 + .../A/Headers/SDL2/SDL_config_macosx.h | 277 + .../Versions/A/Headers/SDL2/SDL_copying.h | 20 + .../Versions/A/Headers/SDL2/SDL_cpuinfo.h | 594 + .../Versions/A/Headers/SDL2/SDL_endian.h | 348 + .../Versions/A/Headers/SDL2/SDL_error.h | 163 + .../Versions/A/Headers/SDL2/SDL_events.h | 1166 ++ .../Versions/A/Headers/SDL2/SDL_filesystem.h | 149 + .../A/Headers/SDL2/SDL_gamecontroller.h | 1074 ++ .../Versions/A/Headers/SDL2/SDL_gesture.h | 117 + .../Versions/A/Headers/SDL2/SDL_guid.h | 100 + .../Versions/A/Headers/SDL2/SDL_haptic.h | 1341 ++ .../Versions/A/Headers/SDL2/SDL_hidapi.h | 451 + .../Versions/A/Headers/SDL2/SDL_hints.h | 2624 +++ .../Versions/A/Headers/SDL2/SDL_joystick.h | 1069 ++ .../Versions/A/Headers/SDL2/SDL_keyboard.h | 353 + .../Versions/A/Headers/SDL2/SDL_keycode.h | 358 + .../Versions/A/Headers/SDL2/SDL_loadso.h | 115 + .../Versions/A/Headers/SDL2/SDL_locale.h | 103 + .../Versions/A/Headers/SDL2/SDL_log.h | 404 + .../Versions/A/Headers/SDL2/SDL_main.h | 282 + .../Versions/A/Headers/SDL2/SDL_messagebox.h | 193 + .../Versions/A/Headers/SDL2/SDL_metal.h | 113 + .../Versions/A/Headers/SDL2/SDL_misc.h | 79 + .../Versions/A/Headers/SDL2/SDL_mouse.h | 464 + .../Versions/A/Headers/SDL2/SDL_mutex.h | 545 + .../Versions/A/Headers/SDL2/SDL_name.h | 33 + .../Versions/A/Headers/SDL2/SDL_opengl.h | 2132 +++ .../A/Headers/SDL2/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../Versions/A/Headers/SDL2/SDL_opengles.h | 39 + .../Versions/A/Headers/SDL2/SDL_opengles2.h | 52 + .../A/Headers/SDL2/SDL_opengles2_gl2.h | 656 + .../A/Headers/SDL2/SDL_opengles2_gl2ext.h | 4033 +++++ .../Headers/SDL2/SDL_opengles2_gl2platform.h | 27 + .../Headers/SDL2/SDL_opengles2_khrplatform.h | 311 + .../Versions/A/Headers/SDL2/SDL_pixels.h | 644 + .../Versions/A/Headers/SDL2/SDL_platform.h | 261 + .../Versions/A/Headers/SDL2/SDL_power.h | 87 + .../Versions/A/Headers/SDL2/SDL_quit.h | 58 + .../Versions/A/Headers/SDL2/SDL_rect.h | 376 + .../Versions/A/Headers/SDL2/SDL_render.h | 1924 +++ .../Versions/A/Headers/SDL2/SDL_revision.h | 7 + .../Versions/A/Headers/SDL2/SDL_rwops.h | 841 + .../Versions/A/Headers/SDL2/SDL_scancode.h | 438 + .../Versions/A/Headers/SDL2/SDL_sensor.h | 322 + .../Versions/A/Headers/SDL2/SDL_shape.h | 155 + .../Versions/A/Headers/SDL2/SDL_stdinc.h | 838 + .../Versions/A/Headers/SDL2/SDL_surface.h | 997 ++ .../Versions/A/Headers/SDL2/SDL_system.h | 623 + .../Versions/A/Headers/SDL2/SDL_syswm.h | 386 + .../Versions/A/Headers/SDL2/SDL_thread.h | 464 + .../Versions/A/Headers/SDL2/SDL_timer.h | 222 + .../Versions/A/Headers/SDL2/SDL_touch.h | 150 + .../Versions/A/Headers/SDL2/SDL_types.h | 29 + .../Versions/A/Headers/SDL2/SDL_version.h | 204 + .../Versions/A/Headers/SDL2/SDL_video.h | 2178 +++ .../Versions/A/Headers/SDL2/SDL_vulkan.h | 215 + .../Versions/A/Headers/SDL2/begin_code.h | 187 + .../Versions/A/Headers/SDL2/close_code.h | 40 + .../Versions/A/Headers/SDL_assert.h | 322 + .../Versions/A/Headers/SDL_atomic.h | 414 + .../Versions/A/Headers/SDL_audio.h | 1500 ++ .../Versions/A/Headers/SDL_bits.h | 126 + .../Versions/A/Headers/SDL_blendmode.h | 198 + .../Versions/A/Headers/SDL_clipboard.h | 141 + .../Versions/A/Headers/SDL_config.h | 61 + .../Versions/A/Headers/SDL_config_macosx.h | 277 + .../Versions/A/Headers/SDL_copying.h | 20 + .../Versions/A/Headers/SDL_cpuinfo.h | 594 + .../Versions/A/Headers/SDL_endian.h | 348 + .../Versions/A/Headers/SDL_error.h | 163 + .../Versions/A/Headers/SDL_events.h | 1166 ++ .../Versions/A/Headers/SDL_filesystem.h | 149 + .../Versions/A/Headers/SDL_gamecontroller.h | 1074 ++ .../Versions/A/Headers/SDL_gesture.h | 117 + .../Versions/A/Headers/SDL_guid.h | 100 + .../Versions/A/Headers/SDL_haptic.h | 1341 ++ .../Versions/A/Headers/SDL_hidapi.h | 451 + .../Versions/A/Headers/SDL_hints.h | 2624 +++ .../Versions/A/Headers/SDL_joystick.h | 1069 ++ .../Versions/A/Headers/SDL_keyboard.h | 353 + .../Versions/A/Headers/SDL_keycode.h | 358 + .../Versions/A/Headers/SDL_loadso.h | 115 + .../Versions/A/Headers/SDL_locale.h | 103 + .../Versions/A/Headers/SDL_log.h | 404 + .../Versions/A/Headers/SDL_main.h | 282 + .../Versions/A/Headers/SDL_messagebox.h | 193 + .../Versions/A/Headers/SDL_metal.h | 113 + .../Versions/A/Headers/SDL_misc.h | 79 + .../Versions/A/Headers/SDL_mouse.h | 464 + .../Versions/A/Headers/SDL_mutex.h | 545 + .../Versions/A/Headers/SDL_name.h | 33 + .../Versions/A/Headers/SDL_opengl.h | 2132 +++ .../Versions/A/Headers/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../Versions/A/Headers/SDL_opengles.h | 39 + .../Versions/A/Headers/SDL_opengles2.h | 52 + .../Versions/A/Headers/SDL_opengles2_gl2.h | 656 + .../Versions/A/Headers/SDL_opengles2_gl2ext.h | 4033 +++++ .../A/Headers/SDL_opengles2_gl2platform.h | 27 + .../A/Headers/SDL_opengles2_khrplatform.h | 311 + .../Versions/A/Headers/SDL_pixels.h | 644 + .../Versions/A/Headers/SDL_platform.h | 261 + .../Versions/A/Headers/SDL_power.h | 87 + .../Versions/A/Headers/SDL_quit.h | 58 + .../Versions/A/Headers/SDL_rect.h | 376 + .../Versions/A/Headers/SDL_render.h | 1924 +++ .../Versions/A/Headers/SDL_revision.h | 7 + .../Versions/A/Headers/SDL_rwops.h | 841 + .../Versions/A/Headers/SDL_scancode.h | 438 + .../Versions/A/Headers/SDL_sensor.h | 322 + .../Versions/A/Headers/SDL_shape.h | 155 + .../Versions/A/Headers/SDL_stdinc.h | 838 + .../Versions/A/Headers/SDL_surface.h | 997 ++ .../Versions/A/Headers/SDL_system.h | 623 + .../Versions/A/Headers/SDL_syswm.h | 386 + .../Versions/A/Headers/SDL_thread.h | 464 + .../Versions/A/Headers/SDL_timer.h | 222 + .../Versions/A/Headers/SDL_touch.h | 150 + .../Versions/A/Headers/SDL_types.h | 29 + .../Versions/A/Headers/SDL_version.h | 204 + .../Versions/A/Headers/SDL_video.h | 2178 +++ .../Versions/A/Headers/SDL_vulkan.h | 215 + .../Versions/A/Headers/begin_code.h | 187 + .../Versions/A/Headers/close_code.h | 40 + .../Resources/CMake/sdl2-config-version.cmake | 48 + .../A/Resources/CMake/sdl2-config.cmake | 71 + .../Versions/A/Resources/Info.plist | 50 + .../Versions/A/Resources/License.txt | 19 + .../Versions/A/Resources/ReadMe.txt | 44 + .../Versions/A/Resources/default.metallib | Bin 0 -> 21968 bytes .../Frameworks/SDL2.framework/Versions/A/SDL2 | Bin 0 -> 3188064 bytes .../Versions/A/_CodeSignature/CodeResources | 933 ++ .../SDL2.framework/Versions/Current/.DS_Store | Bin 0 -> 8196 bytes .../Versions/Current/Headers/SDL.h | 233 + .../Versions/Current/Headers/SDL2/SDL.h | 233 + .../Current/Headers/SDL2/SDL_assert.h | 322 + .../Current/Headers/SDL2/SDL_atomic.h | 414 + .../Versions/Current/Headers/SDL2/SDL_audio.h | 1500 ++ .../Versions/Current/Headers/SDL2/SDL_bits.h | 126 + .../Current/Headers/SDL2/SDL_blendmode.h | 198 + .../Current/Headers/SDL2/SDL_clipboard.h | 141 + .../Current/Headers/SDL2/SDL_config.h | 61 + .../Current/Headers/SDL2/SDL_config_macosx.h | 277 + .../Current/Headers/SDL2/SDL_copying.h | 20 + .../Current/Headers/SDL2/SDL_cpuinfo.h | 594 + .../Current/Headers/SDL2/SDL_endian.h | 348 + .../Versions/Current/Headers/SDL2/SDL_error.h | 163 + .../Current/Headers/SDL2/SDL_events.h | 1166 ++ .../Current/Headers/SDL2/SDL_filesystem.h | 149 + .../Current/Headers/SDL2/SDL_gamecontroller.h | 1074 ++ .../Current/Headers/SDL2/SDL_gesture.h | 117 + .../Versions/Current/Headers/SDL2/SDL_guid.h | 100 + .../Current/Headers/SDL2/SDL_haptic.h | 1341 ++ .../Current/Headers/SDL2/SDL_hidapi.h | 451 + .../Versions/Current/Headers/SDL2/SDL_hints.h | 2624 +++ .../Current/Headers/SDL2/SDL_joystick.h | 1069 ++ .../Current/Headers/SDL2/SDL_keyboard.h | 353 + .../Current/Headers/SDL2/SDL_keycode.h | 358 + .../Current/Headers/SDL2/SDL_loadso.h | 115 + .../Current/Headers/SDL2/SDL_locale.h | 103 + .../Versions/Current/Headers/SDL2/SDL_log.h | 404 + .../Versions/Current/Headers/SDL2/SDL_main.h | 282 + .../Current/Headers/SDL2/SDL_messagebox.h | 193 + .../Versions/Current/Headers/SDL2/SDL_metal.h | 113 + .../Versions/Current/Headers/SDL2/SDL_misc.h | 79 + .../Versions/Current/Headers/SDL2/SDL_mouse.h | 464 + .../Versions/Current/Headers/SDL2/SDL_mutex.h | 545 + .../Versions/Current/Headers/SDL2/SDL_name.h | 33 + .../Current/Headers/SDL2/SDL_opengl.h | 2132 +++ .../Current/Headers/SDL2/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../Current/Headers/SDL2/SDL_opengles.h | 39 + .../Current/Headers/SDL2/SDL_opengles2.h | 52 + .../Current/Headers/SDL2/SDL_opengles2_gl2.h | 656 + .../Headers/SDL2/SDL_opengles2_gl2ext.h | 4033 +++++ .../Headers/SDL2/SDL_opengles2_gl2platform.h | 27 + .../Headers/SDL2/SDL_opengles2_khrplatform.h | 311 + .../Current/Headers/SDL2/SDL_pixels.h | 644 + .../Current/Headers/SDL2/SDL_platform.h | 261 + .../Versions/Current/Headers/SDL2/SDL_power.h | 87 + .../Versions/Current/Headers/SDL2/SDL_quit.h | 58 + .../Versions/Current/Headers/SDL2/SDL_rect.h | 376 + .../Current/Headers/SDL2/SDL_render.h | 1924 +++ .../Current/Headers/SDL2/SDL_revision.h | 7 + .../Versions/Current/Headers/SDL2/SDL_rwops.h | 841 + .../Current/Headers/SDL2/SDL_scancode.h | 438 + .../Current/Headers/SDL2/SDL_sensor.h | 322 + .../Versions/Current/Headers/SDL2/SDL_shape.h | 155 + .../Current/Headers/SDL2/SDL_stdinc.h | 838 + .../Current/Headers/SDL2/SDL_surface.h | 997 ++ .../Current/Headers/SDL2/SDL_system.h | 623 + .../Versions/Current/Headers/SDL2/SDL_syswm.h | 386 + .../Current/Headers/SDL2/SDL_thread.h | 464 + .../Versions/Current/Headers/SDL2/SDL_timer.h | 222 + .../Versions/Current/Headers/SDL2/SDL_touch.h | 150 + .../Versions/Current/Headers/SDL2/SDL_types.h | 29 + .../Current/Headers/SDL2/SDL_version.h | 204 + .../Versions/Current/Headers/SDL2/SDL_video.h | 2178 +++ .../Current/Headers/SDL2/SDL_vulkan.h | 215 + .../Current/Headers/SDL2/begin_code.h | 187 + .../Current/Headers/SDL2/close_code.h | 40 + .../Versions/Current/Headers/SDL_assert.h | 322 + .../Versions/Current/Headers/SDL_atomic.h | 414 + .../Versions/Current/Headers/SDL_audio.h | 1500 ++ .../Versions/Current/Headers/SDL_bits.h | 126 + .../Versions/Current/Headers/SDL_blendmode.h | 198 + .../Versions/Current/Headers/SDL_clipboard.h | 141 + .../Versions/Current/Headers/SDL_config.h | 61 + .../Current/Headers/SDL_config_macosx.h | 277 + .../Versions/Current/Headers/SDL_copying.h | 20 + .../Versions/Current/Headers/SDL_cpuinfo.h | 594 + .../Versions/Current/Headers/SDL_endian.h | 348 + .../Versions/Current/Headers/SDL_error.h | 163 + .../Versions/Current/Headers/SDL_events.h | 1166 ++ .../Versions/Current/Headers/SDL_filesystem.h | 149 + .../Current/Headers/SDL_gamecontroller.h | 1074 ++ .../Versions/Current/Headers/SDL_gesture.h | 117 + .../Versions/Current/Headers/SDL_guid.h | 100 + .../Versions/Current/Headers/SDL_haptic.h | 1341 ++ .../Versions/Current/Headers/SDL_hidapi.h | 451 + .../Versions/Current/Headers/SDL_hints.h | 2624 +++ .../Versions/Current/Headers/SDL_joystick.h | 1069 ++ .../Versions/Current/Headers/SDL_keyboard.h | 353 + .../Versions/Current/Headers/SDL_keycode.h | 358 + .../Versions/Current/Headers/SDL_loadso.h | 115 + .../Versions/Current/Headers/SDL_locale.h | 103 + .../Versions/Current/Headers/SDL_log.h | 404 + .../Versions/Current/Headers/SDL_main.h | 282 + .../Versions/Current/Headers/SDL_messagebox.h | 193 + .../Versions/Current/Headers/SDL_metal.h | 113 + .../Versions/Current/Headers/SDL_misc.h | 79 + .../Versions/Current/Headers/SDL_mouse.h | 464 + .../Versions/Current/Headers/SDL_mutex.h | 545 + .../Versions/Current/Headers/SDL_name.h | 33 + .../Versions/Current/Headers/SDL_opengl.h | 2132 +++ .../Current/Headers/SDL_opengl_glext.h | 13213 ++++++++++++++++ .../Versions/Current/Headers/SDL_opengles.h | 39 + .../Versions/Current/Headers/SDL_opengles2.h | 52 + .../Current/Headers/SDL_opengles2_gl2.h | 656 + .../Current/Headers/SDL_opengles2_gl2ext.h | 4033 +++++ .../Headers/SDL_opengles2_gl2platform.h | 27 + .../Headers/SDL_opengles2_khrplatform.h | 311 + .../Versions/Current/Headers/SDL_pixels.h | 644 + .../Versions/Current/Headers/SDL_platform.h | 261 + .../Versions/Current/Headers/SDL_power.h | 87 + .../Versions/Current/Headers/SDL_quit.h | 58 + .../Versions/Current/Headers/SDL_rect.h | 376 + .../Versions/Current/Headers/SDL_render.h | 1924 +++ .../Versions/Current/Headers/SDL_revision.h | 7 + .../Versions/Current/Headers/SDL_rwops.h | 841 + .../Versions/Current/Headers/SDL_scancode.h | 438 + .../Versions/Current/Headers/SDL_sensor.h | 322 + .../Versions/Current/Headers/SDL_shape.h | 155 + .../Versions/Current/Headers/SDL_stdinc.h | 838 + .../Versions/Current/Headers/SDL_surface.h | 997 ++ .../Versions/Current/Headers/SDL_system.h | 623 + .../Versions/Current/Headers/SDL_syswm.h | 386 + .../Versions/Current/Headers/SDL_thread.h | 464 + .../Versions/Current/Headers/SDL_timer.h | 222 + .../Versions/Current/Headers/SDL_touch.h | 150 + .../Versions/Current/Headers/SDL_types.h | 29 + .../Versions/Current/Headers/SDL_version.h | 204 + .../Versions/Current/Headers/SDL_video.h | 2178 +++ .../Versions/Current/Headers/SDL_vulkan.h | 215 + .../Versions/Current/Headers/begin_code.h | 187 + .../Versions/Current/Headers/close_code.h | 40 + .../Resources/CMake/sdl2-config-version.cmake | 48 + .../Current/Resources/CMake/sdl2-config.cmake | 71 + .../Versions/Current/Resources/Info.plist | 50 + .../Versions/Current/Resources/License.txt | 19 + .../Versions/Current/Resources/ReadMe.txt | 44 + .../Current/Resources/default.metallib | Bin 0 -> 21968 bytes .../SDL2.framework/Versions/Current/SDL2 | Bin 0 -> 3188064 bytes .../Current/_CodeSignature/CodeResources | 933 ++ PICO-8.app/Contents/Info.plist | 32 + PICO-8.app/Contents/MacOS/pico8 | Bin 0 -> 2957720 bytes PICO-8.app/Contents/MacOS/pico8.dat | Bin 0 -> 11243101 bytes PICO-8.app/Contents/Resources/pico8.icns | Bin 0 -> 18432 bytes license.txt | 72 + pico-8_manual.txt | 4575 ++++++ 429 files changed, 293075 insertions(+) create mode 100644 .DS_Store create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config-version.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/Info.plist create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/License.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/ReadMe.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/default.metallib create mode 100755 PICO-8.app/Contents/Frameworks/SDL2.framework/SDL2 create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/.DS_Store create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/.DS_Store create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config-version.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/License.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/ReadMe.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/default.metallib create mode 100755 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/SDL2 create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/_CodeSignature/CodeResources create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/.DS_Store create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_assert.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_atomic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_audio.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_bits.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_copying.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_endian.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_error.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_events.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gesture.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_guid.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_haptic.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hidapi.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hints.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_joystick.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keycode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_loadso.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_locale.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_log.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_main.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_metal.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_misc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mouse.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mutex.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_name.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl_glext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2ext.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_khrplatform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_pixels.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_platform.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_power.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_quit.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rect.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_render.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_revision.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rwops.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_scancode.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_sensor.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_shape.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_surface.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_system.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_syswm.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_thread.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_timer.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_touch.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_types.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_version.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_video.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_vulkan.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/begin_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/close_code.h create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config-version.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config.cmake create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/Info.plist create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/License.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/ReadMe.txt create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/default.metallib create mode 100755 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/SDL2 create mode 100644 PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/_CodeSignature/CodeResources create mode 100644 PICO-8.app/Contents/Info.plist create mode 100755 PICO-8.app/Contents/MacOS/pico8 create mode 100644 PICO-8.app/Contents/MacOS/pico8.dat create mode 100755 PICO-8.app/Contents/Resources/pico8.icns create mode 100755 license.txt create mode 100644 pico-8_manual.txt diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..3f8c09a76e124e623973911d773f00690d265531 GIT binary patch literal 6148 zcmeHKy-ou$47N*$3YLzHnUO&123shH5EDq{0iaZZq1AO^&r9$qJOC4~#rMSq^~6w?Yn;5nExVS$dF(l z7zhS}fneZA7{HxP8SNQH9Sj5m!N4a2JRcGYF*_E+dUT+wDFBeq=qk{eOE4xmX2)U( z3q&mxXrbyUhFUoKllx`IVrb!_o_wg!{E@t9ogL$+>MoiMqYegwfi43()*SQxKgTcA zo8)&xq7@7T1OJQx9X7LOicR_5`el2(YZJ;X3Wa`!3IuxR5r78Ik^O2kd!i1%>{tvr T3j1p~FdhPxkf?%zUtr)J%Xljj literal 0 HcmV?d00001 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL.h new file mode 100644 index 0000000..0b81a21 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL.h new file mode 100644 index 0000000..0b81a21 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL2/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Headers/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config-version.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config-version.cmake new file mode 100644 index 0000000..feea76e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config-version.cmake @@ -0,0 +1,48 @@ +# based on the files generated by CMake's write_basic_package_version_file + +# SDL2 CMake version configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h") + message(AUTHOR_WARNING "Could not find SDL_version.h. This script is meant to be placed in the Resources/CMake directory of SDL2.framework") + return() +endif() + +file(READ "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h" _sdl_version_h) +string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}") +set(_sdl_major "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}") +set(_sdl_minor "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl_patch_re "${_sdl_version_h}") +set(_sdl_patch "${CMAKE_MATCH_1}") +if(_sdl_major_re AND _sdl_minor_re AND _sdl_patch_re) + set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_patch}") +else() + message(AUTHOR_WARNING "Could not extract version from SDL_version.h.") + return() +endif() + +if(PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# if the using project doesn't have CMAKE_SIZEOF_VOID_P set, fail. +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config.cmake new file mode 100644 index 0000000..e1b7713 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/CMake/sdl2-config.cmake @@ -0,0 +1,71 @@ +# SDL2 CMake configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +# INTERFACE_LINK_OPTIONS needs CMake 3.12 +cmake_minimum_required(VERSION 3.12) + +include(FeatureSummary) +set_package_properties(SDL2 PROPERTIES + URL "https://www.libsdl.org/" + DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware" +) + +# Copied from `configure_package_config_file` +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +# Copied from `configure_package_config_file` +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +set(SDL2_FOUND TRUE) + +string(REGEX REPLACE "SDL2\\.framework.*" "SDL2.framework" SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}") +string(REGEX REPLACE "SDL2\\.framework.*" "" SDL2_FRAMEWORK_PARENT_PATH "${CMAKE_CURRENT_LIST_DIR}") + +# For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables. + +set_and_check(SDL2_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_EXEC_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_INCLUDE_DIR "${SDL2_FRAMEWORK_PATH}/Headers") +set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR};${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_BINDIR "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_LIBDIR "${SDL2_FRAMEWORK_PATH}") + +set(SDL2_LIBRARIES "SDL2::SDL2") + +# All targets are created, even when some might not be requested though COMPONENTS. +# This is done for compatibility with CMake generated SDL2-target.cmake files. + +if(NOT TARGET SDL2::SDL2) + add_library(SDL2::SDL2 INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2 + PROPERTIES + INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\"" + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}" + INTERFACE_LINK_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\";SHELL:-framework SDL2" + COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED" + INTERFACE_SDL2_SHARED "ON" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL2" + ) +endif() +set(SDL2_SDL2_FOUND TRUE) + +if(NOT TARGET SDL2::SDL2main) + add_library(SDL2::SDL2main INTERFACE IMPORTED) +endif() +set(SDL2_SDL2main_FOUND TRUE) + +check_required_components(SDL2) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/Info.plist b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/Info.plist new file mode 100644 index 0000000..931edd0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/Info.plist @@ -0,0 +1,50 @@ + + + + + BuildMachineOSBuild + 22F82 + CFBundleDevelopmentRegion + English + CFBundleExecutable + SDL2 + CFBundleGetInfoString + http://www.libsdl.org + CFBundleIdentifier + org.libsdl.SDL2 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Simple DirectMedia Layer + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.28.5 + CFBundleSignature + SDLX + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2.28.5 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + + DTPlatformName + macosx + DTPlatformVersion + 13.3 + DTSDKBuild + 22E245 + DTSDKName + macosx13.3 + DTXcode + 1431 + DTXcodeBuild + 14E300c + LSMinimumSystemVersion + 10.11 + + diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/License.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/License.txt new file mode 100644 index 0000000..523c51e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/License.txt @@ -0,0 +1,19 @@ + +Simple DirectMedia Layer +Copyright (C) 1997-2023 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/ReadMe.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/ReadMe.txt new file mode 100644 index 0000000..9f49591 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/ReadMe.txt @@ -0,0 +1,44 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://zlib.net/zlib_license.html + + +This packages contains the SDL framework for OS X. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL2.framework to /Library/Frameworks + +You may alternatively install it in /Library/Frameworks +if your access privileges are not high enough. + + +Use in CMake projects: +SDL2.framework can be used in CMake projects using the following pattern: +``` +find_package(SDL2 REQUIRED COMPONENTS SDL2) +add_executable(my_game ${MY_SOURCES}) +target_link_libraries(my_game PRIVATE SDL2::SDL2) +``` +If SDL2.framework is installed in a non-standard location, +please refer to the following link for ways to configure CMake: +https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/Mac OS X are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on Mac OS X. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/default.metallib b/PICO-8.app/Contents/Frameworks/SDL2.framework/Resources/default.metallib new file mode 100644 index 0000000000000000000000000000000000000000..a30298d0aaceab4ca7aeb32083e06dc3dfa99dfb GIT binary patch literal 21968 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Μ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Ĺ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 z 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 z zQ@LGnd9n3guppKSYgedM{(b%>F3q$0Etqm$8Gkq=vx^Os5U_?hJ`a^jZ&)i|Ci+Cm zp0)YI&@oO_LT$S|810m67+E8^U%tH@ED~W)X-W|IS>)AmC=?muH1wrs;C}Up^_9);T5FXJHL@IM9I>IoOAnpUv4}^zW>Qs_=upRwitg9b9fI~#o zgNOSEYQHSnfdGcQ6Y1-~pcMo(0(XNm{tvY~OKSO^MpKr~DOyC{17&q3cw4H}Y{$#4R0BOKcv{}Aasyb7 zY8nUR6IX$Bq0fJ&3ulNPkVfxVl#RN7L2DwK zzpD!%iG_GI-?JXhS8`pen8N9I7n}QGSDgty)NB1hu-fSWf0&^LZp3itB&(B__9_rj z@yDH+YM+~TlGR@_XU_4Ke2D>=<;4I1gV2ZYSUC_vabdjiwR#4jNQjRm{H{nliH{R% z5Izf+t5v%Nlsp55ywl_aBG}(fIUGcV03*hi_>V-)O(o|3pgB=a2gwRsB_M#Ej$`sd z9HwEZ7;;22$Ml5yu0pa)OE7ifP(yuJs?N3)o1Ek~q6=P9-RG=q86Vx`T>d%@ zOP0(h>AWj%zl_7di7MA}NkS{)Ls&m>Lg^8&Dp=s|Q}jB*i31l#B<1TQb#|64HZWrx z;i?V`X+*sTN?7GQ9k@`X#Oi~pk!0Wkdms=Y(Gia;5I*jej8~8lWuvgFL`;m)=W$D$0uNaveiJ1Jp@SJ`aR3 zfN=?ExZ!*TROV0%5BFan*xtt7L;XYgL?JM)VjXU{P!{z+;xq*R`+BLrE`F`UAd~)U zxBW8JJ{FH|UmBwQ$*O&6NVhKy(LVdQY2W5Sw=d9k*#7>Ye;FV^5A5ugPj#p3Bmb5C zZ@C&g6K$msEm-ytEV%X1sxX?0Oim;fR62+>`x_MvS)o>!xceeHO&^c5nj`31zVF05 zyrd#vBP6gaO3cHtj$N;M3qCH7YdrHlmxO|woT9YXDK zn&LAr-c3gpDWIh{lz4kgdpb{0{&ahWAH)A_?I{8j^gfZYSs|D4P#X?a4dyu8W6v8> ztrCg8?v&41(Dpe6S9t0~pIT(VixECZAx&pyt>M`FMP_BcqtE=&;c5va5)DZ%KC47D zMo&v8IHn-ak6Dyp4pIKXZ5zZk0yzSQ0(ebjLk&p>fr*84`C@`=Hhk^5P2ISRFDvO@ zC2BNAG2gH?JyA4Lf?Kgsl4<)hzrALHvXfbzD^(2zDmBSu^Z~L+mU$WRg6#yQibB1x zxx?VpYo5kj*nr=V;xo2(2#;TzQxPUVLG@$9fc)_t2WE@U!0KAnixPzz`}6@U*|KL} z=B)9eF6wtWehI{mf|`9BqF5*-w!i9y+de$1{b+zXn||9ti4}x=ieZbAwvaM8O5nGZ zAP8Z}S&ratHxVBQ@5I$5%77MgPp^4iN0T@*;K;*vlfH8dnAL*eJ98#Y+6B0vawh^A zEjpQ68Ljif{W`y2jJ^EqjKY4M#%x7BU754#sm_6fpy59`?aRktaX34<^dl)5m85 z3*77@k%TZxkqvP)Jt9^X_xPGCFHq;HrV1`?DYDd9i~j~&kd&6N?1P5YxQ?9AX^Ct zJb?6JyB}4|5-|a0BZLP6f>P=^uJf?D^qg7U7`w{!It`;*YgN z!6SSwrW*{-1nwDz>0cjc_scknW29Tzm$ALv2qM4bfnxXu& z0@4-70m*A@iToMVV*RiXJ96Qcvd05kTkj)T8$l_SPn zu-43|L0|1NeqfG)?UD?YysY8j2-5ZNBX{vx6S9f;+-9uMXSyt6062LN3SQRt&+lVo z&a)>N#-zFihaGDBniVmk3V(TP_QF@(Ag31Jgf90S6DvZ zs;m&zp>HwSL&>kU*Ojq>bJeXjY+dKv*(}RT<%dUfBCttkV^s79a^xF<9IXfxY;!Ad z;^SQ|>@W+ZNsTZIIXh@0R;`RV86f(Rr|p>uoBAHDsD9;Wn4=GN+^8mt*@!tLt}AM1 zeJzN`8WVlMozxsrwkiG2IKsIFDiVFeS+j)aCnMg+Ctqd-7!nlIPtMJQ?sQBLWYPxV zyV#UWuld_6&cX(P!cEyd797KBK+Vc)J5r#b=;<`il7xY%xD#$pd+UE_4gZl&2Vcfv)bI=<*$l zE{8gILpSp}k)hNBopfUDSTBa6KG{l*aneswNHZ;x*jH;NDQJnAc*tcA(5zpbpmSST+cMsBwU6?|=$~_Ke`0m_z2W!JPV4(CVRj3A)pvMUJ zY>3Q5ZpV?qPSoP(qU(jeWL-A~DOn_nF9GDY03wr`u!aF5InZJe9h$L0V`~rttyDd< zM$A{2#C1@W?XnKIa|yEV;>dMazhFRf^i~fxG~Z*F()Y_)?Cx)4v9ovEPkERBSMe)f zK`|ToPeu}Xi2p658I3K>_x!KM=H_qY&H0Kn{6A#jpZ*i#_-O$_DS@?9+U zInU2|%6hV^Jxk~tok@JTULOmv1AvX$xHQlFD>8<5ue@9j7lxnh=~AXYdcqFXrT8-- zZew*19{FX*OOho?jD1D(gBfBD8ham%mS=JKROKb~W;>mJu=utnTdae9sf$!3=zTjV z(zl4ED5;zani1uOW(Nig%?SKvs1_{s)ZW*}HQVJ14x@AWPnUVm+Zw%E1-oLd;02!0 zec8a4@}x;zxbV@3(N~_yBa)lRNo#M6#htkRx{#gMKQv&gS%tzSRq9z-m5 zgi2rVhi@wK7@NF#_-DRT^n5IISMy+(rx{?^7~XfIC))Nip;Z~a*n5Ej-PrCozVsVk zTL+9(SA9d^3syVq8>_uQ1~2E1%+l3J#%R(@-;Iqy3T=uuQUgp_53No>`KpBpf6{;0 zA7zxUvh5Yrcc>{tH#U_=GVktTZ(nrEPZE#0Qu!*!|F3)-7HLrrO_{)b5*tNn!i!k>kA@=vDkTK`e-j4IQOgQ(B|$~u!GI4nf{ z+w=B=x3ufaBPS9TmxrZ(PyBva?qA6A8HcPV?j#dk=QCf=*^FQk%M5;+j>X{HZw=(j z8gfQ=mo9p&G6XE2fu&-8eZ45k3oj#?-`M4e;U=lcTC9qJ!RL=PMIdd;Td!ia$1?ld z2}_M#axj7v#T1~MDTjBayJD@9c~VE_9uGR1{pN)q6Yq(AKx<-|TX-)u&ha!2&j2cy zXU*_FZeP=I79B3a|C_U%r*0NbTiDBGHQqss%>2u0RZ(Kw8~cFv$gY@~-(1(r726<{ zen&E&v6`^D8kN!x{!j&P*YVD0=ASu_rW*KyU1>K)H~Wtis5dYplibYTIbS8P8*AqG zr0t|vpFCrkxunMA(q|0Mw(5{Ly?Ohk9<%@M9d_}E4vdaw z>&M%BP~vWSGpm#FB+$FHodiOhJ@$@A{G%O&*JUg;oO1cx-9l~OD++>w>6t(nz$pnj|GuR-x z@NLpksE~+RIFI~P*JE}sKvo$~?8rDf4g=wK^85nTnl>ltXTKF3u7b|RwR0d-H!}y# zp}cTajc$Bmy+m~M1Z`Y{mg`-}e~mU!{xQPn?a#^3dMD>t^;4t-yKpYK6j?6VV40V- z3(b8mRK()mZ{UbUfCt_kVJNk))NAHHBy|anHbN@&x{Q%U(5VBR*MZK=pQO;{U?5&y z;o}rVjO)~9oIg#5lhNciezclAsts9l zRY49&FWqJ%%*;=_Hx9d9Ivu1sq^gw%4Yog)ScA!-=FgdlWPB`tRP;J}6x?ZQ=yEQ9 zVVVMxgL}2}O49afy}g^E)xR+4bfYbn`Oe2Ox>iFzFY=}U-VddjMHieuES>%$7ylWh zo5@+aP_i%Dr+qn$F7qy?{l#zy2C_r5pU{OigX^aTbv%5H3I`Wo#WJsPE_R9@KgPwW?wm4<9NTkThc@jZ8|aJ(1feS#|$$_|@o9){a$a zl(_0GW*yg?gZQz&JI$Gi-sDRLiV?~t77->{9!3&xYt`GZG+v(&2Mxxs3|=>~f52-t zuLtbcfxMoGf`!mQysqMK60bveO%pwqF|3H!UiPbQ&8~=}Y=lsrng84jCXviSumKXR zr&aW7xJMx0hF9h&>oObOz!@|{5l?@Wepp(xcU~;st&!y?yIgtORQwNHrSsdY?v%%1 zvOZo73e3XO8JN`B9ex|jY#|MIe)TTNlHZZpc@6QBkfG!B;Thu@J*v!OZ1fmE2&;d6 zvJF3FzN$;vP1YV2)Fd!pPaV^!!!ih?)brk!pLeP92B9Uz1!9?HR4l14?C2EL$ZJnk zof1HlSPjgv%psD_SmiT{bJC(IdE2~spTnw8Q=!5hZT=w5%%(cOvBM^b8$9JUnIA1L z2|pNBMkCs8QH=;4JVAS40^MwE*2BH#NPpY@TVp$b_@p2ZhYMfMp*c(ls;Q~e6FEeW z(9ZdAVvyW1eICo4^P$uHChRI<;z%VIUPqYBU|{jB zo1H=A<$NzI+Ap2(f2eSXpP4%dlU0fTKp@v9DXFuKa3q2;Y>2X?A;mh$Z|0|}vNtJ7 zhhL_fP0amEctl2lD3JrKLpM3I=8(i$vx_`Gc9ab9EhJQv*Q~Ty=D#*c$8Wc8IHkMv z8Vt8Q@)8MzKO|LVCymQ7+GL3YH3mZy%8OYZV?VAat>yOlAx)N-ywE6dCs(Vy=9rBfQkJ;|xsh~A@^B`a$WDNxq*&%N#Gtfk zK+m|b!lT`_Mt=TRq21i9UEj!r++fXqBh95WyvKSeNm#X_(r5;YQI&y^IK2f*%wgHZ1y=PpNmyML zSaUu%hvgI(?5_SOY1jok=ZIu#9eOLx%7}j1$7(?=0awmXG}x=fh(=r*VA0)l>^OD7sxHM z1KjVeJCZa#d!Ke5#u<$`?pU|(K+=^te788r*{5CCz<-Nyk?u`J0|iaiQqWLr#H^jy z^^jFPlV;&FkDw>nme*hnIDy53%+gE>zt~7usHHr!e+R4gC|pYZCsqDng99EsQ4P#k z=GPn4Y(m#hg$*(wTT}p|vKnURPY|k?CESy09WGaz4Nio)z-o9kjXD;~xGk;!T&vqiAZ3_EWnS}w98Xhn4nQ+_ zXXgxbX>|t4JWa*C^A}k{+6tBj6>x!t@>2sNsa&U~I9qP@8wcgZ%s&;epw#$EQB)}@ zw1I4u4J>EncZ00_`s6SmL-b%>gI0ev#riorNtVmP1V-FS}>Mtm{-CzyiGu5<2?alxqs5_kPM*`CmwinnTYpHY$n zw?g>y6d?`m>r^ik`F9BuihL4;F(sLNlbCGRN^_MO=qq}UfFglaxpj4BtoJ2c=>(KM zAX_Nb(FgpEsOX7ZDM<0Ti=;lTa6s>)-txCX#|paMd>@Z?O2#YNsmrum^QgjD|Igl2 zaK<(WaV`eB`GiY31oZJPu7DSN>%R?5;VB6OU5MLSu5y22xyLHT(mE!AvADmr8A}iK z?8;b}>-v-`oEPUXdG%4Hz=a4OUn-R~;+WrO&KbW?JEeJ_c0tR&Vp!M;Aa+?jRxm5E zg2->ZJCO$daBZ9hvVWUM1J{W#D^#eoATl+$R8tSC8T2xa1&Mj>qWhN;BmL#G%fM)Zz;cdwdVOcZO?a>~RxhJSdN7B_b1WsUmuXGNr z(VJ`v8CXiGzigb5PDKbEP20M;L`L{!^9;=n34YW~Rc>dqGZA|Nv5nRuNlrov=%oTm zRO*4vc0JdT>ADuM$6hGcgjl(2X)y>6tsdBkso2?%zMIbZM48V(Q-(}KyQNL-*1i7~ z!9|HbEb6`OgchM^$?!^iQHCuJ$?Sq+QRN?1W_cwKJZ69z<;&F~91%Lh`sM^y6isSX z4!-ThKKVNMR~Pw&`Dl?OLgA)kS!wpaO2o!+;j+HcKZQHqkuLni5dp6lC)^813i%D9 zZwhC=NGf5i9VxO^3h9nHw<$`D>ug#75Cy1Y{v(Cjl6I-_JxNcNr9(KgP8Ejfmvpw$ zX0K-msn+E$S44ndLAY>pQXr-m7O*t7#yhFPnKuj22Dgrh4mZCJ5!WfmAc-v%zb^y9 zA^i{Sg+Zw-A~vd7;IH=h|51ojl&m|~rpugCcfSfRe<5_RoA#hAR^ZGZh$tk=baH^1PlfZqoAnP^0`R@AKxvY0UV*d6U-Rkoc zNlUA3t!Ir&D|Iat{gu2dqM+NSD18<)qOA)ZB&<5SL$gJul$wkaT#8iyqtt_5UM&Cw z)2gMh7MZj@2B+WB8&VKCs*et;j-)ttn}tV1gB}%$;U_1%T1nHoZj80zkiz ziF;ti_AE+tA*G*hh*fJWI1{~sKuzE zyiDu%g&&SR2Ihs?$fbV!<}|p>ui*8AL{iPQx2|*Tqn)|7ORe0er>eL+YqVSpY;vm> z>t;&#W?(gK+@dzDdmDJ*m(~N1q2D!DIU{{}8o{D&6KZFFF9WJx?hilhQq@mxV7DMm zH>aajVvTs(-9oiEpAP7hy^q>&nkU zvE<5=^+`=Aqu%)91e8%jYjyYg(e7}vkzv^~woXACqF_31ezaSxvSkT> z`6eM5Z@2C{1oux`lSFrHmSudG?ayQ8KQ#lSXty?8NayxR+AQ z7*}Ta%&X7{Us>icugWs697Jc2_pp^}4Ab`yyDcM-PF`!MubV6rr-o*wxdJ`fhE0j> zVsn11${J2t@YSJM&AmBkm3|*v?=|=Fc16v-z&+V?lPkkmS^Fuyu)Fq0elvn28?CI+ z4lUL!v~h(LA9i({QiQyHizlKvmT*u_{ffdTE-P0)tOR&)Gk0N=8rxhKC$xb=?qrFe;d`=8QWe zpIZIB(4&uQ7>dnoL0Yjn@U4Ad{H$41Y6}lPjvN|`RcrN8sxqoxryq2)r^_mPG0D}G z@(I!MCj+QIv_Fg}INUn~!*?LANLrFB@^4aDzdM{J$n9R!>tDpWttUFZ|H5}S>-moF z2l-C6-sEd^PAz-WL=^ zP2MHKE0BpB^e}gehQ}<)YeBzd6*11tUIQsq`a%y?z2FL@gjzD9Nuic(qnAbmwLm&| zJ|%qAlOc_}+|1nnmtL;6_0hha2TyR@*&@%5yYui-c7TjKc zb$W1X4 zsYWtjx<4q5EPTjNgV~1x3&gZyr3@dNnCf0;h*zF$DHHp-k23~6&AL)C)jmaYMT3=GB6f=n2*GcYuy8Audm^#E`>S=~v-WzSdhtLm-XzQlU;S&W-H>1&(!n3uFOwOMj$|OA2@A=Kaj@ocS727nWv;*sVT{_B&i0b5FPY5W(s^11 zuI@^75LI-oWDBRru?HV^PT`clsJG#=+qB1iWnN7AHN1uW{w!W+*{|89#+)ITE({_O zYKY+j33f$$Lsj(;^pvfCM$K+)oa}vmXM>EHsPJJs8Y!0)?~x+<5&DLD%%7qgocYP# zA7KhX6=j2be@yB8WK@*^!=D9ewK?{!dQ+QYR{#l|QNVq`eid-vwO_NDrH2$7(+4#T zvmq6&V+NIW)%?fT19q($owfELA641f%FWnp#q&86V3+yVhM(TZ+pomL*tj$xpLv#& z*DzyQA-IZ-N>dvXBGcuq=gV)jGsQMF2)V$=<0w1M{5+~G^kdR=_BameX7v#3+!0Ds zdDdGnV3&0%z_D)c8r`?=r?^F`KqLWk))4Ekk6~TkaBq}EMI?%DIa*&nc9g6- z%@Sr;cK4aJ*P`dQUY2}Hdl2l)(s_t=2Lbd*Pg|y0NnggN^iF=KYH|yx~`o+r= z{8-a|t~}Y_U_w3!p@pgkxdNOup=BSi69_=P-ckkRQGiE8o9~zkyX-g=5qkE3GX5GrU*|K;tt{6*hzS+ItXt% z+;2L>*Y3v|2ivfa63RqZbTIh86I}^&;P30`2I;hN`@5cRrE&iE_w*(kS5WKC(ve;E zsp9;Yo+{GMFBt?a+UsFscj(7%0WI{SJCISoK1f9)2St1GTNF*^cZiOph<`4{oT0Mk0pa|8UV(;NT1N4HGGtSj>+W}4Qu@)0@ zO3quax9wrbvEi`3Z4c8BGX*8QBaoyzkT3?1s!s^5rx1zt>A_T2d0vApFduKclkyn) z`QMLS=;tb?b(?-ht2aeI&)ToTxbCt^Nf=j1*Z>>+(9W^+!#2N7KNre!J)D2_T!()8 z+uvTk75&_a8L2}*XG%vNpMJuHqa;Ivbs5Q(!Bv;`l}Em$8J+fsg8%sbCV~vp&^rol zE)E#OrcYIKtS@86^STQ%_iMf#zVPfEx3%(s@bHy+EzyDme#8A_y0PJ^@WsFJ8xeo* z0mU#`YBs|bW8*SLgwuzV8sE@IG73vL2IUVwE9I6Jd@*O0FTBjnI|b;*ht?ju0ul!Q zC4)W>pw-A3xQ~`oBqz3r>mR*@lK>4;UXtG!;#mV&@yI~G*tqOyU#Nd0YgrKMu5}QZ zgH5iDy~K&y9&hEbbGz^p#$!f#Y)8lbRe9{z>|^#XM#E$GE98j`V^7^$UA?@A^EU;B z)o!=0`ox*Q|3rAl1U|Dpl@Bq_(CYrEGNj1-=@aYIaLQKoitd#6Un1Ix*@Dp4H0NE2 zOZ@LjIJ5Zd9H#N&9A_S9JE3DDf4y2J^3NfQb1_UtXF!*z?vWL!*zZJkArykEm3BgV zNy zd@@zq#}kftqbu(K)nNZ;fY z^9!lq&cWF(L@uv9 zgCt{}B$s;Iwfbl1Rc%}gNY5^he7-W(Rfr~_dRi(QqYcp+EJAl!cdbctad;4QKwt=l zsew%Rmo8ep9sHD9)_=$qy|OdFmc*7EOoLmGOWA#hS>eLYSgV@k67iu#^y!SSv)w~B zV0`JnaWzVNkdqGpx5`?1Sr3=pW@)eD|H_^*1EYCFCgWgjZ2XvO2hZtWdr-f2%-HI| zwFj@|J8&7#vDc0X{5q1$kgYv<)!4y#fn0g!4Gx?kkvvb0q^n3DIRojn2gi`bHj-3u zy{Q&0tM{piRI3x&ALeIdH5JLYWA!vMt=O2Fj`nV|v0ZH$?3E>Z(&YX4Dwyeow{N!g z?-FYd;e&AfX|)FhSZ%=)vfBV_zk5@?3(#6!Uj>c;&Q>Px(Lp|Qc20)%!X8TDZHV>d z^knr`WPQXNtkDwqgjvR{72gQ6+#zEr&L~$AJiR0HvmKeAa56tYW|Gv9lQNG6Zt9 zzR9o(b_-o1-cOyzNpy2ok#(!Qs2w3W4&d9H>gr<8!2FV}8>!kdbambS5BqWU*EX5m z3xyyU@6B`0;QThgiT4O6m zuAr@mFpAI|Hd_~XRY9!I-AqRf-Sp574r8;i!2LXQGCR!(z^%R{_L=obss8Wiu>%SE>658QF{Wx!;blJoGkSIzD~&*2qVqK6M~|7>U4!*yIg} zFD(JyYI(mg{n80QJDqn0EuwgaK54J9HMX+x>jB~PlOdysu~L1xTVoCDERGuj`=nOg zy%#vF@ak@^$lX+Cw{J3Um?ropiTE<1NhaOd;F~lOq`l*btu{;2Jq4?0e~4W?=Rvgvd!-%Y(u_^9 zHDWZhH@0%!k8&3s*Jb-AjY|iDb-tu=8R2`}60OF?K5b6-3hi#Tqo%DJP@x@>m!0kk zZEE9~3T@6B4r=mfaqsa@+Uav|gxYEFX1{x%CtT!K*RnT&iFU*LU;m_LZ{D}qSG0D> zkMuWk6!15c8t+?ot)h!;zvzB9t9@@Pdi3ycDJ7hqDq|E(_}r^Kv9~>DQF^${4cgt{ zd)<$of)8fDB#q?W^aZ_Wq{kee#_n`eMi8o5*rBN-EUyy=rl()^R|O6G{64}@IAq^W~q{Kmcn`387we79O|01|r9lgbsn_}u?HhF+wvv;{I*_$O7Tsr?}K zdMAxlbfPDX&G3c3I$~a8PDoC~_7qmo=6-Hocy4f#D}em~)LYBpHirns8f_upTaD%J5J6wa>i?#v@=a zM9FF6ce(XsgTgOH2f=2cX7bTqLGf6Ii_Pw8FJUD84L(}*Nn7-!2^pT+b|o5! zzg9&d9(Ri;*63MxAgsH^un)RfcfiiTRQ3*Bc7d3}vU_8!wOP+PNx^XJLPrea)So8m zM(ugV^_*sRvqGkSQgAhRpuJz6FiKhm61_YXjx2#%UK;Wte*E<8eksetel zyg&OjY3KwR$q8A2@+aLYZB(+*nFcf>Z4y#B5T5B4LTQrGss`ixKKHxQynhM-npGLc zHZk)5vxzVfnwX^~i>~tp%RVlX_}cpPO`*58W9iKvtgG$m<7jGQu)cl_u_cVZ4tY}9 z^I`8|PXzrL)Hc-#{dI8vV@T~XpBpU{B&mk?av?eO*CEfNACkRl#Zp_X(`kcHWK#KZ zA2W*2jX3~=q_o-eL4xnjURU2@23Knf{tA9&=i9upD+#Gyl?zQ6^CM-BrKrr%=9DaH zx3m|M^O&cw4~=t=Wy7;5V58{lEECUTvNkbRH69!wds64KN;(%hTcTyS#9T~N`#y7Q zQQkIzk5gZf*=|=fJ$OnhnFs)yew zqofrx!35`f|AKm^R5q|=F{XC=mhqwt9N$zS-`Zv!_&^y#HoZwUIoNRW$^-RFVeVb* zEdOb+@P-^=8UlJxZEEB$#&3Ub^Q6Aru<$QMN^f}Iovg5B=sakD-!0#w;Gb=O-^Mqk zuugqPj-;C@Lpuu#zAVef+SP)}1Y?ioe7d41FBb$v)0ZRB(JRYY5MX?|oRY7lNGqIY zBVweD2niEJjKxnI=qVIcu?pI54YPyt2=Y2XgY2NQ2^#7I^|ymgMVo(G8~{~wx(!Dh z0NLX|i9A+%R{$hT0Qi6ln;ZaI?~tJF)=E1_05F}P=j|W?;2tOFFLu!X2|xpMl_qqR z4ML!+Vh}`7153+zP@Wwmo(bbYr>mgCAeC7!EyN_Hz5#dl%3i*12KWY$r+y2#;V}q3 zVw+G3IG(pM&Sk;EIbqznh@!g9I!A6ffzsxUmrTYg3K=NWYAAozcsom%FH^bV_v8JF z`y|+DfTazv%+FA4G%5eCK<+Zbc2eapnC+D}$tZu-q{-$fY4p53dcivFLD9O4AoZ$B zK^lMf-gbY%LG1yd?9dK3LZB^w<*m1-%Y`fjo3;9frG#*>*;ZRhXG#l-BSfQT3f?O- zPU*Xby5`cbp$V;G@%4BH)fA%o_iA-tlB@6<-|*q);|f{zLaUvH3Z+V+yDU|xTdSAj zjI~wGDtG-#NZ4dG6uw6;Cr5u$&gx2bqThhIKvwFsY3C@IQp9Er^H{eat80lcDzHziw7^fykLBy}aEUa(4=`<--wX#;-T0yb#(7f?WKO~F#3 zWUcN3au`dCd1oio!LG4|g@{eYt9Nw4u^CoSnGcVb49yU42g*As+96}n^7-7`{g*0= z(0+%7lMpY$8NDe7kJnqT-~q*7fX;L+Fm)kZAv)^;9Hj{HqKP1HoPcGTF%%p=99THr zR9JD-q(ER|;Vm}>ZZcJK0y7IM?hIt(NN$icwEhdQU8@*}1Z#D2BX8{+!Zjq1RyP7f zXc@{Sx|U(PRL%{z5{><$u$#zJWC&F)hNe`Bb}d?cSb`5ERsN>QyO@e%(dy1pouq*~ zjwx7tt5UF3AHAvrAJ0gGFIC+cJil}Qfp~?F$}bc?+(C`Hz=)v4@IDpo?o@4q6smgN zt<~*d4=16y^Td?6;hVFRir5FqQZq2Od;et z#!X_8A9cZCoMo&RxD@R`Xz~es(!=Gdzu=V$Bty_6&!t9;m15Ww$Qe zD=5^^agf>;JHeHRk+Pl@Pl?fMDDOF`{~5}25Ri}tM>DSIFOLm>1_#K|Q;rS4>l8tq zHg6>8R5AuD0)&xe&v%2=XHv1;EHhs@)Ah_N&PlD1t=BYHhSL(Lw72$vZ0WwbS`0rq zsW#oK(j;fpR4mV^(U!Ga*SWj9By;zgH*`vb%_y^JpN3hZp;&@5H9{WWw$u9`F3r5F=h+F_OTwx-TBr2H z$&q`h(>TA3zdV(_qd6?uU$EP+U9p>GM!+j{Ib;jT z#8M3A;=%Hpxgo~Txq2rJF&YI*nCq2kL5zx~XQ&Nl68MchmRkSX#zM zSg($QA7_2bewjHTOK)2RY&8LBr||E$$RLmJ5k*$E%AP!fw>ks=EKhw55Wsi0ZRBs| z037=)CE4EL0YBTaAXsZ)6n4puUVRq4G zH90{SN6$}i~A#hH~V zb&{PrT~ePyYAIoYQ_rs%pg=oB!k#0H_o2SWt9?6 z3{SSh&tPFRn1vid>+2#)i@hgIm9?Jdb>Q}siv`9}z?n8n5u@1^@7gS7<@6Df=1S7Is=btQ#w1F4n-sh^N{O%9?=8H)NzYYx z0vPGf)r};3Pm=vXlEEy3#d@eZORMZb#CJC__sy;dRS$LruH`Yv6-=#YD#5yh>fFK8 z!dJ&IO`CQCf>5wmsCu-EgV!Zxf;lcVsR$j&sJuX1)`B^>$PD_V^!d7bU2LcIOkd%v z_g=ajaAHcLeh>(vC&T#50;&9t37$vozauaK*s1@+i1{(N0Mqu{o#Cs1EBi?BPP4K| zTQ;s(TQ+hy4(v*Fen$HE88?ET30Lw{>F1}ql%HF#B4{L4l&C63c}6QGxoBc~QVSel zQ1l5)!|N4bJ`@oN!Rq}B^>u$_IA3HPOIBk|&(j)Vx>5(!h;k zPgG*_L!Vg*KNL~I^ATV>{LpvlNcbUfaem0a++u0lgk_b;VT2AA$X<8nN95lir_27_ z(fU5NjW;RC51S)_9A#obb1=2koIE~y3o}kBMxHB`{oaYne$NxCD(e>L6&<2%_~ava zq1T)|n((RJf_?o3JE~3s)sH}i$WM2_Lkku~Pat?sYN>_9pP}yDqI6V}Q(u1ZMfRU8twL%kTzim+ zqUo0_RdM)Y*^Yp1Vg4Cxj)={+-89?Sx3lz*iD3&1-{U)!HRMG!#V^ zL3|SejHtp=Q3C-e8AG7f$isf1z`Z6r1%Ob`7ueaIXSabO6LNF09i_VLjhv}JN4 z$EJ;5iZ(*CAdU3suZ1+^J$ON}dHd+lESoSaMHn>`6k&{Qi4%r3C)ICIUOEB+gz+{w zn0X7w7XzhKkRyt|&QAJ4k$`kLNQg+HtMuh#$Jl?qg15Dh=vMp&7cg1_0zo?O9EN=4 zH3GYK7L!Jb>Mnbvba;r zF}L_ahtsCtjc1m~MEEGilBMo%I7g|9`J`196MQv3DC1Q{`anUd2r+3;Ma+>R%J~v~ z-4Bv6TsTvWqpna!PHm3Gu*;mnF_t4E!hJ3jdCBkon#<$$+)aAHd)fo@X)!4V>ai9< z*#mPGS|WaTg!BWkHJ(084|D4gFVm#fe=w?kzQpZzijERLRO2wAL@lH&{q0h)5JiX3$p?X@r(2jPm5%Gj}a;UA38#>)RB0Q9XIZf?;{A0ImVIQnmyF2BR|8R!d ztIcSUugo3t#Y_LMcz5B~_A_NKPqrBQ48TXr5EncAcdsSS zwhHZ*t%U4a$Io^`?pdGA+cr+YPuxhFy%pMR`>`k3-xtGzANFb2s}IgrPy3Reo7VHP zSE4>3N_|Mwr~KT$$e+C8Iy^5bt zR`U~(x4YlrXX|_N`Hsr;wkqbHjmhBh?12h`iC;*C8~M43^Z2)YAw?bJCwhpVZSCaU zE)_r&|Yg0d$moIr)FR4G5)C3Q4L5o9N z2P?EYeguSFE##fJ4yySyjmG`R*LG@&LOv542;D*GE&>j$BxZ=K3ED}%v4eJg4|9Na z0yoFkbI?x!`e_S&RUK*@!-1vGG~+;HBsn}Pqo^i^MejB)Z_%#Uz;ENH$)UArM_P;x z8$Kg0o3jJPmbNWLb^A5_onwgT8GF);EJkzill#l|{#0D#!0;qxwVAjxC3=k&3n5w- z?cEl$JsZBWVMRLMn28Xy>j^m{8o;8C18B*5!5TTZ_LY@&k_dX*ykX45KF+C)hp4qW zS?H-XGt-p1DT$98a&qkZwe@haO!h84cQdgrhK3Z$NeHEO*WKG3eY=m)iG&U$g>E~t z=aJ2q#AFaN#Cgx+y+~4Z>Wn+4E)G73>i_=L!reu5K|GYx7T3b!L)WVrv3Mm}&0b6A z3p&&xz(8)~d6^r!h#80uX0L^viL`oC$~ppLF?5FCy_uwLR+-6_zHstjJ=OrO zr9<@C8YVl;dRKMx73>Mt`Y^-8#W}Vl_?jzU#04-5v1ge_fjBqEhmd{eQK?)Atu7dW z1>=rHbx!nhsOR}>74@VxpaE=Wm*8UNTc`8DirtlJmm%Ik36;^QX#!HX?1)~lSJz56 ziGkz-@ptLqU-11Rp8&6}5d-Dnp*`q(=`y`-J0k32Il$9)6e{Py zN*R*FOgi=&pc9Q1pX0%jXwE758ZQT3epSKEo-P(&%VhzkUC~O9jB!;AGx}ZSi;0+> z>Mx)L+!CSHT}7!Lv_nPsFh9?KDckX(d}+F=svVAFewQ!S;HiB_Qbg0^{M6I>R0uQr9JbP<-=Y??SIYez{7S0}qUN^xX0QQoJ}%t=4;7jh&Uy#x1+*U1 zvtS|8Symr8_7g7LisOaIVcLLZ6ta-0V9$7k(ceJIitywHB4L_6xK+Z+j>kKv)%3Rg zQ9PKj?AWj8VxFohg@v`36Zwt z)+e;>5mHA65TVSQI{8P}^>pnw?Vv4Teyhx4(cdvqRWp^zMD?j8!j0H?SKKz@jckgJ z&wOc*u*t10^D|kgsfPFB9GS%i3Si-6*~yYIDZ@KHZ4HqqH>Od_d52iZk7pq25^AXJ zocMet?UnZ|3YaR<2{Q#Mi_C;ct4*!9nuY(1^&30pGHG#|vGBdoitYUFHIQ<=Nhy^wo^Js?%C(t+KnEQ#T?s66-DWg#@IHJw{fJ)$@ zb#qDNut}v&_2zLRORd+7jZL9159!M6duSe}Z;SNsFj$~>Nrf@=T28qa=XGOuA%hJX zAqfsrPVa{eaSa2HnW21%9$V=PtxS$CbL`EWCOS93k#ZsP20XKT37&E>&~EX$X=dp{ z?o9C8cO~HzFSi+bR}>R_-(SG3?WLS8D(UVIk2?{Rb7T-Jq4cHFQeWebNi4S4m9kX) zwVyrl9?gmfdh)Io{n73i%*u+N)##z{(33)6rGjqJU_vy*4=^jD2xA&c6HLlY54IB; zZ9$K2q!7cSt%?tM7x}|Oe+|=WhXq70LAg;UWq?Js3n+_v?fEqrRFvj^=QM;ixTMtF zT~whhST5W;6if5GAqyg?UPWsDT?hcbpaWnGB2+{NchPtFVoW|uh41)6Yr4U2q<$aM zp{Y`9b+f2~Is7y|cQ+zIzamr;)GrxihUo*g7gdxP{RT0iV9Z}y@V~&nJo_8n!Ba5l zqSvrf(_X=tK8C@3=?l?hPs2B;*%S%W+3yF{M7YoO~csj4Ylh;@J4RCF^VqU)tV|Sy)TJtW}22_>(D zqWw*2ft%dT@sH%dBzH4`Xr~*$>*g_b7rPsbM#TC3O>WKG?A6}d=D|SUnQu}(YQo`D zCL!&?Ot9cl6Ox)=I>(E#C!vbq7fFqFS@0HQ3{=NCjz$yRxPsr_Le&2^B8Oid0F^$f^k=8`f>y@Sdx+IF|w??$P>Ac zX-$){%z9BHem10D&bu2 zZP9tAV)h`&5t^Cq)L=_Y*fHhpai+XIYRUs^?ro7_;7jHsb#zBIA5hG@1E=$w6hzfN zY;eV^*=z`B2QC5lc~^=yJo*dtT7$J^jp4HP#+Cg;KPFE*jmRriq*7eU37>x~mCasB zH!6p;7}xSOC_MCkAkoF(Z>wL==4QC?7P56@nnosb*d6x1@gS6D-KL!NvO`aa=hMn;BrHbdeS1f?84?RHoidC;81&7a44!y_9F&WTskr*=Xqxd&it-a*3KbH()v-U`$?{!jGA9iYxu@SY}}#a?ey zMJSdu?Nr+IK?$_nWOqL|*sF-?UsZ&TBtzK+jWY(4CL1Utf0s(ah2Q!*aM0ncH!|{N z;}o^)oG-U&Om|A!O-?hwVyRqf+qRQQuMD^pM>;2L|f+Tqt_k~>6H`iGIwZK z>_mC_G+X~J`g^*RbiQP}fF;_~1d1%>y%@g>2x5&hB-$s@y*!~qsg?csoXn@wKb^3> z{1SZ^YRa!D6E1;E zd)2Yi--H^D_zIe)4Yp5@aa$Z$%(V~bsu%9q`03CwzW{nEdM~Jt^b=k>z}~N7*Dc2% zP8Vgli|w}(>3n}~Gq2;QVI3R@mkphrf2JC#^wW>YfivWh6s(}w?^TbMN9MoCz5>Hm zB?xXWEoiK~*2AIM3LFFlN2ZPvvM~OC#~gf;iOR z4_C6*EEyl2Lct>ko0Sr}CLStmVWcqK5qj?0Y2H$W&rcalt%~{KIHpzhoc2UzAU&iD z@hN}mMK8b_i1LUu#p%L=-MThxjnCasYNWD#+bwvuSu#3QE&D0Hf(EspGHAHuwo=K- zMq3)e)i_mX5MM%#?U&oGR=UVL4n9CZjxf5T(SU=FI2v%#!4c}ux(Oa+@#d~PT`$;I ziE?dyaMV$Fh}3}A<6z+q!NRRbxM&zw&bU!TG&s)I86{nD0dI-Q-gBT-a-(Qf1VvYHgk$$lqo|ixq3E;!{4|O>kCWT}TUZCB zmPfAM)g}};;v{8J{-lDfJn|Uj9GyP&O*X2`12f{P%;TOvKa(VzoFtq-4_?dJb6XuJ zXS^fRH@LeTK!-zf0R7ts(p;VA#L+_S=%(`IHd$AYfg(c*MaGYd|IrmcE`AjMm;E&H z7b4y!JmNS^wydoolalaieb^1hWx=IR$l^P-TNSR<*l|3&3;pQkMJ#x%dX5d));rf{ zlPG8v8&Ugmuj`jO>$Z34YuhKORrzo9wuTo49(B(l9D5$?W&)!#iVJSf&>mP!STQ2L ziF3yS(%jFtxU=akyXg4&J7V>*E1ar3z97%)SpUpS**9ba0`IExu zS62S33ZHOB2cJ<|Iz3HHrcRaTJRL4LfMFIb5(xgHT05DCQ*two1<~e-sWl6ffRV>ua znQ6K?9$%1`hzm#69?=9rbDu}&+B2ZK%P8Uem0EI_N8A|0bK-DkIl4b$*3-+5?hj4+A~iHCqgyc9uWZ)j0<{h=VTtl2A{`AsbG}yB66jZRU=Y(^ zIDc|6XB_ULSS&h(4KnL>E5{T-W~+qy6@M20KBL8lr;yR3Sc!_KGPD0w@ly=UXCu*p z&QRd0%eg43lU_UEQ}+QWdLKb^02J4ETHR&p{RgHMwYhzb`owi@|Nn}gTVOw5T6-+~ z`3inaQ^^o-!{=|w*tB}S=rEKPRTzpOtJL^asR1dO{mY$VJN)}N`1oR}!p9BqvMif9 zz4?Mu)|pa|x>q?*L&dGB~u^fr_#q#oydk+G!cq#4G8IOXN60Q}}hSg>eox@3s$5bm2T z*vH-}i{~*05lK{(;D1nVmoWR!5x>q*&9nrSD)Y}*R?2^m9-kxQ>~Oe)f!<2rhDnpt zez|4}hr&aG->8Oj_3Y6NkCS_(^7&My98ip2{wAM!nUza4hx*d2Z2JY)77H|W^v{G0t2+@OhL#3*MgQH!DX-MWKA6rizHniF zQBPNSSLnK2p4{RxvW&nBM_1ebVgVrRI#O@`4m!zIa8E(6U?_Y8A}w z=33)joTP%lmux>i{rwTNAcM4r8fvQkcCPkNV|JtV$`-jBidtW|)2{VWuN6E2ULRUr zrf_1t)`l_karz^{AKDaU!kcoZQv@z6l)Ut2GvHXUe>uZH7v&@K5$?xym~n-tFX1wd238k@7_iDfwr2#;4iwYgPOlC%(EfzNa1k zPl@-|$||@dtI&_d5_gxVhW;RiX7~=3%`xoQO8oY7_ysgGF?oF&0ouTn7bc%TaPQ%L z$de;!)I_Gvd3Zu|`cdw!gnEpt22$6^tl9&2pD2~xNnoUkpEYX3p-ahPlqP_kh941S z_SRB}j?)D}P)vqa|2f%w=7g#K@Z^OK{fI&Tmv}!}<6U@CoXX%l)-`*Dq`GSl4yH_$ zu48^b-}{I8rGK11=ArrJ4|7@apS-B%m1AnTS>+N`^>r;;{jcOn__^}LWPbopF>$Di zGK?a<`BFaYZh49?nVpUU&3GFco4}!YfoAm{o51V8Bu`D%AI{b4KjICKX%8*ooYX0h z&XQ!U{&acb&E*`Py7uOnhnEy-^}pl;>&Hj)8ftz_)9(MZ`W*Au3bteGhw>2-gWbFq zaGveb9u`a`B0QKW*gviIKzCB1N5D6%>Q|$rj6NQnEPWfA)5jIikV;M+YRd%PS&WSE zQlV<$)L-(6ExDi8R%ZwLTKCURbtwjb#PBN=HWYkf^fYT1!Rjk;qKd6i!@?yJdyHP1 zSe=T)VFvW}+u{QnKiM(Rpa%7n&Ix6em{`B9NHc)cb{rgkUv+GcPeh+jkIydo>E6DY z%A~h_@&tVzdD7bj@}#$=N2Ryx4X>;G<8F`N%Mf7S&)E*d|Nf*}RohhcP@u7+}uFAH%rm+ntedrY3+5>M& zMyKA$i|S)|mZXL{>OKV*^j|;qoyJy){VjTq4r-}eZwIOY*-14ItR+|vr#yt=m6^Pd z9ciJTz^N$s{!#&x&R{EiK@H{bd}XdYW#4KL08qwaA+@@*_#pOAq9~QrvM7t3NFeCm z%>PdQ*YdxrNPFcyIew1{?70Ftt*gl3O{{XzO?a;1B>re?G^;%rd3NL>CLC)o&bXMO zifw;;YNIgGpPpGVQ4h@&hwet%)bfZ$NlInwr0?{P65nr?Gw%1@8lS6L{buz<>!h=O zj2ZRJGcm}0wrdVci2G{*i341fzfW>8*EFz~sJ45|IrR5Z*)L*&yh0Lj?EVTEfU&B+ zVNMT!_}>y2ok&4`y7fv17NdjX`t?`BA0qegqlX_(B8~eUcBQ0D)~pz4-*_@9W2+P7 zT?B!tss`*A@2r>kgt~sWh>%O`N029Qz4UmW7zSj93Wnm6w9tJ-nKoXG zk~=u|Cg8e)W$K2&p`6mYmIR@LJ+(RwkU|HGw7DgO?5`idFD&afJfd&L8snuNTb5R* zc5V_IqlKOYu2-Q+dZYRRFekDqg3`p$O!<0)ucjh3@q}jPxB}-mXvANLh!M)b!*cyy z7S!s!sYp(}xI#0tTwDcjqg*#sQ&g6HToW?+{u5l*4JwZvAvq+%FA>9t5aG>ad^??| zz>5?B%B#Q$mLC?>gOa+l35#6B&ucv?<2Ws@KarG?-lR}867YKKKM$N^D-IO-1uvrK zv#r8P5txGKP%{kj^80WfcpB#d?l@m{NXqws2nhO zeddi!jB20LAt~XyYiEkQAOw4o3RM%*5$hsF&T4`b^I*oUYTf+$Zls(a7UG@%a5BF| z^OvTm#~X4+j5#xSN?k+nq`H>iiFNCPJ>izYlp-9X3)f9#18ZOd?>lVZseGmtZnjc9 zKqiAY8z_C&W&^Zev^sNwNX`ls7vBpi&R30_lXDbC>Km$i#|JNJoHna%23Xv7ZyMs07AYh>OVFA(7%#;s3{Mw^DR-DHV(0w*Tyw}96*KnI)4CDTb9JjJ^3T;LL zE1ANaGE@#GfFi#ukR6)U2T4pcP@bj-8hFsPvCymwT*1>KQmPXw!hwX^j&PfXUBI`H z*+dnnE~_LEawHX_l!In5HQcPpPjI!wFndhSVoaVVH2Q(92pSbdgLd`FUItC(fepW%5+hti8sx7io$57uI~Rm2BjY zc~b-PrUc6)&tQ1-mNX9i?W3~b>9RlI#MBaF>wnFW6GQi2;0k2stqJ3K@D<%c z_abc-uXJ=a$JW=+73kYkG*j9)uWa@_y{dR#(VX(g`JGi~Q-NAvC9YSX)rN^3GZ$wR z!L?j3CAX%wGljUv*&LN2FDx0(V*S zkhq2R+`1$VM($;V! zVm%>_5oLJj`Fd^BY?6~pR!%FVZ>83w8#?^~>c)z~MG_PTO{AYED71}}k<5~Wf4z*Ulbzg`Sd=@quWRlA%>9_pjWq#4loRXNie?0SMIu}EpmYUhU7BU|{#=I*wD;x&< z7C&ns_hhbSIbNyP9|xo+j~%nr1%C&A9rzA1I=aF){U67N z@3ni5McKLWDn4b&@pJIau`_o;+1H;rjeDBR2`HO#3`jekIX*}Oj|0*}@lr?rA0S1i zs`hjNXNnJsb-OjF9D*XwN9=1#ELRjv2sdAF`=dd*XI3TV5)WK3UnLDr)9PWU# z$0n*bpH6c{N=U&FS#f>BjQt#aZ;!g8uV{>HeTX&6E8gF0uay3wac7$L)|MWtc>km6 zeW-B1 zrBmQ2+ACEL8*d12(cW5bjH&7Ip0V^66<+$J5f;`%oqwbLV(qO1y#C!B^AwemxW`&P zpVnRpKGXOm-}`&K=ibDc>K{f}R@b~eYlH*#+jB55>%&xK$oEG#>Pc#vhv=n4Q%Ce z9Vd5sj~Q=1ELfM~ZJc*0KAyv_=7z+K6CHOtWSpovt4l^Z!!7arQoB^=MHKT65vf2d z!G~Jc|F#?ZypTM|6+){%L!_Y|Pxf??`UY>2T#9Y|X^LFm`OB137WZ`FhmHcsuL>x( zPKy^{=X{?eDyOb;-r(f?=!v6q`mG(eIaS*^ACBiNQ#sFca{ld@oTII0y5_t-o|Efa zf!4a!hIYy^Id8D;=$iA4c+QC`=YO1>zdR=AE!N{;yry8LHyi zJ&kl3-XhiY*EL74!(E1VsOT`7yv1O#$*ZH1yIelec=B5o{~WD8$HzZ!P@faypSP&b zDe}pde6JrL?@5m=tFNJF7zcZ`^MnBFWx#6V*7MoQm63S3mBHtjxoCYmP#K{=(VjX4R6=2mo&tZn()S8 z0eKsu7j?~D8jt6?Z&hl>m@-wiZe!>FVeMSNqbibyJ-G}d3Y-KPMFq(!C@3hXqeO`? zlEH~4fFcMg$a-N>cNJwuQ3MhvfgFwltctQ;Syy*)bywC4BDjzMGJq_Gi-@8Uym7`s zMM3Un{NS#;q&kW83o%X)lKS8THrdB0;_TIQ zM4@GwBUD%6mwtGq1OJAMh|lCVY+Dpcl*bY`i4vVMgXqowd8YiAVVv@+DQELt;*_L2V> zaRNhABTlG<)u1DX8dfD!+k#XS}G5y?+2h@HgA?T&eXe&R=52V{xuI zQ%zhZV3^6orAXXDIlGH$?!w!PG9O@VD`nrL_g{*j@UPb<%|^~f$jpFANtw(Kcnec@ zgeEmCVueYjgPZ8R;fXTmnchEG>t8>;f2h{q5S}Qj^742|c;WpAGVzCM;6 zX{Szsc3Y2!i?J&+|Q#IvWjo$jjjZ>Sx*ae7v* zpKBN6Sv4HWlwjXGQW5*JpOkU_&mmH8G0tsH2C{7E?Eie`nA=D2D`P&@)n~3%PvWt6 zj+yViRbhht{)Xw-=k|W?IZ82V{*FHOO`j@9i+$5ax_jf6?***fd98xQoXW1?g`&y> zSxZQDoxHbS-a1w`_Oc#Z`lGKl)KUQQNIrQ(9wYq*R_{yK`)Y^gfvAPA_j7Z}6zpbh z>6~ROpk9e3^lO*x`BRRoAzt|*%?^qBD@iPvD>lhG-#Uv*=>ln#;KkxK6%d*vARBx9cRqd$iHIJR0C^5XXX;h2P8AS?b#f*pNOZ5J{C2A4i zb60FG-=)0nsxDTgc&g~Cf0C6C?pwK4w5;a(7s5Ge{WmA2MJfYWT=p!Y>*6h)CQy`5 zA_}@Ha>LsVj+64=Lixj4P1O8>miJ#&zddK6D=RB2u#qd2{)J@6!Yw>{BShDUx|M=NZ)ZP$6{*`(rNqfadQeiC`VXW!prQTDR3Tm(c1_ zte$4b6%$66{ck|cEe&?6qOv|||4qem6D<|3q-mBDtr;f8VH3OT2b}0Mx6oHE`(~ok z+{%-vK}7kc``z@v*4KrNqAwztZR3(h`{6vY3l|+ebXyWH&^X#sI#TN3_XKC zq0Vya*r?x;m;X`y_gs=&FtiI-jIqw5`9JY@4JNMpt#NW`e?;qlso#Q*KR$`Kx$8Dm zubz-&bmda=D$3$*!wq(|G~D!xGfk}G1w+pg{9TX2-wpivKWQVCi_s(8!$7NshO^fw z+N7uf#IZGW-G&KySYnfda5?d! zY$;U2)z2y<*#)J9pVHx0*LaMY%QeFHPtyp+vAHpGmqIeoKcvW*@rXh)NW#@jO+YwM zJN^!ccEJVE`J4u5 z=$PaTQdB)e0pzsrcal*fr!T;8or57u_+Ndg0?5iMY-iNmr~%$~Xvh`Wt3E>k!Jb!ZS5_eS+@)x_!@pPB=N!LZxG;L3$3)ms&SE4Qev zQL{w@WGfng+^kR$I8kLG@M1D4kqop^!a&llB+T*2q@KyZk|Z8i5+;;PYDfmAC6oFl z13gX^W`g;>BuwjM;9xRvPZB1QEMh}4=8I&^$;p^Xh1s$1&HbDK>tZgi`jSfTQr@Zx zxO*EZxfdw)a^wY-jIaG*D)+=A9b~)D#oZfY!C|BSA@eeym`{vFQTglAA5nx3x6sn! z!Or{?oD{kwnw`+;{3zgrKF1OJMxx1(kjy$!AQubT*lPZmJjc^M{EZP_d00h;o3f2* z^PPkO5)$jeO?l&o*4yozC(~Qr9|+vSq{KV?&f~FP+ASgY2Nmof!G~4wLJ2-e(CQo-l{AOXii_hd) z*IuRODQu!9gObpSJbtq$c}mT;&MWtvEtFl|x%^wezZLxZj(_X<_bvZE#1W!vy~mlUwN(}DPK(`8Z%m62Mw1d-&ecJl7W{^ir-p~jMSV%5P$DWpyKK&Mc? z;_Zikgqu2rPIHn@bkM+l^rixNU4it~{*iTQM$Jrmq6Rf;WH3<0DDW`gv2hY5U0r1G z9%7(?er#0Vroz&fIh~?`3Qj^M7Rp#6z@-3~yQ@&m308?W_^N)A{$HBEQJP-z0`k|9;E} z%lCmJzRv|u61Il$A2Ys_@tMC9kiyLGBf~F|p1D8fj4wWQUigZ#*33Vj+si^o$Nq%n zD0PSC=VwccF9_bkDfymq`1q%#z2T@mr-~yK=%E`qALXj>$rwsJSWk=J4$^4Vf*7}_a@?; zWi6Q}U+?p!PFQA7|M$76mDNXOUD3Y#9Hq4rTknyuk8*THC)M5@;E&Yr|Q$ zvU;x4*Y+>8{EcS+b}M;ner5m8d9a{l9!^txtxm5unai5$*V}uSWe0z*y{hZK^2}w; z`PsC3{kQY7&4$q4+N(NS{;%*>yt02c&~*`Xmx1n7(ESR&ZvP!$7t3#({X4Aee>V8e z{9oWZ`@iEm)AH{$`xmY3e-8N0`d{EX=fC4SE4jGo%$}0RSTfx$>Xp27{gdmRm_wY; zr!`9+9YFKn_VivB9=mh#(7dWUFAF@>jg$$bsAb6~N#%R~Cp=6U@lN!}JqeZ2#Bj*o z{&fK2IxpBwUPEv0??IkSx5|)q&O!nb`hlC4J>z&Gbe}GnEOBbdl4MCMq2fHsk-I)} zs{J=S64efRIBnaGaYIfdaiqV3Bd*N%Y(KvUm?EN>aI^FGtOrv)9IhO)t`HRFAi*#h z-@xiFI;DN{v8u^=swO%*cD||$hk|006>cYbD_)Q4`6KAg%8dG1L>mxxN0*X^pW;ijDU^u0=x*0G&q zmp;u&_IROm&8wkA_1plbxaCe(#&xLX>)DDv;lV_CbDLI%pJz?Ks$d~~)3veDSKMN< zT>t#~g!F|MHBCN`vebQ~;(fsjSQAXs zL;+K_C^nBcvYaUUv6<@y=obp}vtnSi?AFk0D?T)zSsu9MU;s9j$L5 zwmwk*MYip~I@`5xDms8a`iaj79E*i-K|DfQ*tZ^3R3-N55stNAw9RDID17tGD| z-?zx$T>ouO{^owQ7tS=79VxBT6^ux?3JZ6bMPuwAFj)DZpDXQ zJ!(He*2k|MQfe9gn$?r<$HO_h)(bZC?-Tz0=x2uEdzZ0_0S+%D@phTx372fkitB?{ z8Vg!YEA6%(?}5{@O1ph-EVy=Bc4@bt@J2Z;r?lH4UJEo{+ncq{cx^-0PsVFovo@9% ze>r{`<4tRy`6)Mv;|m0J4k4E6=&a7gGPVB!VLl}aLf(BsUgeaWM6ln#viNm{x>Q6) za4>fRE^#}#%8Hi zwwd)QD_+Bm%7~BrGg~6H^^$+py^s6UT3<5f5&9`9zee>8X(}|xAi5Aor04KiY8A@G zf*JLM1J(n=+I9RB*6#8xO|#Xxk0ktDrjO#`_644@iEyLv6vvC@!qXpx$2nCibCJqT4DO2GdJ4P2c5mKF@N{*Hx=bCkMn9-s*$!d>(QC#-PHM} zYo(7E)v~md!4P>8Imr-t9_dJiWXKvmAyT&g;li$v!kI&o^e;sB#y-6`+jNvdN&Z&#|Acq;# zZ%XrGgZc5sZ-o_Kutc263aSIbkisTPsGsXg@h} zlZfZ5Vd~F(B!?;Cg@Ehz;bB9{ab6IJULkg(+~EuLN$P9o!8=Tu36jQ@^3nEiDI(f` zv_xa@rHH z`btErWR4}|I2Hw)<&d*Ofwl{p)kpNbde5_JXF%31oM$@R*Iks{PUecl{e$O6I0|qbHbMrVG40<( z1gr=1%B&Ea|H58F4S9ueG+Q)zt`L?<{X%JUrJrSylp6y=!t{OxzDw91sg_#}zG!Y| z2yn%+<>OaM{C&(wJSQT-1s*yv(B|EOQ>yO9QRq{j3k z($-5_#<2c)WCJlPt0NovIbv{sJ`kx9TmiFYj{HRaEwl(9mN9Eh^8vpmDLw>$m#lA@ zDUum#8}C$J{H@##V~0>GMRa&MGRoDpz4pufAM`$~Bk!!hJe(CjSAx7B7bHCXxr$V*SWS`PV59koAK!X9QPO)8e1T%BI-O2PAjuy$R662b1ONut+Ivr z-2(NooYLA3S@LnV{%DmIt0Y&MIchY%|CE4QT0m8wF={?xr6%?jf4CJt><%Cu)u*+M z)%sx1wB%Q}VA;%WwV3n2N8yXj0LLu3i=PJz#`13=z{jw!l(VkG;!NnGGV`OdTiSK@ zU3%h_Gb)PraKVc95htH$!Ta*m3}iR^qO#ucJzdtPeMYNZp|&Dz_c*6(EGHRn5>D3; z6Ab|u2kdx)llyqR68&rYw8Yb`NTCwJzX?K%Rg%eHir>(@F_#;6wW{QWS{#p$UWIG) zRf+@b$}`Z;62Di)KL!`!m$2RI0N|7GxBNSZlfpYU;Cu6vF~-;Y`;hQ&@pC@zlkf3! zPM}GB3?)G7urxtOme>ao$pDsLSb^rYwCY;7CouDTCLU?nH5Q8wsU zH{KbFW#1Vh&QR&~p-Ud@y~u?|!f5EVH$6R#ozPz{FO+<`T4lX}teLadSm!aw$hq$A z_i;L*<^$?$Oc#F`+{*rTkh+!Kg5VE2IG}*=ZYNwsc%KvQN%)Wx?ngM`ga;GO8LTgN zk0#vG36CRuybe#TgvETeaz1D2&(_Z8T>aU``JAsm4d=5?e-=2O4f?at`E1mmZJke9 z?5Cg;oKMm0e718w3-qVQ`7F|(Cpw=!_2)^>XFvVf-uaZhVo;sze2&(ir#PRoqE70m z&S$0m?BIOP(w`lj&$;^ZH0N`^{_Ny@*6Gh8=d(e7{>J%i)Sst2pS$>s-_2ox*0~{$ zxN?+RovXN>)0Kt(#$H=x4hdzBze3VDin&})UT&|D-@jrLh3*>bSd{gH|p?%p>3 zIKI2rl}JvXQ4!@B3XcNtLOeT-6c>6YEqKc_oLLc6@;qz^LaPr4eY*g8G?&|-$}gsa zxOsd!TP}^Wkh6^IG}bL*jOgWAXMT~o|Dyd3ViveR;~G@J0+YYNepaKzNXL6Ujjh(t zMv8|hUi%)NRTf^6T^2q(<^FbMOr;{FojKmoxT~z&d*$X%o)W_O$NoFS)_%{o((k&d zEHWue(ejC1-&fs;lS3kx=pxFh4p&mZz1WFA*e~2EDsXG)RJ%Y@@rjWoQ^Zt7mfb7{ zjQawIQn~okR;CM)+tg%lq&^&CU;LJwL2S0ZCEXi;VQ-MaiO%N#CG~^0$HO}(pvsj! ze%SWEDXbk?8g$zR$7{1u`xMC_ahIt$+^I%wd%hrHH-dUn zJ7dO)q~X_i0(huROHIBNBc zeHA3q#sPDsJ?afrgW$(BAJnsW`>D7uiwvD(_Xi4RMXep@xPfB-oZ#!U8!%fmOr_mP z!#o|ZCRGyONIXZuLW%`7GLp)~ucMRtg-*RrQbp8g-h{lss#cmb;%&*oSH32N`;6JR zS<+syDc*S8&sj~}2YWvPPUIvqw9bB7ftJ=zVpxv)H-QvBPm-fkG(cqNCVLJ5yi2{w zU!!j+@;tpUXp0&nOO1j10HN4{p>E+3K- zp0pOcW#2a(%NdlG_j8{bnw2H74v|{-Na2{+VAT3@F11 z8S|579k_Y_t=c&UqV>t*$`YcWsl*Nx}dD8X$xAL*RCS&hc0i0;df(; z{Q>7K4%QXgbESq$ktF-A?k%`39_j>IS#~(UsVtJ;BKb0v+?nL>f-eQ4%SA*a ze41QWKUuvbWIuJAG8Kczm6}~k&C$7N7Zgc{Gj(l6EqX*PR;>_LWU$TdNKeZcKhUs0 zAI^8#pS0!HJ~$wO8`dSZ#H~!nbtUdIiF-XACxgs~68BsxF4(^EQkSgUdh1CLj%Mp> zv31jNzK&XQE)>~|Mu{OcE{g(jXtjG$KO$v_dH4ny9`-GfZ+o@?p)7J(9xE3|XQMLw zPo%~#+EqV*QEr`9A^yBxq8Ze}f}EGC5LGOvtjeu?^)$&95@{7w$bC*ZFD0rT>;0|@ z>pZI^H}A!Teef<`DK~0j5aClJEN_2h8xL<*MA~@AuZT>{@=d=fQF*8-*mlgU%0mep zx>WXU3K=nFiC6Yz)%7oc2NJ6|sYigZZp@#V9$WE%X(4)R3a!!~+a_9m0x~5FtpDg0?O;(~wa{xJHGQ>Fw z2#t3oJr^Io(K?BX7b`g7l~e;r=1z%)tS9hdd3{+H>)H3`(re@`IG!f%I2FRgq22lV zwMl2p_L&$J^||=XKkPF(`g$7vri0XmV!2EkTu< z0So`|_|gLG7H65)##`$c9?_AQvhZ@Szjrt$qX0_{XZXTjO^N49sEqaP#D8Khk-%j0 z1m{4{!^a^W=Em@s`#97s%N)AUsA)@-7LhzcEBznIdFuXI zop<%A#CcY1A9&!Ea79Cj>jst@P90OfoSlfbzbuOkp}{9L`6ADBb`^2j;gD-TGl{S) zZdI7Sl$jf2dqLa`M?I{^DfAg-ksF-6kL$b#CGWi__^J*kIJjp_mCZumyHW#%YHRG3 z6t%CprNVFLjH#~^IvV3`G<{DJuW-u?IN|r2Vis8{4>sOAPS~-_VMil~jhdcRZZXM{ zu9zVa8qJx6V1_Y2%ar5M!jVSJ5qX-`ArOHGQQUp^XVAD&WHKi1mnskPc2OPJrQk-V zVEHy`#48^KnhoK`&r4L)<8|r~-0N8s+9~Q^0e~y^PyUpJ6WM~2vhpd*c(|HDiHi5n zj-QfDGakM>87b`G8dXwYBC}MRaPlOP7=OGbGxmVgp#H1ld{tk`iIgsK9L1Nl!dFG9 zS-kG9tBxh3sEBvlyR1@CZ}=O`280cfD>t|D5Mk^y2uyK_waN_@k=qg#=8m#%+l+@> z=hE!hccvf12L_tU!(Y}_9jYWx=mMX)$r`%w^r0WIXT-w7HJ*LPO-TM0k-gF#B~7GDz-hR_6rG%3p{pD{u!(gs6hN5uqeP?9>Axdp zVPE*eU6(2MogDA0Vy{lcRvnhf)p$nD#`qbEVgyl_PgHpS6l0qBpHjI_B^TQ#@(fX8 zO>C^-P*i7RC{gpiY5mC}O4E3F$3Ye)myM}k#zW7XaygnvXv)O$!64Ae33OK$TaEQlj$mV z7A>Msr|Qy4gSn3dmRW(=r9hM<(9OoQH)si+Z5>ze%w_f8wy0cF=c_I3+_zPwuhy5U zbu3@gLG@k)vNST6^JEbCMg6xJIbYVt+g856#aD}$){gQ{rLXqtEWwt?MtkL&Px)lu z%a;>drpp7%sQ-dxL>6c`QU;pB=2+M+^JT}UsAj#t1j@PY)Xt&2RppvSCqs+MFZx!l zp#nlhDopd$=g@?|#EQv6X2|#mZ7fB!tz5Iq$=oWHK~*7*E8AfTIP^#u+e2UO z5_N{7m^4bCsw!p;|(obBYV~Tiho?SzZKru zRo)*%E%CZagW9#it`4@uaKk~}Z!jYlZo^u{JokugUSRjwLp{U$6QNUMH_+6WlTQL* zpXfvz)gl08CXcioa_bkw%Z>gFq7QY>va7CFhOtq7vVvjy?dLkuZFS1|2(wvEmkm5m z%t{PJ(Y)o69&Lb(i_6>8dI3)e$?}&h?lF(4ewCm$j*aTMgk_!_2`ywI*}#FeRUBxm zvv2=dXs*kJ?wtEWWw(^p@GzI1XbdF$@>WR$h9IOg#Q!P$yDD;FXVze4M)6xsZ}2t> z;E@7ASCx0$kLfIr@~GF8wgM)Oa?($dDY?zc*g*J~%u z=3A^E9k#D|NmkKU>MdTm-lpE5$9G!cpYqg-_ou=)tK{@0GD+WoTd9O+@5#(oSRENf zUa5&0O?bYQIM$ReFSmMZCaht7i4O(P>i}Bb-EXO^c;T0nZ3)lolF#zyELT}nJf-b< zJBcCTsdY-*^H`dR|ibuquICNNzJ~Ym@Tm6jAVtrPk7#Luc)#+WmM=Di4)PD54+*V z8}BL#6Q1b~@K1kHwO5Om1r@7U3pZ+HX~~$rfWMHSa@XqIt>18Rmy_Eki$QQYK-gdX zUGR4tSG|xhEkr?AQcz-}G}0_ekcFeDU$6)f185ZbN-c#-8*gMKrZ(ZpQxstY{gCkN zIjNOPy)AIh5BYRD`_q9aH(r6i3F}9k&3ZTf+u?M=QwOXfWGR7IiL#F%>t7NrHJAG^ zOoe}ZUBKvfR>?nCwsP4oy+FmS*2j5>whBQx=WS40-h0T$qCbSOxXW>{#AZZM*Xh2+ z)LOoy_F{5NrL2;V-xCC(28=Q~^e0aG(}Eolj{4_1m5#v>l*3#qEekZ}GJ)g;%7n+D zM7j#%`OAqy<2GO7BS84e#=cQ4+Xj&L$Azu1*Z0s-A#yE%PD#B~Nm09_Q=;YV`!B%~ zm2@s-d@u8E9=EaQR45*5{FF@9C}szLV|kcTRAn+%u_J$0d^vc6R7?0WVS$7?j-W`n z8|N9t?RaT5IX6KKt&%~KZJ1~%*~R{5$U^&ROemiIwL)X4d;sMl&7%V{bN+^4}4}pKHR)RTYJ-c@9|zmy$U$be`@*!cG=+6Q1SZ5aN&@%KZmlS|Q3` z%lqsiRg^k3r?WJugh{Iso+@DJ?lDYX;aw$EuqKbJjaEpM)W7$9o}!&A)sP}9Nm7BC z(zFqt#1nV-L&2zE{{*a(k4bY9p6=ifF0lff@SMa4*~aQFton@TY&h}@LZH+^l7A5) zCQ|Zp93i&6Gu}#e0aYpVzbYeY|0Y?MxBow-{>c7^Y8g%BelA`$(H)ckN1mnxU1g`{ zNFtn>G+*VQGw`AO2iewhtc>y|z>z-2yu)c2nA2-R!sAzxKB+;`T&ModPi&0MU|!Jt zd`YwMF;KNr=~MH4_G{?%hF~#2q9dv@!Z@XT&2*`oF@&k7u^<$WLF)9r=`+~*{J zPO@q`?<1MA#1+Yd> zp>OHf#X9yyiIp4vu-Qeva$H9(M5dS%)1xEqTSd3ZTb2>`%jXIw{BvR6JdC*p`-NxJ zg0rgCjY0{GTS1)W%r%S!GKMKaOH?wn^-*Q0)nTWYn&Hx75%+_tB)y*#asOTwrZzvy zwclMSQjD?g8Kr(xpi3Q?D)mM>Fb+;-^;s3XLP1dQasqHS;aNt2fk{y9cp74za%hfEWoSBBsv4Fx=;PJk9Mp=%?0mF^2lv@u33V-D&woc9xwP< z=6x9}FT;LT@-O#4qDA)23Pe_xgIz>^MZ_%cK||`gO$;?unfC++jO~BwSpNKU+82_h*SGa~U?E`}kwQNt44|;j8CnsL`_m+RMC_`6C=yh+ zjM{6+qBNLyg0uni1}J6xgymQ0eA?QR6Yz;H7Ye0E)L-5-$n=K{eFXt?^T=2zNq&01 zA^ZZq{Sol(6}&$V>6n|>3%WHOCQXf_1Z8W9~*}{PEa?0m+jUs$x?0cFl zxt`KoUol^+;29X@q9q{jgj?=&Fx%-Zb+D~b_+)h~Ya|{B+{_bTxahQ{`AArFuhW-mwbsTD*dsR{6AgBZZRcGJ^jenCM znIuS*KHm7ID#%=3niW^wbaVZoPRS$P$(e-qKa|?<5PDfDlN%bA_k0Gxgy+>(iko&j z%0kL{V}wd-esBMmB%v~D9hhCrD3EOQ_+%ZUhC)>PhnO&6l=jsp#%b&!3WRzwRz>Z% z$jYkeS}IZx3aQHL=P7<1Pd$JDPOaTzv-T(=t8OEZ-T)O2l5x6xyf$spJb^Ex+;@Nn zDFU?a4FxJJ`BEvT596)WF+zK4DJv<Dqn(~jwD-H|!d!JBhfNE{} zn&O{J7R&m>o@ofIR(5N$XK8Q5&D+blFR{}7xq*KlR;i5YX|kp- zXCe;S$MreLfZF<%uc5TKb`{-=d#ofMU9TclFTBIbB#WW3fyK~(RVfyoJd?%z55nXW z4fgM=Qg82GBo+BWrzJdJKt;TS2psA{$qpKF|*HqT*)xG^0W*)@uv_k$Qb!r$xgWfJ~^Fg3JK zR_uz}S3jml3ejTXnu?m9iE=?XCOq%8RE)BF03+i$-IEJ&!e!?Fk`^gBy$v@4pY5&o zjg6XD1VN;vHIXbLZe$TLR_c`ZvdS2>w?CRL?;%~@sF$4bhC1c_8yKfNAy<{>)8)P1 zn(}%i%ai?N%6pbb${Q!;ZKBSh}FhnXcsGXZp*z-yNy?=hiDQtpMSmPg4m2)QxyHywV zVJiw7tP2a>OhGG%pki-*p6^;DyD0X?OSym;pk1fuvVwCmfj>&1fIy`LS`zpjfq+Gn zx8`Lj8x!iVTUYc}%2sxM)HW5LXk?o-1++~Cm?&=+XuRc6c=|%mtSeZH9>Twy_;)A& z?&qIex}V9vr}_6c{=LCJ_L&mz^Y2pDuwUU{dyMHz`L_6doPW>q@2^hWk@nD#!3oc3 zMeFjTJNm`dFpg=?RcNs*s9nqX5N?$eDfr}&`S2{=FX^u@N-aE9$G67C1(ns8>1ghx zUHOCX$vMWVjhe0>;!O-uNr?>1&6qbYFH{Qa?-oarE;Y7b*RGd?V#1 z_49Xd`RHb=d|0ojejxn;{oGS>X6om=p-NOK@7DbdY?gNz{WGbbFDFs-v&`tRE-p|t zV1z(FD|6w|8Jef8cl=r9a^fE(UX;G5supBIKfBpp!rgkLbyJZP!&9lMlZ;l}N9;e! zRtW6A4oVb*?9C_?%Sof7Cp?Q(fG+hffsV93J-;;zsFfur^Xm#2{`z!}Ibwd2vL{)e zV9ON>+@EC$A=EYb9#`fp;S0C@0?9UpS2?mtbNiiCiyi@5JCzaNd!;3hiA}8!2Lp^JM zrPZg=p3A#7`n+V2nUH$*p7-g3pMuS%NI8HfA0*elzM98dMu|3w7yG3tgF5P>+FKKIWp zQuykEXK~}xp-0|6l^0DxRT#KMrlfD60+{EQDs3XH??c{yJ z-gG~nkcYhEl%ya%vJ=uVR}k)<%!9phOinB=>xQw3b@*41h{uU2GoKYp)#~4yXU+4h z{^k7ivHD-j4^KDZx}g+tw4gu3mtrF0lo2?d z8W}3j{6fzizaVU8O(O%bteDjiwh1F8fg;hzHM|xkUu#a4{-7RyDmT@`PPD@87m19_ zmdpvyLNFbz-CuY}v=l3+{eaO^%Z_&|lA`uU816De(RNrg z-g(bRm!_aWq;sHFd^V;k`^qI8m$baMCSlHL4g>pL_B3GV|LsXqQ~Tsno26(wn)DqL zwSv7xS&Gkgr2@@J|LCx|#S~>a7Y6V%U;oG%JiZ$Efuxt`iq`4z6u|JWH%O?Ynuka2 zpQkzc$NQH#s`5_!XT%FrWN^A&GFslJ{-jtfB?U4yE}RX3li^$CReD`%{HdbxEk%LlWjmtRlqI=MH#_G zv^?;VBGn=#CeI{N+5QKmRkV(tj3Iv7CRqhXRSToisyg-;oP^QOUsT}#mX>0C)RmEd z5~^}7fDmOrQIkja%yk7@B-}kuMOjv`4NFpMjB zHN|J{Ia<hs#0J6Aw7$J|$p5Ckt$)3~*I*)bo_Az@gQ~ev ztWJH`B9++vlAGGJ$f)n5#HH(d_!M2=uV_j~<>~s4S6Q9zwJPGh8|8pWwM8(i z*^$)c5`|kjS;DiD6pelMa{ARrPl%#s_j0eZ!q~>CmB2m)EcG_37t&D}Nt8BFN>utD zYEx`Veq`9;M}`*e#`}uBb)-Js`Ph+#k@3mB z$GZ}&l&6b$k|G!z&O}Po`D>K3wzq&TQ^g?YF!FmCX?`4Dor_}fe=NtZi`AGFoR%Um zA_}UR3Jo$pAX!H9fmY{T8d1QSEmYH-`A`E|2GU2v?`NlRhF*=GE2y+0PIzKJGhAA# zogBp_$C#MuG)MwA_ZO8?j=LA1NsZV}-E_61Xpef|a`20tVpYR6>upFk&F zzYisExH-VVkUuGK%@EBB z#fIMhQEV80c9IP!A=r={N#G13H&Reg`MXJLKF}P3eHr$?)IVTN(-Kq{bccE0Bpbi9 z>Uq?CBV*l9;$f2`;4|mn?X|fx@+U3R%2-bhqr6Wq2BGuVpdFhejAZp#kC_)y#TGL~ z>n|j;a9B1f_9i@kQn)4-*l#lUkh=gOl*%ML(@0Uq`9#4hX1VCcyZA_W#w#SOeR#Vm zE!^W8L8Es+WpCsaC2soy(Pi{mF;I?f#G-q2Benyfqe=tjvuVAXp=lkfl^?NTLBEqm zPMVg?|Ea2$@;wpNsE#3au3~{c9kA#}VVO5R1AxeEg{HZ=n%1^rV5YRKI#6=M=^|?Q)FBxc1SQDO7U!o3Wg{ym}JgDyW z!!8;y5iKwNx1hyJ6IzVwaVon*>CtNU7iJBp-BnZs%XL58gB?PL!>lYOL~7v)73Y2R zkyLz)e9GoO+G<@VD3ey}2&hupL^=<2Hn&>)3vnt^>ZOid#;{V->iiV4V|PmPa{*9~ zs|=DkMAOA=4@Ef!XzSMslmR;Y2i*zu)!wQV(l;{I`i&3dCH(=}pFXH7VU;YBZf|)n zMNkr+X9Wc+!mTS3usnx;CYf7aUK*m)cTxb8QLk4u*EZH$nD?k+OEw5#)E(tV{!4g9 zsCdsZ2f>vf_-1Dk!5$fRO^u+dM(`(%U`7f-d*b6K(ApXO-^T8RhLYf3AuGZBTlDSs z-wRXr*)D1ob>B#u{HJccsqE?X1<^N0u8*YkNqFb*gy&_Dsl_w5p$g&3Z90E>@mL4 z-x5HZ;VK6&MO}Wc`VNZi8_s_!5cEHCAlgB!yf-C|8Al)HK6449=LA-*BDxe@)ZU36 z)COjoT4^;|ITRsB&xgpuvp8Ep!4j%#C8y5}|NA(v;0+5-Uf0?WahDrXx|-_I3C|P}UwX%m`_oj9 zmpEAixF~_8;pF`De<>am9{qroL%6oRYbWlIyptih=&^QpX6+$Qz6;i=2 zx{Ok^aZ~(wP7-s~iP^Dm%K)QuG%S`!n96PhgvwIR?M&qy`~F;wol@V`$)cGo?@iLI z5zn|{DT)D~qX<$Ci4+pdkNRJP5w5sfZlk@Z+P#MC$E@RxcPQCKoV@i6t`Kr%vLwaz zSDC(u@L1kUlJP>pe_$~bw1I;7C1mpGL{eT+%LOX$xK!SzZ=IHuynmji^8VEO*QlSD zrhcBHK1%juQvclTih6XNH%C+dNU|hF!S|sg^$#WEg#rWW;}<~oC>=}G9&B2N>F=a6 zU6GmT+o_7|8-A5+xjW%7{Z&PF0ojj9_KvZN>)XS{{EAI4G)LZ~j*6p(z|bX8~z zRj3G6QlefZgVWe^)8)=p<<8Q`5}ug^P%TIIw=rn~-lzXSz_lt5c8)sYx_}vgbaTu5 zm8l4L>0)UtO@Q9oIY$xjl}MYM5pXKb`6zmnA;>JROXEb9JTaR>%x@g*!&BJL)PnrG z6!u!qgi43`k1hO|G)JoxCts11FX9=dGYEYMlVXcr)0<7c%1JMB*M2ER8T;c2H>x@G zVCAHF5=U2a*`|&gQ#t8XiR12;%MR(dYbqzrl{i#`%l@s7yR353D%`cBE&Pj^o|$x=@G8N%LJSDl@Jum21KFSt_Sd{jf52<(TI$JA@+~gtQ!0xKkn+ z0iQXG_qdr1xTLS5DbdmERT6;)0>_k}zl~Aya}D)xh1P-9vvnSaQTsrso3D#z@R*B| z&6lB+ZYNJ#DFt(TZH;HYf%6hd9!L@|J}u-@WvGanZ)JT&*Sv+Uc}>35oGYKeu?RYPfbj~z2$gRi0$QWGN@*yP_@*kE^$zaqkhQ*j+RAZ z7EgA|6%DJRp{i{7AhJe%Vjj8F8&@uAvw-Ob^K`rK@H=B^c{^Qqbb^Wp=((QZ;(y|PsA4*)! zRvcHX3K}5g_MYXRpQsDSVQIP6nkz}*f3qry{{>Wp!v9B&zjqRUm4iPvE=_bu<5#$c z7c|EW)&VK3lUYOGf#v7X~#eN3>{)Rme);&Xo`3k~M`mAkX3Pr_3GNNL{gkW^rJ zQS(ClXaQpTQP}p%WEHldWKn#IiDR!HZ-G~6k$^*`kqKF# zd_u(C8aapjaK1K)_I`!ds4m7}D>WyrEj2^jXrax&!HT+`L~TFS-7R*L%pUGiq$#^8 zYQLM`>-r@GNP3F0yJ`W@QbA8V0d#aj64hU&QL)!B0{soqe&VOWRT&sj zDO?HHWt%*IWlfqxkz18Wc3k^qlA7}!Y7{}AO~Ig4g`JwBCQDO8Nn~$Fb`5awt_*5w zKz9sk*kKcDMr&%W&q}1oxK@+lPm%Eo==5ZpQii3-cw9vbQ>JfMOwnXS7$h|r<1@)< zg4F++jO;WS|B=Dg>bQh_8eQj1GCr7`ETwgdj6;nXWVA?;u@l=o)i(G4ugJ(vlQBS( zadC=_XF-?ZMj%DTR241UxHXfEDK$wtZ_6ZO7aaSaxsjJ9V<~vx#(eT=Zk(7&M*XB@ zDT&`}!$0EjoF{!tMEOv4GIcwtDOUXc*fg9W8aL{b+XJr3vJsWm(6xzWqH^NxO3j0k z7(ZVAN)&08lcFv>$u01|ivLUU__{?c-|#Vur+Z&^RdOM|Ozz#hCAb)qgICKa9K1=! zU8A~6#m*&EL&#sfccGN&TPj1VxY1nrDg!N}0LKsgTjJxoB&M)_O?2&R)sq+Waw#%iZyd!w=l5q82t{6!?~&z~rse zDBT}F4VZ6Q35+Zf7x0yz962-}%4INc1{w3}!E{x|@?JEt8gAZRULr(>ISu$gb?! zVtHB0TaU8{mGJy?8$vGj(LW?$wLWbJFq{WCHNCzq&acau=&la!354s$s;30@eIwec zXTrUgfX|xT+rF)%Y+>`*z>4AN6^BHZVW4e3f0y~UoR5{YmfD9ACC}N4hN%50GY7=U ze(G~}_Bms5^DbOW{zrePrBhB3wD_<1dMkXNd@gm0+Lt@{t`rnjNqiDkDAoI!<_) zABbE%R-RzkDQm4Bo?aLmFau-bo%A}eI!GHR?kMMCLlDrPRQGdy5bP;Ajt@lD(O1af zoFo$y))UlY0hCL(@-CwzV$RC#svVzEW#{2tWiWqEgjj>Su*(yz2ZPm`*xR0UmTbLG z>}ucNk!1>owAAAPvD=7A-G|^lMN#rx7lh;_`gLe_KO%Fzq-(9!X;gQmM+QvHBdg>#%uKsnGFYu+pNQ<`GuG{Rh$>kn?WHGqk+`APRR~TD0`g-3O5J3txlJTfya;@l?|}j zbr9WviGY706v2DGqW652zhs5Z7tfbg$qRz4N+I)(p#q8~rP|8OEfsQ3D)6al4b^^K z`tzao#F$>oO(JgBIrqc38Z0JRIWMDza>Q7r6PyQLu?sw{G!B|9<5EVf1If+hS^8JH zeX4fK+*i@*zGSPg8S>a~{2YUyCM&b1Hju6lSHDg=?1BFU4?4Brruie1i{7+{99r2Y zJe3kBOCI@pp<32iF_wNybh-Hlrr5ZB(+B>e_PaVCSpS~nO)}}vD#>4qEH4l{OQwTr zPq0=c)QnYVdpso;gh&H>Yuo`Tg=TP?jZNde8H%*O(zd)Rmwn3*2KeD{J($g&OL=ZWU z^E9N)btsawrD-gWkS0PZq(~K|!Y=|+uILz9nWp7t1u450B!@68G_<-9&)~lGV`&Wz zG00jYJ7NEp;#5E=RDsb>U=mj`0T50}fXlk_DePCDwcI7TWz<+)M&RJ3R>{-Xfk^)h zx0SJ}#L~olCx}Xt)=zkbP(HNTi*HQ}&J_|Tf>Vv*%nrvmN=U+=;lNwKi)f}wydT&y zY|>PTaOQ9R>X#WM*)WlMz>-BlQ6`frWy)`LS+T|Gc2T>VLlNf; zA4rOwuhuWb0iBYpz**5l;d*A9+>D9Mu)PMh6f@4(*qSq=OEZ+h@6qK>2_`^XcQ|Va=_!siTK)_|ptmXi8jMaSU5%!(!q=U)XJ_c}>*G0p_ zryK8)-qqs|6r!f4Y!OE74@L{OL`lg~-_=k>EW2sG+Lnr8R{%{ySIH~0O!v7&$U%#! z{kY01dlCSgL{5+wkg9TD;dHZ>8r<@>(HNYKy5X65w}yll6nTa2W*axDGQS$9%5-v^ znVI9|R1V$E{;YHSM0C1pdv3}Qg!@xDbT_+O=a{8BCi8T~jAfZQ{HYweo0X8mkwhqM zL7mT`eNl-b+UZg!r*POCReRu0K>BslMzR|VPQu3HHrX6*0P%GlYi;^vW_zj=!=qTv z!_7e_h7%$ClrLBNW+x_BVi11rt2i-ki9wgT?8}^(77O(%mL8Kyl~22f)T&99m4w9w zal-C&0(PbL3Xt$z4~=YGDjjeAVV)yfU70JzdhrMM=DUs;MJ_m!ji?^(zimLKmM8o6TE3K;d7pq%58tm5^-xgq!YPjO z=&@HtB(;iCF-qAewWAb}e~yovdOXwj>{z9GMnvWH^40tq-hkfOCSTj-%XaiZc*2b? zqgqyHlJxQ`mF^9wcwR#+c`KTI2^@k!o)czZKfK&VasZxmF{D)Nh zIS$d5d;5P>>wy4>&gq=_DyN7TYw)Q8#0I7q@k;~iyt%rOgbg2GpJId6V<#h?=Cku2 zK=wp&ot5xh1-YC~lg5l+qj9XlEODrv4UXnKDMbENBef-?Sg{zR!h%_}&6J;T(5`Vw z6EQdDa}vCkn%p7Aj@4!3I@PE`U~h$7@QHX`35BYihr7qCRvO`+#^ZmqmhwQMk@QHD zc5p%hm4@OY;Rc6Jk-A4D-W(C@%`x>)iEvGq*b`LG6of zCIO=zrL^|_q*B_D9B~!In<}fLmo7%Dfl_KNdMOdjP)%o0oHVzrg)8?!X$wne%!TGR zp*dEe3Ee{}LZ~B06=@0&j&&$hdhtS)kW`%~rl{;rekX5XCW(*h9;3+<24#>~xz=ew ztvzwU)0{^5ShEo8O6up(T>Tt0!#2M|E}S|aEP@zCsmHQEUYFwTWl7oyuKN+luKb4qBCLGB4H=>R35I zkCAp$7R|NNQs|y{hbFa$T_`gQ={;h>^&#C@I+QIbcGj$lvQvERn2h}qhNbS$_ViSwKCSWq>2nEvpxWk+5j+)Xa~CIg)$ z4-{?-?Kpbb?vDXkw&MtzOsKhLp*!4PV2H3h;kieeSoHt3TK~%o;ZzNDu98l)eg!ac zM88j^6uTD)uFK}ByqCiLw}=>|3O|f9 z1j=xqxl0?&C-vM>l+1z2aSW*@i!|td6=~EwEaWzS@q}VLceJ5Q?lxSvTJf8=SXbNG@SJhj5^PqF zNBD_7u~)4-crI-YuDDH(23Sl(&X0B5uU^qANHob@j&lGChnfn-M!*ky!ywjeQ|s-i z^;+(zcL!8VXY3f65L!KsCxTw)Oe+5%byBnI-AT>HaeRG(CiWg0a6y)wvFJ_y4XW8N zY1M4>LMNj_{Wf`tS1*F-b1wgoymjC3ey8^*5|L9U-{HYY{YBCgoiAD71Tu-6Y#w`9 zmlrPuVDcTAdFwLs_HUlIj}*u@7g@8xfy3;*Y@zK^9i+%f)B6+21M^&IE!Fp1*?Y0x z9xFCKj&H{+Z$3{V1@L~RY{(_9V`5;9Q|YUNX9gmVDOl@`2@+-A)0I>eV_Fg;?OvE2 zh=wJv{Few<3Scz6)`^IQH#s3i(a7bjmZ%rAmZ$x-Xn#m$<{ss#ZmHl3L~_qB&)P4C zXG;R+#z10C`EL#ex^e4z0}nTRQf4i%1*&-Ez1_>Qw#k+elk?*8tS`&5o|F6)IZLEg z@jH5LO~a1InyF|gvs6+b3#X%rMK0`Lj$Lk+`z>YWhk>jOWySB^`!i;^U6O-tVGpN6 znK@OERha)&g|g+U%M3jdk8r4l+4#+eMOx)DZC-i{Z@KIzsP_nD2MGR$6S?>DN=3=F z&*r;SSL{_68+))x`MFi@Ql3`Z_i`maFg#!m9L)9IfKfQ0AHR7 zII5>nIIPGh99Uo!w$NvC^?hi)zor~%ec&_K`^;VD0eRtc32oD9k^Hf}`7Nm`evswD zu{`U|e<-VI5J?kd}Qr})f|GFIO4sZZ>Yk5@qwm9yfZQ7@I+LS-IbS{om^9rQ2l|D zcSV|Q;NTdpr1M}LG<$K|Dp@*La{r+dv2BRePur~_i4;7?e~=r`^@VpFs@XcBD0~P9 z*2GMv`1KiLmCvx)9bwEe00GJRJDB0(>g{c+pel39#A^eLnFVz<1W67&;o zKc9@=X1}PT&n5Z*_hL2lHanuDPa^tknbRsH+wA*Pbf}{qZG4HLqNKQ6N|~JISz*+? zCIm#>GuT8`NHyG=T8hL0Lh+Cl{1;Nca8O;<#==Y@F1u4f)mA7N& zFlkGr7Nqi`E*XD%3P+yCt;}6m=Cnhk^^dYqY~|J`0X4lwHBO?1eBa(^Zt$#VSWbiq z|E#cFlbV+sIw2Y!?!<*x<(euQ9Cjhc$a<}&E(7ZWk}xW^vPh)PDufr0res%0UX0oB6m3^jj!>99_uVMUp^)gsL~E&d zlQc7YtB@LTkB`dei}rX!rf>F~kLdJfc(5cc3NP-g z0-bmouHTo8f`ws82`rRYF*C{6lW#1Y|jvY}*+Y$}buqyvzfjY!|CG=q0SDt-+qs_D{dJSXYNa71{(36 zM`q9${@j#UD5}dDY-F^%WVi863*&lAnsSUWqJ9kAoIqWO9>9B*I-*u8$I^X2)FI+% zE`!|oqJR|+NR?oj96s%*%FPR&N4Zz%a{olR@u|u7MWcmw(T;nZ_I;oIa^~ElD%Cr8GnE0n zf0a-%2DaCWCLJ{iw$K4v4-@Il_1zjcbkrUwOOy@2Lszk~$&#k@ z@$Rbxg@y#Wz|xpTB=tl0I>}5?9T3$k!;7WUyMjK}*HU>#ICur!@NjRZ>Z|M-xYz+> z1*P4{zd}nVDU2P!ScDi>H^FrWt5N-y6DgEJbYL48S&NH?1F2l+}h+Sed;I;v4Uh*UZs zW7<&ewxW!wiT_in&K9HHD&vNFy%cNI+ybC6UEV(CE%WwpwQsB&^;5z(zGH^)ZAJ4Z z=|AO2`a%4ECVU-1u7vM)N(Ax$sql#yWJ*eR{qpG9$d?k~BU@VwUW}t(QhDiyNv_&I zcWEi)WpZ^j?W9Mt5e|c8E&4C0BI!8JlEJ7|>+Z;#L5Cf-`GFk6!r2Wxv~HI&rHIG{nqP}=`L3hc#e#WLbtWvE0Y{3%Hy8_I)@%{eWxiHx&CHrl9kb@mWSZzW#xJQt z@Hp_=x12-iW0FP6;F<2f@peZR7@|PoydLcd$I_R3?lPREJ>)>F+Tq^0Tu{|!>>g@Z# zrA#w!s$0`UBm?FErn=L564bNZX<{%M1v8}{M!}N>>gV|)m44LB_t@n>vsl+g%71a7 zs!cmx{@!mh%Acvty47OVxo=l_vLswGPUl%hp78I?J!f8U+7Yz#O`hbxG3iP(C1o@=MHZy#33Y9rg`}npD}n zW7S{~SxeYwA!{-5o(h@jTH-Jzo7`X|Z#Y5Ea$W?V{#LyAv2isR2 z8aiUwh+sjlI%0;67>YP1c!qkdq%LzB~s%L5EKwwVb7AD-rYr9m_+HHSu zQ>oI<{e%fMg{t%&wvx|YU&Z8IvZOxdv^vr_^liDr%cOS4XiN<*jt0B08!aidk;g$G-b1i?>T@02xWuJ{2#4IIqoC5}Wil zpn7e<h64WulG zj^$g_*u*mH37PkmSu+~>p#gk}VPg@}aSEU=cxG8-h5!RML88pTBEl-hoGLMDSj{Sn zPL=%fpD&?GBPO{3?2As_Np!mItBAfhJ;bc!}!}POKqD&=o&R1FF3F#Ms z$iE!fWciopaX9rg5eZHN-S%ciS-yJfui=OoU;XS4zH{s4iO+qBCs@g$sEMQP)qh}{ zA=-a5-xQ?V;Uyqb>*MAw7}L+Jui6g8uBrq4EeQ6sW@-hs+Nf?%gZ0{=;ESuD)IIMw z;*^S7ABxBJk;Sa9kG21Q%)JYERMpk+pCJ24V=6Duy43g^O|%4;I*~yv;X7v zeVFlgT3EJ8+W1zw+%|dttE+0A-6*Jwy=csr!cIN!p!WByplbDj`sTF#!-QiI*LA!` z!SRgwvicyYh*a)L3e#;VHcMm!OpMQM+?;EQWCITsvAzIMk;|r`rY+km;?k!vqcHuF zos(b+w?vlT$HsE@Hd9WBo@AHg^bN6_b6UGjd;AZKrqK)cr{&M94*2eHamuqi>^~S) zrU$_xx1rS& zYBk$|`9#tCV#8QJYh~4p4Nhk{FEh(e$?~_%EN9w{-^mC^SCcJ~$!-q1^h5SY`Z`y9 zUD+mpVE4OSvh>v)cPvcmul1et_K~D{o?Jm`^WUNG3?D2E?9+mCPHvs`eSABK$~^uh3S-S^4`-`)nYdWFFT39v6r8Kmnz@r>tQ#Z ze^$<69FshnUzHZgU#L3fO_@J5fPgcNA1+Oz&im<~D}q4l49_4?MtZO_2fj zPE`Yb8;toScbW-@L5KMySC4Iq{J2`&Wr#j6vg&7Y$@*Rhm@%rj$ZmLw3#kLrqeDwj zD@MZXnPa1Xx9Bew@#nr7x-0LG@NRGE*uh`mHb#?mcp~TZK`Q`q?>gx+Fb=MTv z-Eu+QmS*!<`_3}^!wQV(u?{519${6&s;XN9;K{e`=!EyZ02G6)(6?=T4 zFqJM>c^CiC>T3%-)Ls1}mvIBdZSn)GAnmm(*|9W#ChS0=tK8y0v-;M;Z|m(pqPcD| ztV`72*Q|ezS^pgBm%1OFqNcH&5?hx_?~kSW0}z|nmzT5Z|B4-H)q`A_6{8y7g{+NpP+EqnAr6S1V zPj@0_SP2GkORZ=eT^TI8XfWl5d0B%v1}@{N7On&L>gSwSz4wj4LwU@q*q`xzv3zfE$~6U2mPia1gE8W)Hu54) zex#^#r6?-38>4d#?+UorH#~-SG0Zm1w`7Wp|JDSlq4~m1#-mEM9USsXg&MDJkFZnd z#`wKpzUT0+cJCP@7LDv^Q)s^oEL+Ultv-|&1EERYrjhRZm_=r z?q>~A45@pF;zzG$F&ZNLsHpGk@innBVakl@cS+}R5lu_yt`M$;(I*Z?iARq*^<8jZ zQ)4q(#dkThrMvBcHQ8K^eZpOJ!mTa+mj0>H??gtu^5uxOS8YsSIuk?W(2Lcm7~Yqi zdc>`Vp^cGprI?m`W3fHmF4Hw1s1y>pl>AYy$`TaTGn43_c|A!!pf^<%H4l#a zFBh_P2^ipbSuO{trql3{ao-3;2L9`+?<{PqsGC__H|B!+YlLcyyNm`Kv3{{0*yC@IDL;MM7S1()uF$Aj<#ypYyURs@vi|=SknC zeLt1@%BZgc^+C`Q^igVBD4%-L^l$605z?hT`933;pJInhFj&t@Lh-qbSPWsP>R0zqbB#xem#>G4NKCZAsK0XTat9> zt(QzXw1I}M9ioQoEVH3!B^#=C5()o->^4?1j37mGGwhUGszR=8n;VJoz>wD|T{5qQjxrrty`9a_xz$@TD)PIi4 zm;>P-)?Xi8M7)1b{8^DACm?W|S;LyyY6RA7OO1ex;A#8!E z(KEV2a^+fJ4m^bH#+Y2Vl7afxOxD#`BED@91RPg%_q=(>72)j(jU>vXyjXoT;GsoZ zejH*Nw+9*^rk_Jh<46HoWz|?muYi*?Ykz@-^ zdd<>zEFxE+V>TD5`Xop8@Nbxl^2u^D2zNU{T66%jk(4joIHD|6{+jI2{SV2?pEl0A z2gSMU&c915`=2n*QUszMd}s0}%DyL|dLQx!6JAS!Hb=RF*JoxaYOk9FDd5@r14vGU_n+ZGhcaiLAH6IYh>4Oc*!lsEAqq0!gnolG+G?&G->=Iws zA?|UNqqW*EB(W}hj92c9Rp4j{=h0+bS0Eq?Nr4*%Fil2h-_RV&YeF7Y7Lr0MnKh{g zV;?5!p@CUijX)nuCOHy(fLCvIavI$qiu+eYzLu{5YqXc-2o7-$RNa61LD&sUX@*>8 zzW-j{ujKs#^Zi%y4$nWNhxz^sc|VW$9P_h*xA6`2eNz>FdQzO%Qv54Q5TNmF5x%=2XfU=U}>3RJG?qeyY$RHIzHwBDlCfH zNo%sMb7I8F%t%H?m!WVx?s;DBM!C2|0Vb!RaXcp zN${Xf<4&7HzoXG<+$U_|2K-Xh?$v6}C5cm9JQfhJ2j)UwZX$~aZZi195RG4v3;)1hgG!4Prm>W_<65jn~9$ys67cko1M_(^~6V=k`A%|0M)6U zbV^~}@67iz|{?}Bx6&G*4-5Kh9n)i~@WNy+KH{ZYOttXo-4^;y2lO~eaD z&PAdi@VON1ap;4YcW4mT-)11*m+@yMQ}h=pd@I}pzCH3C_{IW}M6}2)qHSJDUsWCU z3=DG^RSLr#hT3?^KJHW$liirYFtt-l@5BVd*o~PxF*%Wt#IWQxgS}w_!i6M?#^VmE4q zkI0bpznUTGf7+Dv2Srj3&w`yPlK!A6>BrLB9emo9^uKCK`tL{5A2cQX!IY%GgS(+t z^2bpA8{>1?NZlz)M%vLlPc)4--x!l4G*v_1 zglb3_LZuoKIVSwzWin1`Cw?e02hF&&b1KNjfGDiojWo)uH{0V+i?$(pli=acrG(=aHD*0;q?NWNA`lF(}r9{KJ{b`u?*j0dl3ZO0&%3!W8Juc3#aD4h;^HwZC# z9=lMPArVQX$q#A|=NcCHCf0eApYg945gCE(C;CqkiV)|PWa+7G$#jpW>Y)*?Dqx5M z;2yRBtWS)M<0N^`0Q;K)-=;k0VpE<|%w_LMdCppUd~NJZ8dCzi#Ge%vaqLDm84*wR zLlqES5A7EQh2723$POfawV?+tg+(~vwHz{T%rzbwWlSF{y9>1eI)>}AWo&>}M1C!F=5B^J0 zE+c8C>ciOQbeo|-Qd3#PF3BWZE_U?+m0J%a2p3jTo&L=;Dha#J+g|FZ0O{_e-Kc*O z25ZV(C_k_Sz~)U%L$MiJWWKF1-?o`=jpkc~A57nQ>VXqHX;~KC!z?^kevE*!HPr+6 z@J$TR)i<^rE%7I1Hh~?l0_U{#5*Avss~K}SwuF}9J^nz zoNB%vuj*rETql{ejx4(oxtcqZF2hPDVzlD(kWCc0fH zF=C2GI4@zk>?;HO(2%!>OEIy@yEj3IGT~Kgz}CRH+|I!lDuXDX8ax$*>_~%*|J_g& z9nH{Y?3ZqoyTJo1o9IuLugD#I>jC=j4lb`FLd{s@hL9K#Xf?8wxsBf{NM?=0@!il8 zP9LfFhM^_Wl~^y+I;B71$hGe(4#>QD-KEPBMZt)K+TIl$!InLQ#(bkoKgX^AR=zdJ zaZ({G$YwA-WSxCfniIL@w-yW$`-b$PHWgVdk=Ldo3sj_lLgcbkWTA=_tGP%~DzdjJ z(ngqF!h*vDUO-pP9>10DasU6u_@UuZ856Q+#m+J90buG3^Ya^AVAaN=k(N{KKOJ5{j-~q|8vc*SsZ#t(TK@UclO~6v z{91ycErlu##=6$V{XP0i6c{wb~Mk`oMkqqnM-?wxBNMznyNm%3j?nM zJ%mFK`3kECmdPAk79m#byEeb0?7I?P*;#`xdQ>_ufoG)WV#&OV$HX1d^Sddp%xwC9 z-7YO^T{sBUuTgt+ zBV{J6u6My~q{= zoc-uqGCqk`W9+Gpduv`S;pOBShgv9GDpZ$}jZ`?RB^2};6MIrYk|nXPLpYHvNTG;!YC(~&p8oC$j(VsigC?Ah?rvky zqzNKC-&Ul?;v&W(`Zzn_#IATtl05WMWFgv-QWRBaQdD6}^lQ>)5QZ+1TaIwq!zZeQ zA=$So(B1I{3kF(0A*v2?>}OosJ|i!B3{wJ9WoR!d`#X`D#=ykrD(# zx>H81qwzb*o?7ipeINF$X(`o=L@Q*?oMV=8@D}NnvM1f}FEQ5@!#l0!NibTt4q@Z~ zJ9UT>+~Xk6&Ed!opGq<@9VJb5B8|XeDoy;!WSU`CNhJ7oN_z*K5LkREayXicb*y|O?5Bw)#~JsXvSI1TV!!cZGt(hrruB8#bj_>CI6YTnkjxu?4i@}^V0?901NzF zd9E7ZzfMfS&ttEj3O_P%r%d~vUnF5e!H@93r_B1wR2mb0WRy=S=vV1P3Vwt~KBXjo zI?;E*k8n^o>FK`R)?4*$(}V0?K-8+$6=tZ%a`zgr{z3`J+=tUka zOR`_eph88Mpq>xiXlMVhq0VfLl((gqYKMN*|c) zZ{Lje4KUmH!g#a4wXaG0#$}W?_6ey$#^6FeB*s9h9y?#!XdZ$+wd2c^?>TC`3RHU{Ez48%wW98|v5ZgMv*YCX#7#UM zb@RvbBb;!%@%LnuH_9w;%}vt3$RE<>sa0UXd{w4ubMAuqs%UjehZm`#E^$z&^MWU& zCVQQn)%gzm+WM&33s%7)JI_|V7;e_uKUu4yfS4eO{n6QJ`=f3S{T~xlM^pj?31}xm zYz_2J5|%~&kJH9M|IHMc=Y^8vHz858jNk2M&0EH){w{wtHGal?sY0aTVw0lap&k7_ zD^ZBh-}B8vo-hl!KUqj}OKGTWw=@x<2QoaD5FHgYwG%*s{F%7;DF7`aEQS-JS{i5)e0pH1XduDb3QwA|)u@2ty>{R<>_tX<#A z%v}q!Z>yE1fO-1ED(2~&S%oStF?YX|IOa~U4E-1qC5L`EQX(aDs^Edg?149L=OxRB zE4AoDYD#jtXEx%1(D>kx3(Y1!rvRyalcINXMAmI6HRZo3N|pqzMqFLEjnn8WMZQ^U zij~yaBvU_WJS_q|^K4S>T?E~Ft;B!~T0VQNe@|l>g;zmKf5a6WEcPUrptNZ-&vfg1 zU4aI?^?%;%E2JF>?w12W zti-osTwytHB#dqHK7w;@g49D*kMknOonpy z&rAWjr)sx5yw~auoR~Yaz^#Ag4myf6u1AP*IOOxl4_=coU(1+dj?di6z1xppK!BDe zcqjsj!$1~C`>f2$y6CGwpdJoo zpqMO|618i$mOr@}M+Uoa_0^>1&j@L@QJaf2+l0;iwUXUh{T>S6OyN5yb-Olx6F-}2 zomQ}$+K{uKO&UFZs|%5?<}Rs-s7 zTJ29kKYL5a;`3{^0{SyS`tu!Cy287y$!bfu;H4+kes-GLCo`zqsrpE|4S?9F9{qXx zdKB@zrw50J^Kb6~r3?Fp3kFfN$FiTc*>d_;mW_^D>Gu$dMhzFf5^W< zsP5G#cyy72uz^)JISh*@XaMz~!0)fl75H_}J5de3njR$o_$u6lku%nBLZsaPe9iUo?{JAx7ywl8nr&6`P_-8kAMkTV#5>g}QouWP-kr)4wBzRiQwF#U{3Y=_@ z%W7fAvz;P?i$OSt9^u%n<1`rOI-%xue+Nk8sThZeR~O1kkV|*);o=Hz<~j|^rRa-h zD_#%2t>hK0n_diOj|FQ zwmuWnC=$#P9NVE42qfv)2luB^f>vLABM!$HBCQtl{&-Xd%-oN`Urn}aQ}8!6 zWgU{2Mt+gJOxY?@n915b8@2JPv{Gj?>~Hfw0jI1899x3@ZHF()M#spRl&H2n%XKri zQ3%Urhku!zr&zA79>sF4Sc1~$4O#Swaky6VD6NAG^gWWnjTOFrDmP}8IJmLDlRwRk;VcYW%r#=(r;7qL%DG5s z*n+94!PIJhOBVX^+pek~Q-(`F+P5;g`;TnVlP!=yP|*77pjA|)S)Qt0EYTfgi3R|i zN+YmgCg<4qq!w#eDO$lDv92=p{-sPkTtaYkJZQavJHcmI)&;HeTve@5pboA;e6B~o z1M}nAD`uYQ(m!JSMLxX{0(d_GGuHa~kKGNz64(p)XbM^c4bi2(HygA#Uk1G(4 zztj_)d_wE@q5r3|259|O&8Q3x`&PFXa%zzjMYRMPjLfu`#^o< zVBKCJ<1k*oU-d;FX?BAe&0b}uHrpu4X}OGuYNi^Lk+ksEz7*SEx6`3p2NI-5w^BG` z<)G;4~gz}`|BcF;1)@(r15U6{RXVPL$dJSoppCs zWFG_wvqCn1{l)q3yxGgDNvs9bA%l6dSD0^WqyW&k?nR8oQd=uIixYj4n8YT@{szg+ zUD9k7dzxJmmHY>{Ngb({jj&5!AGw#CHC_6L^vLYPBf|Q)^!Fm8_@GGA03xDWP+p`d zRvn{}q*$n11reG6twg1d;F)1ItC{KbUV_Y;Ue##zw+hZ~&w*VhII%b68(i^*Ni zdy-pBSLruGL|xMVyE6#*6%-Bu|2Rjr+0n8a}AU?-?3VDpTc8oH_ws@_dZxuv-(2&m7UKG3Fe>C=AFzcIS zqV%=VO5!8`bp-!kN&nX=c?;`5wxCBC>xn;0!Wz2@+iM~cVR2eac%`g@!D-ZUR58zO z_{H(Bpm~02^6bXb2?#F0v^O$sNsiEn*=ps&ss3S?;a_124YZnmb#3}MbcD@bAu>qPP!k{Q+`mZ zL3hiUk3&+rH6~9_%<7J>mC&efa^+{jH!zyV{bjH<=W6}V^cT+Rsr4Ig_1hlmC+L{A zM@=}tN%^OM{QJAk>dYGCw?6dC$=p`6N~?XAW@rn3AfECCm3GaI{o@(qCkqA$^=$GZy}n~x z+U}Pl5RsbSi4gXT%hIWQ+auRCcLI3)8z^`BlGtC9=NU8cOZXu16PeF}1>GC+V83D4 z-vK{_F0vKw!lc6GMI4vWQd(b$+YiGz&|y^ecNi0kz|dSU9Kj=rI6uIFDa^hFrJT$l z{zgaGZ;1O#>^B3U|NHxMI#B_QId*%J#41QMqe3Js|{cGHUzD+D+`3#B;A0<0NMaKb6~oD^SgLfp&|!S&PxmuiPf{xI;of z`B>h@%FD#PJiGuri?W28c{slkql|yD9m=7H5=Pt4yNcvt$ff)EIQ58%ke1 z`v1=uOokz)gN%dig045KF;JaNjlo35peMF8a)X_a6J;r5jzi^X$6+46A3>qRw`GjO z4KfbaFJy75VXPAVzD#(OK}dM&+jO@%4q{NZ{aZB-*Iuc{q3^F)%RxdT}(N|?27bV9E9dVeIwc5ujCv*;-b%#wvg*FE<==beO6 zDN;R>iA%CjZ5RQbN1MfHQdAZfngu^IM78+=3jCKenY?>%HIYJbP{jbJQl+~xh>zJ9 ztwy#Nh-4p^qYZi!PJpdcxQJC#6_xDYk)f&ZOpdp3KsV&i~G&~4P-7V2Ffrp-E%N`x1M&zz%)9|q6 zmeh!7wQZtmI9Y`y3>$5~5WpUXP}8d)bcgpTq2@@0n(pARgysO2Yj12U&6$^3$ z20VRS4fGBLknLBy=!eg!ftJYwTkMD;{`lJ*80pYFcI}t=-rQ!_ zo?Y!Kf7=xtYL#TU+Anc5*>G*pap?&@5ngp&&@ljo=X5@ip;<&jd3*|Sc~D5z7973?8!Pgfhyg05P@`&v(78gB0jLr1i%jlQn5 zPxJ=1hr15o>F8Rl6~OE9TA&qtuJzm{l34X&po%Tg3R=}`p;i#ldLH6)RJ{*YpZg|1 z_tpxUwVp@$d{`@~*LtqiN{(vp)AjNjA2V&}N z#afSpsF*HAkAlEC|8^zCouH(+9wo&coQF`N!d?EZR+}eKS{~7A=PFek5WA0^X5>{X zvn)!w1jD!Xc|1FPq}BcE1e>If>8(y|)QruDA#O}*>pFAlVwMwhvk)o%SKC=b! z0w56m3$c;NXKDkVlK0F0J(J$8kPFD*5QN@^S`_sNkoi_gkT5*Vuvxk}Y?>wIJ4LJCY?@Xa7wLl{si*M2B45ZJZxXcj#L$vx zwh+V4X0spsscQE4U#5v+!%Z2)P)6&2of!Hui=0Q1G@uS439HWE2TB7@B8D3{md>h^ zK@5NOTsva;6UxXWhDrx?F+}G3aW+Z+n1Pev=#M|9%2NZ&wIzYE@ zHkF|_Pe<20!OflxEQ^%4N-F`2zfR(A8@P+|wmF5n?}EF{;4Udl+}#Q8M*dyg%`$P< zcd5B>m~>ukFVp*DMa3}^Fqa4+6{ZV?yhU<$D`w^-{x{*Tn)73F3SO*WjGWiTq;bi(#U*s8rec9}`^!cWiOg5Ay*%7nn8Annk|_QWM7@am6b< zYzURdw?ZU5Rn2e~s65){ijo3Fhsj!`^&Ced!Dp1XZD`PXl_S`jL+b0<>7(B`HW%L_ zD`xg_i85#;9LerxS1BjC*O+zDKL1708>o|Eo-qS$}sq$JJi?5xM=7_WLt){Sklhx}3y^)5pFmoz@7zZ-KA5>o1 z{cqE1C#lg~Gc~z!LmQ_!Wie#_r7AAlXQR01%;I7c7hCEnpI!pK7&+q;%^2jQs2);O zaL8k2YDEa7%Z$EZh&}gvUSskIS3|8_PERLs^kT!{iWfP=U;8it@oa$q-B%@rOKcDh zNA5pvMa`+zs2zHPvsyAj`D~A>V*muy@tl*F;yRT?t;Lc=q_HO_c}#Af;OL{j8mbt% zJ6oJs`mQ5&CpIqCF7aDg+k!pl5xk}g7orclOB}=Y7qY927_@QDYLztjv}$kAOG!r~ zMPOW1w4WGvJpmVrs|Nn*hS&&bkfPvnHY)79W zF!2R>TOy&CdB~Mu`FFg+r%6PF%?8xn=Y* zskFM=dUwYWJaTW0Tya40GyR#Wy62$JG7>Fo(b7C7#Cq(GQ~9x!ypJ=^rq`0MMYJc# ziwn)j&-wsN%*YRA|0HT7Xfn>}#mPqe#u2BHq`^&bFg0~=rL2f2^M6HRR##!-AN!tM zv7;;X?h*_3vc%aVs7k&Ub69nv$t9%Dd%_cRwnj>67geAhDqBYe|9gntBL%5QwE(xP zFV#QSyaS6!=hWZvqF@v1B9|P3Jm-x};&2nrk9?JKlo(XYIcFT#1eABwYMzkdk%=5o znEZHOg~?Ov(wMwsgp{DfuUc()xOdmQHBwjRII!!%T)&6KFGu$Fad2)Q`^bJ9{lA#? z1a0`0Dj{)CYZF^kCQdmtf##i5RCI=D@K_^-G|U_;lqTCJw^GiDsrEI|zUX+MSy6{e zDSSv~;nU4M^pqbf>TpWo&&?Nu&f#O3B7awRV9um0t!9}lUjGxl7}$Z;|?2xSPJTR_=a=U_CSK@*?Nqa#{GyTJE^LJFB^^-B6%FG)J2~hc4*z-A=Gm%1GiU1Z}NRB z0rtNIyJZC!1GPlhdh>CiwHqOsEkZI6YvWtAn=x!`5t6xyB5tPC{Mpb<|5Ln~M055M z6@+R|ct@-M;!|zHXEfRzobF$1|leyEjBT&C53*@wTYiEAeAORdx&@&>Q@e!|PNo`&|mwJ%M3 zKLm#66wK8EOSWfKqY7Ca}SUg5GR#FWA);%qUYWD$v-C|N$~ z#SB6suRzJ7ywD}6F`AVqZfF_-31>+B<_TDA;ZfNXzj5qoH7O;TgeikQ%ep^Mn4B9& zIQ8`&J!IG4_5`oabp>zAdtHdET|KdoxKY@-f*T_j5eYdSC{6`}Lr&~d6sYbZp)Jwj z0n?pbd-|W*|3ZgxM}L^c67*0-ASl*XTwPhOI4Kq(N_^%

KoK;r-v5rFZ+0l#V~o zB>io#8Ny@Hq%4rZm?(NE{2Jbic(sKKKY~N9RfS#Yn|3+i&A5g2 ziBO~zqatp{oj;$~l|6ajPW=;y{>k(QktbzqkKwxvqC6W}e~a%yai0rFQ92i4I~(0q ztN01QM7x8tt z0`B-~S2kOL@@@Wxm>ezKvsaDBZy3htAV>?Hpgy7eBe64?gO4z0lT+Wr%K{*8Zs>|DEHT`3%nF8!0w)#=ZBgk3cJjlRxCAi*!1 zZjrFzdYWYPL7jKuSDi|QsfqiW?4uN1-e9kc9NnEpI)^JN)d9Qsa-AeOPgYzIa^!t?bhjp!~NLWL0h z0i~tn&8hu|+F#E*u!2-5X6v9F3w7^emu_;v+`;KBVgYcvQjCq>s0S5iADCT|#n3qW zCprC(u!vaV(kCwSaozD{7mg6U&!vDya7e#BYSMoDLxpeE*mv>8bjRaAD|Ry}^2`(u zn<;K41(8RQ2mrQs5{b4OOdUpiL+vD{o#tjWs0Gao$qH+RWQ~~e>pj=e1i$o^7S z*%k!kpqH*PE(pk3FLUi)5Rl_udaY!Jk_=?jSvQM#1A8W359KhtOJupen7ad%Pmb|s z+x}uU_%CSWV;XeR&ia(hD)_}1!G^4%pg1NS=1)kPr*0onYbBfg*~_%YxfzIg^}pc` zDhVn~g^T2-1fZ-X;V~6&sWq`a$p0Ps#5HbRJe51Nr3lf-Ma3a!JN{g@^EisY(NZNK;a}u2UX)Ff zNB`7e+`Cw*?`JQ>+pOs8Dci?qTBOT<&ABKz)sk5dxyhNxg_i%u$cw4; zFPP~;iFC!Mq-SbtBKMQWsC)skP96S5;6@S7iBxB5UQ{&AzX*D-Tw6NJw;@=vmp5@A za&FjJ-pX5UBbP!t%eNC{FW;m+wK{jbv;4Ru_)uHE&O)l4q|z&2u$OO@udAKqZIW#p zU0g<1i`;bPG45ER)y@Fu9QroHzgSyZ@2YB~S$dNSwxY(BfT4EIP?!QyUr*@9{>5g! zl85I?tDLr2^=U^jZ(kMZsEs}_S(_6TNoC2gmaqj2;SzKX-*DfRxnU(!v4zJy7OPYL z*r7T1YyA#6wW|+l{r0J!k}tJYN66KxtvXI|+(a@bSr7uy^^kted0gxFj$OMN^UO8! zQ+{0E%sTstqnx8Hj!*36-#B#+)i@ZDnEcqwImob;Pt8u1qS;;!8w;Q3*y=1lC_fJU zpixQp4|8t}*MBU1n;V22`g(2Yc2^Y#5tL|wM)&T|V^n|XzL@dY9JvxK7Mbong^WbA zw(4t`%5St)C$h9rs_BePmbPj?uQD(PJHPADH=5;3PATM`T&vb^hiR0w)}KF1t7xgW z$SnCUi+%)HYyI9=b5{GVyew!`Q5&?{mFo3%o)y(C7RhAV-8%Fr2A~4T+S2v(1Mpht zFs$9AU+Z1^X6f1>Yd5WS4q0(U?yYl6qKONM*0I&l zYUYEhhPRN2C>~X{rN>-V?~zWtLKSz=O5PM|rH%Xih&KL!M0L@|!_$7QO~531{9X~E zmnsH5dJW|)1Oga<#PX%|+2%n_I7m=W|0HFQ^AGORP;$o)*o?YSVVagWrbIOXSs0Ej zhFx4piJ}>|d8-j2WMkK|W`yA^;xA#7QN=-O^#f1WPu<_?v+w z;P>gl>URQ1mGafDmF{fXvt!6&~R^JCdQmb#Yms+&f&y*!OX9NYQ zL``O*QD&kwW}-isi7qx1A%)XwA0=IMl_aJgY5tw|cQo72jX{&RcB4YB-7p)!N8MO- ze7maN(_2;Vp=5_1amWQE0vG-(q&$1|iMStic!k=|aNq11f4fEv3fGWKDr|GqO)YlR z-E~2Ih1^487QQv+l$^5tk^7G3CDQj|04>S%j=D(zRx-U@pLDO;n3ZNXSI%fd2q*wx z)K1{Z4U|9R0?PA+zcXNgf@){(3I+uPBKiA)nvF~cM&X=CC&7a~^|z01*PoUWEJ4{d z+h1pd5LZ4}U=OV8pofoss0XEFOYJD00I?L^u2>OP-T4J~XU%d2&wckp#tQSe;AMl( z5%Ib3O6Sl>iBm6U$V+g@A0%DyvYsR&MXMjCWsto=o!poDou&^2XWdfalALva6b8v& z_dDT@m`qpjRq2qa?(Di#I2y&+m^_N0aP;jH^aZwnT^JYiz}D1=W0OjNs`zFj7jdy*=d&yxZiXxbLh*&X9Af`pE~5tG4uM( zykk`HIgNueq%R^hH`v(ETO%xc#_l`O3F(nKB9+mX=q2<{wbQ656v)rVHk9hs4Og04 zVoeYKe*hv9{n2WLr!#`WY}eHZ2W95;|tObnO+f&VVJ;t^x=(s5QGiLvHSEY%JRIwaP-!5rz@D4?VH;glVYj6L&5_VqEWFT4IMGTxDU%wtkxrdQ zY47i7nB9aD5lRf-qM+oh0)Z0cFY9?+iT~f4d-@Q6av4nz{A(;TlI0sAJ7GeYdizF3 z`h3+I*Tcq>lZYv8a_C1(8)g(l#y`@D^O5a7A&}}eBm%oL6Q#QSXiMov-H=SNGgzoP z2mUom3itnBIh9fJgoHmR(S-zaF04q8PruD-e13aoYJ48PkMV)tJuG{|mdKm;$_jJX zoxX3DtJ@bOG2az@L@=LQ$AgckI74mF^Hr>?LB-J&06p$I3l_;Cgy@!%$Okh;-TR4X z+3{L%1fOr)C?*mj+Jj`uc&kETN8HzAVdU3!(vplw{{fe=!bKOQ)O={btKDh+rbzeS zbd=n#2C0#HR*aBB^wp8hBb4`I@Ka*spNvfWk0C-P{FwH<%IKYI*m82NlIzoIB&AfM z)f|)n!b+I1+T9X1FShmX_83(qY7cOTShrDA+@!Lg_Si|l&ZW)OR5|FnyR=$4C*n3< zDV70)i`HraD&nbP>AGC+EQFGynfCaoV!Zy>6eo?jE^-GSQ@Py6Q^n@U%N4&hW*pa4 zOPpe-aimeBilJn5@HMJ(iA%E7cEU-cu4HSeQfZ;Y`@gJO;_#Cj)PqC1Z&a{xyNqrq zay!R&6opNuS)K4qWafxkft!?l74R0!SviE8)fTGpQ=^g?zcsWiWBjHwehh{PD*&=> z@=>%#Z%Pl0$5W&Ci29zo6?umH|Lm>EiKdwvI|V&5Le1}~5xP2GjnLKiq(34+!KF@C_hve@6nB5E$99Pe*@$ zbzlkgHCGF__ObM_`1;7F4*4DYJyw9MSrb>Uu$n))>c^pnlK#c?)1mz95i8eHuNJsLViY`M_2@2HhIQWeq|a@a{X&P=)Abwe%R5c_!glHBwom^Z_2-5U*%D1Sy?(zPj8&DJFm?er^YaY~#y-kZF!ttM zX+|&?M1`2GR*u&?OdrN!3l>@~phmZ*)=1#FF#&@aKG%GlEmrF@PRjWzYxDVmMysyg zVx>t=Em3;3>)l+YvFn?}=PnHawX~BFPG%+?sp?L9{7><>*kfQkhpp<>Ts(AbZ%=UP zSir*-d{(v}>~cJsGvd;m8;x^x|CT^o7p>+v1;ZOTvw=r`y;*>0=di?B!n<-iV}8Bd z-@)Fw-X3_vr24*Y&Oxsf*HE5GRP~8XZsU1#9l^k$r|G@kTtsjEV&8eF$mgP#8E-KD4CN}v;ORt)U$nup*P%UNPpT0A*OP8OvOI&gDc|=<* zM?w7EVqtl^^}poJ7s7n@5z5T)Uia)2)o0%w|8{@nnx$;D2oKFQds}Gs_H47a=a{|i zB^QNy^oNRKXPWknWgo>l;|(?*S#u|RmpWSmV5LoK()>xn-jc)b-bN<}Z1s29$Y4OG z&tAgjZb-kh9_YQ&qmfsy!gaq6px+yEmVV~o{=?rB;}HK~$4bMqd+FXc?3|sj97UqG z!d}{-#2jUDy*_r9BRH6Z5_`0?xon*p7Tx)V-gW^!sj(rpsXO(*ny5P5nzD&TnJ?{_4;uH2gO_4U{;2X_fk zanecApRqiUjby1iZM}7vS;k2bKHxB>6?Y>^S4GjAc=;E9@u*0*7%!p6DSBjd3bexR zo=-0sP@6+vtu5W@soJ9s68CZHn~`zv#8OvVy3LCcph~pId1os}TooWG8l)m_<}7sR z`?aN8Jyqx=8vSEtRg%hcw)JYQpQn%2f6XkXzKRmwcU5f{iBsNrL$!W+SNeZ4>&Noy zInT;FN)-QjvwEw9n_N|!>_$QU&_M-fYtDLf!L`*?W?W-cpPQr{X~uu5GSPn<*W}Xm zkh`i?swx+M?6t?3W^KU{p2RuIrGJh-R;~6^6)$QEvP9ff??|_--RPC|O09Oa`YPzrAIrym9XoQx5`^2U~zFC&o1pPwA=@6LZ^s#BP! zByyL`!r80Mp>oq1(ZJA&CKMms5Yu_+AVyhcz~4b{&Y)5YGyVxYfxZ)?LjO;OFLV@K zmBRI0TU~O$EGnHFatC$rS3=KBOBgvHeMa?z`BuMoh_&eQp1xsX%;lBqX>j-4$8K== zsdm!?g?7VHoNEaWy3RHigJw^0p5^U9Hx|qp3_oyYXB70mp>o3S=Mt8YC45lAwGvL= zd@i?Itx)%mzQJ8>B5U{cw;Pw&wmeW|H|APv<5JInJZakitTg$zEkNx0yEDjTr^Hn03yUYfB#&O_X@S`y0PQMEgBQEKUASPQ}-kq{lF7 zozxbecTCdE-7yb!2AlgW^V($Xo4$bydT`mkq=PR{XvW=b9gxL5aKDkwkrj!A7(^<~ z$h(Y(IN&$Eh+8^+J-FAe&}$4U!mS@V<{DS$IgJsR zsE^IlCvNdnjiUqOz_#Vn^IcWvaI5-GmxT+CZ?Ni+y{e;J@^)BG>2WityUNDrt*-2m zMeZt>mGFA5e+%!jJ;#v%+%}B|aqZPu#MC?kK_dim{sXWy{9BIVZmmJsdxzf01qjDw zlJ>xoJDIhb?F6n47KkNDmc4W{VmJH71MaHLa)GT=|JJ_o3w!Ve?srE-vnjAUTh0{( zd!s}MiFOJ@fHz|2rTINqwm0Ooe2W_d#~|G9*T{va4*g*GpiNtf*So5BJ=xx6_Lfzg zLo91?iU-G|;X~cH1sQh$c4Kh4Ud~Z6S(;dx_BiwpN{OOVFxNT_DAUVW_01@|rD0gG_)-;nzttW-&`s{HC)R1%In)@?N57vf z&p{&hNhC34ct4_go0IE98cz6s&(gC2b;28JqQ7GppJ#;CFg_`P(#`zWS8t4c|M)qA z#mNEGCw}kv4WZQU96vZgHGUfIAZ7ft*9MnQRwLNK9Klc1BiJ+cf;nCvkn5!J)9?kV z#!q`~K-uKP2uh?3OR)C<3YPf$JA`9eV2{Kyf)aT)kqqoXjWJY-6A5v56V6SH;%{UW zVP>Lzz?Q@yhE9UTF#xO@#Nh;n1`BRba9D5Oc+guFb1Hx|VKAhx3h&SN1bg3L4;FL; zCd*o4=YoPM`)H3P>a?th*AMaod|9%v>z}jN(v}J~#WCR$;IsG(o%%*63}N87#XmUq zb~^vn3kuG!%fEWTsPip#BQ5gVp>8C`9N}z-;SJH1CduPll$4h_^yA_Em{!wdO9OT* zXVsmpEuV0frEZ)B3zoAavzdg?l1e2Rmz_vsO{B@8f{yk;xXr&bdPRDePDa`OV7MBl zA4vc}TeWdNXJ=0jYg+^R6s{&<&7)T?iS<}`GJbvx(!;;d2Q>cR=i4d##0?n}XV=?= z!llL+cylqH3fh+UF0bpIkK@Ght^Us;MFMOeDA0N?)-&O6k~q#zil;e2*?CU=xFVPt z3 ztnR7?m#(a_xUI3-U1jkGi>uvLc0POzq26ZXTo&(&552g*kLd6*dadT5SY+(@PDnZr zp`ovaWn81@Xr%I3zEs~WJ8DA^(pS{R#=NMpj$;9jd4im@sCgOmM~tm7sEOO_y%=Yq zr`X~OdRfFVjtz44Ek@Z`?m!76{rJogw8uO0YgC2|=NsD6RoU#-oEQ|qMJwAg3xvF- zwEpT~-m50be<$wUpnn;Tp0B?u+BD0T8;|MUr;cuOSeoM@d>X*!F9}*}Tlwax!lZI7 z1&I+A3&i5!)p0xlVHJnR$3q`s41HgZKRG!MKp-cS2%Pap0NsB&~Gw57adZVxWU)xQbHItTX5)sKavtX*xm8Ezq+;oYEl z-sL;z3ALr~d8)#mY-hEns?BR@$evyIRyF-9-N~MgTRGt*(9enX5PJ&jv^O8trfxzp zG<7$RDO;0o`%z{tK|LFoy*SHvLmJ-UTIbm0aXI$glki*d{`(R*Lg1^(+P8;!8JH!{ zufLqEP21XSvi9?q$=aP_4L)Z;G43p^fqO%i=_`!cPX%T#;t2h>v@HXlAc)XLN3h^h zY}q)Bf3VxUeJA4CSq{r)r}o-@hu##9bi;S4oq_nL^vhAY-5&m;^Xq0f3J*ayHc{Oa z+H~tyI!5n!`;M*`mvI6VpT7fnY>Le_?;Rud!e2M?OVQ?#xf4y z%DJV1S(|8C6V2EpE#u`*8J;->YBrFo1nzCLXpc-6o7VHQ@WV03nk&ydja2Dw%cyLi z$VOG<+dRJpe5P%bGEpAhxlYQ=OU!ViW%}}HA4){Vt#}5%;8^5$_?tNyTM@n*6BmQZ zkMI#;oA&rP0&G78TkSfsEfZsvSq>)%U3#!Y5GGjAMc-E1q}O_Q!|-55(E1y|A&F$7Jmg3ex+| z_$AjF;myROKm7o)4qaJ1#3~f|PUDB5FlzKB4=&Fo8CV33dmc2GY8=_BEnHCREdN@o zxesR0a4tOB1ZA<8uho7Blc;RLwCBUD5^qU=G|$%DFgtM*@sVPLBet4#nscY-T;(x- zQ$(pA-Wa9^4#ax0{ncK}5&Oz&H58x7X^hp7qA6VZzDazPL5H8$YGQn4zNYR{&uEt7 z0SZ7a#Q=vMeX=&GnZH&Ouf7IhrhU+9G9V`? z1MCaF8){e;moRhkLMf`JNB>ZMdyy5moV3j>Dpfp$M2N<%f>Apuafz`Vi&F{3a4WMsLp- z-?LNhInxScL%0Rx?t`2Q?Uq$y(k}iYgt1cn`Ve6Fz5>H2ndbCOK(^3_)3hS9`Wg#0 zr|E-Pu}9yTsynlu`}R=(UfKcZD--|~zCL(z-6u6Zvw)Km-;>6I+UQIX6`o?B)Smy8 z{kdD;q_?t=4Y7C90w-xN2mI!6tVLGMBJr6SJ~&{Wcx20R1Rs^rpVuY_ zHfLTtuT2~l&Afv-;ZAmA*3k|RVz!9mden667+pxqMX3J`ALKF) zx&YRHA#Y8*nf4VNPfC8-EMFSc7tz(RYr-(rxk9Vyi)TW6u;MC2hHQu(nroM6MFO8) z6=XL?sdz?okKR(MI26w!&-2$z|QC0)J&_r4{%HC7rjbwLShM%Re6JKI}WnpGLmOS6&$pso5Nlr4%b8 zfQ88m5@Y}fK9{NtPh9B5q72~*{k_2Fc(bryRl81yCc8p`PeY!nC}1$xqu*Q2#%Y-r z5RsRdu4I#s-YpBd;(=qGa9_a=?49d_1?Opjy~1bdt@f5rnP_xMjd(5IbZ zY)GpaZ^_%}vWPWx$ZdJoZF$=*FUis3T%uO9nEgtNb44fLkIGsWvJO};wbxlMLEvI9 z|I&ZR9W1y6uBEiuW7$ayru`KoV#8TYbVpZkK(@3^qMy|paLtVVX1TRnowW-KSvO0a zql-lX9SC%gKsEtH1xU>aAS-Zm%OQ{>fsO<^N}v+~EOLMheBpP^KdJ5E6CLeAM=_hQWej^LhJ#geye*prAk8+rq+Hb? zIX2m{#^UR*6>{>H|JUKu{Kg`!WPE?Sc5z4khTC|IF5+=>e^+pNg*!N>g0TfEDtx!4 z*B`BrgCzVPPX5v4zq!A5aVPEK>uuV_V~VtkZ=r%=64Ie?0NhF!-npZE4(=NWI zf}|rzI*Fu2H%PRwSm+>=Frm=yGRB=z^Wwx~{{>t{3*iCKqvsJFZbh2C0ubysJZQZ* zcny05=ORzgW%26k-GM#LdaI*!o9=wU^?Ea@K>$w4twTl)mGLh0^jSwyy0Y;uZ8Z1q zIA>Yn4i0UGsTVGTRltg0V!2ZWIM_vM<@w_JVDEnJ!0M@F7G_5rz9Mg^8y?KN*c}K@ zEu*=L@AsHn2d}<1b`kI>&30Kf3#z&;EpjB#a>Q-f=(fD?wj4HRX|e2TXq6lb%2o#@ z+38%Ew&BfUa(RKsT4+>zeDJyE0Iut3H6uIKnV>5&MV??`(FY*o8s%}Pg7v_GDy=f=^^43Z*Xuoq-0t z`;oxJV9;V`usNt9JKzb7IWb1&c9l-PiyV4=U>~>oWWd{UYZu6Y#$7Mv@A|(KBhgX@ z^leVRbwlbk!t3wRZh1lo;%BTKA!zb zJQf7EYQII&GE(;EtmGky#aFn*1 zdtm^ILlbtvEZG!&CuUjCa|c3GSvnF3W}=~qU}CbXcFitI@aXDPg;!j2%wCv4#n|8s z`A>U%<7oE^99O$7&2GzPx8(zHE=_2(nhROvcn8e$I*R{qc)wslwg(^YCN7RpRo=S- zWIW`_{)@E0U5ZcDZ*9|U6b<0s0pPCfsewutFLvHvk9z`U1YKtf&YU7{~7!~>)92+e>s$+yiMT$n7#B{m*uz#|04e( z4;hm9luQo{Um@^cF7SVaz<;^G{}lrNh1|{9hsPUoP-}g}^`VOb7}5mjnL| zxm5d7RGps;yeYFdb$TxMAsF7e*h4PkO$Gewl_oe?n1I_$7Yf|==Sg_63iBkqOoe$8 z4yiCt!c8j7lkhGT=1I6&g?ZZG2~4O~H&~hQFHi#fyMu!-_gJ#@k4WG{#ZV)_re#15AyNoywBw$3svWBzI>cyB4U2}|6}jn z!=oy)h41c=kVGy!XwaxZf(A_#l{j!DLdG<9pj$hDauFEt7DZ8KKraneThgdA`419y+^r z?NwE)R;{&a)oqnOy}ih4IZ{4{)5cTqLwJYmH<#^ag&mI#k$g1E+#6-9YZ^=|)0lgE ztWIKZ!ug~hCGdZEi6D!nUxJ{Oalhwc%|5Q zAMuIJGj;oVtWr5{TG%hfPvIsjhnvXn9ENm(%oLUOq=3!u$FhJ;s-m$kpJQn<5ZPR$ zKIMn*syums;o_VU+wvseEtiyVZbEzQm@RJ?FfyvyuK*Vm7AdGv0_6aTd8pSqY08$3n9g^1J}`}1~77A=Pgwwon1+JwSVGG{n5EI^(Yx*ae{MmBgRC~R<#((Cef zhb~C8-)-6-c3Q35!*%X_yB@aZA1i3pci8hk)Bdv|f6u&q`ibSdHR^T%%^N-jn_k(|hiS#v< zjWR;3+nY(3f8<7c`p)#m;IH}atP9@g@TG*WX7ndc_nU%YxOA=1GJj*y*Fwng`Zq0K zBwwPRgm?$iKj!Ul=+4z&@d=Ma+M+>l2#e9R(e@8sOvEblGYc3_^?CP<+Gu+QuP4SN zes6NEYdIwOr=JL=2@&-ZElic~1VQ#;|_wnHYFC;G#GaKWz7BdX5fmTNcsG87^BLTWgHl@GI=7? zH{=}aw#qu;I@VLjPqX+k3o7eX1Y2wCD!&m*9@VbomSfyOMe^L2gSnC3q;L-WciAcB zP3H}Ud@{z4JSXA=bPA~^BWzRp{y}}5TyK^QSjyiAa>7z!!ga}h88ai4^nij}oCH$; z@r)t0sx9ZCeb&_%^{)lX=loQ(s6VqD+M-_~UfRm~qMQnzRil&nkW(qaS0$KHOR)N4 zEOqbkB<;y+a@iKN`S|A|W~4;KSTo{?_S9d9z;tx#-|BMV z5%W{BX8q`ly2dnZ9gO;VyYJ3&MBKSY=FV1*m@Qv?nZvbp+v`qfl}BY7W`=c-R(wJ} z%+N>7mUZrLJZ}e2;a*|}H_73G5Pd@^4JS|FODIFDvckVorHl+g{tkAADCC<+bXMeh zFp}(q{E1G;uaiA1p-U^j6`U$hSlFYb-Lz*$T?1%kn`miO_fr5h%%q0(Y1+!|k%=U> z82P4_!(YyiRXsDQr+jaf+yv9@){pg;$`e*z7QDP#;zBP7{%NX7IGjW~NU-{sR7_Rn zR3E7dllb0t?9Bh*4bxy0P7Y~_6OVChBy+U+a#VXdOTKcGiC*XQ?rWEcIoO5e6{qi3 znr1saLN{la3(RIWeXsVq4TNegeLGGgI|`TvpVfCX((tV|EBg{=3z@;2b1-9uHj^)N z4iK2d9O8E&Qh!BYb}Q>p-|dzFZ}$*Ai`nn*m{3;{vk%JWeY_o%&qT|N;GBc~`ST%4 zszcsBWFB(Xr;@uww@9?SnX}|f$q%#a=aMyCE6*APz*qQpnl-I|#uJ+M9)(B2|6DMI`Ss7 zrL#Vl++)bgn;@?c9A^0fEP?zg1ZofW&v1Afa%d7fO22_>3)c5GSu{uFtIEd2T~W?2 zq=}ak^d3*vp1g==__jp5a#vk2iRlmouDzQQxTlb>WF>G`Q{bL9BM>+)#86{3{ip~W zd)<0%Ih8J2rEg1~(k}hv8On|K2kJue4LB-j)IQKhELZZSRsB|D$=A zuz#etx1j=6xyv`c97D|6q825xHEqRqN99qpg2iFQ7np3D$W+77CeP;JXT2hN;v)iQ zRe9f-gox|wy(S?d`r1@^S9QY2)X9}6P5rlXhMpPKeGgHR(tT%DdNGA(ZP7obEx~=k z>+dLSw@m1ePY$L=n{$awnB45k?2R_lo_dI8=S6cA9@U=0ja;Np!P$sbjm%i|&B66N z%=Yiuncpty%x~J3ILEyWsFD4GhRclBGjN@e{i6ExFF5ZFlk@(<2EnYoY0NhKWP0!- zEEk)$_B@)b**8aN{iCcEJ(J-ZaelEsoLXGbSW#@*!P=4hj%l`|zFWh^HG@S%ha0@d zty)zMi0Ru3w#)i~wsweQb;P%@9P8TI!Mc^UVn~KB`+EP$)QSeOI;OH&aZzv-aG9G6l7*=3uDHqFh#-k(gB<8`P&ei z3&!}e&yRN^Xvrqj<*dH9+0zk&g?!WQqHi!eimYfyLE!(tjsi3WaUOG+CE8ouL%;GR zdVELj1=KXniTfNibyX_PfZxJq48F!Zx-+Z>NZ$SJRP%PKIf)v_YpVLfUR!RG1&Z0t zQs;ix9OtEze9!~s-XTTP$^F0Th0vX5XL#mbh)(4Hs22i{A$JNMY*QI#q58utbjGSb zV!dscg-Zj<2i-}Z1TnY*LES4T#F)?qF_vNq{d;1t<>%@(BZV4=x2yd>gD(}wptJXW zueJqUr`~1_y+NM9_OnF-1KW?0h?rj2wnxYp*LUDO;tps&%yJ3>vn+Wx6qqSHP&&kN z>5$(0Q|X>1Al-A!wh&`u_8$4vP9WUr(@FB$L+>27DCA8nidhsh=a6*aJEdorx1FgV zG3ZW(#8>=nmC{>brNb=NA7vsZ@s?`Ecu;J6|M#>M zuKQ^zzw_;=#5%p3l1m5F+4DES!_T2K7janycZzS^Vu61ldf&gil+Momyp;OyRV(BT zoRTBWmN)Qjp19JPHRQLdT-NZXu%KPQlOX-1twdlOO@I~?ftUm>@;>C9947)e z>0`-bJrRvWoRk;&x`P+^c@nF~Q^{cx4LubAj{6G*@pxL^^A%V+*;%+-s}|oArG-se z^-*Ez_Zb8HdqQym`^L=>O6c>u?@apiE9|f6)6d4UR?8UlTZj_m7tp4DubumqHkJQ9 zU(u%8UrB=w;5AwHQRUI(^+81o7T@cS2nmi8I4OZ<0xd!dYBUL+%R@jX9HMqWOoDWI zaMlFqG7-Q@qJr`u@dR$^m`K$p$<8blf!Q_@-kSukPbDlg5hn+IlH*j6`8!30OOHW? zMurdnUa+;po0NFob%~PaU8X$Wquyp+{h&NWo*#(>2IiTRnw4^=1kR`rXVH9jv%zcT zK5*|)e|VdHRK%4!&fYHK3Z0aBeh*Zc{hfT;OF%{n@lV*;v*5BhpNq)u5RsL)9U{qS z(gb5%-aZsb&J;;*-7kM2-eIymOiv&?A!b7D4&+%7>j1%7hX9&EQ?NaO0O&kK=92FW zQnUiGhi8cQS#bZ1kBB3eJv>7@NifXvq58{^<6$Z8FxZE1f>oXym)@_U()*GysEaP~ZoJzIEKIME$b6)8WEw zcZ1uUgIQFID$eKbTskZUz3N>W+qio z)OvtMyc=aa=YYflq6n%+iDapGvPqObH4*4eqNB(~2X{Yk!qP&@`zhi6 z5N!En02Y2YmGP^e@oNL)*Qdo`s>D8IJFZ-hUiEuSMUk{iAR5`IX@QyB3G9c!ifFWj zNwn?4F(UdR@%Iq@ov^r{m)R}RPn+cvdTdq`S?m*Rw~3(3+cv2i{lc8R65TA(^46>b zov2y;esdTdge;QnFv}K1kz`+~uA#q+-k?eb3fz7>_GaIZG4zt+urOKQ92%yrJ6~Ds zBbCKo&(<()?e&4uqrs$l_GPGN1ADiUMPU>84 zy;j^ZL!U5KP9`MT3O9LP#9c9`RofaM|MfJ5kiR?J4Ef`hcU0sbpeYiCI(S}{8;xQnq_u?hMc`#-e^tL$oCL4YeT2@ zlecDRR(h|5)|NNb+UVm1l_76xf=Jaum_SVs$yKXC;UZ2T!dwBr3F5^JlK zqV5Ni`@!u?2I}R>sZN=Bkog!}TOF${7ktYqpmm4Cx-)-U@I~%RjQQX372UHv%@QcZ z-ztZu9Y#^Z@gA1I+H<;F8dKgSDF4KxeU2P2dvT~$+zDkGLto<)gF_o>aWYc=NgE5A zMN1`;(|DO`{r%2yfj<{;Og7>#hVQjqzdzmi`@GKIGXnQ_{(e{2@1qmH`-(F8&Y|qK zz^sS*Cm-K>xG4ayd>H^gmRt1XFQw3a%HJNT z_D55tXV&O@*vX!E5jFG`{pN!-i`s}6IP^q^cpAutf>(jI#oc?I)HQJDkL4(*TQ(vj zEw|RBT+BHb63&k${F_RMlUh>VDk-(axVx?C)z;BNt|qt6&A{4$nV1Rnqy+97(w!wd zHaVPjJx6@}DD>on{aMcER(>gtm2gzgUOL^k46^7g`dfaU4t-6NJdBj>U$L%Yz#+05 zu;`QTX~v!1yIZ_Py9hE>D;^uFTlJTh0Va zN7ug{`eq0F6pZ2whkk2@G{IL6z1QCax-sQ9QUd>6#=!XmmFJ~ju;Ah_7AxdfL3rLz zX^KkPiaNb|x!_E6RTwb4{uVd$$_34h)qfx$S%og@Y>#sgM`c?CJg06n-w*;W{XnU4 zZ!Ye-hT96mb3Q96JUn+dn-oj*ul4FxQp6J1LxEv9o?vf|Pf)p8x91PmGP-FQY}Cpa zpEHunoATwaD?fw3$@!JTMKC-$kYd|+iWFMa3h;3l4r<4)nabgoa*<%T z>>eW5DmGlURn%@uArTJ!CbH{yjRbu~Jz^l$fF!n|jrCD7(yHGBrO*TGMEwMEu1c|( zO>BaKQ<`yWnm!IJ(;Yg0dwu$?lp$42*)G92wbD+nY1R3l7c1!=O7gCe2Bcz>c^EHC zBX)aPwXv`0Kglof)%)P7xXeUBS1>q>UUV6-!2$e%x;IMEh5d?oXw^Z9Ga#p)axD=i zh1g~w@SpPse)6!1s_4@9R3G(|OX=Z^qJu{%?Z#xh@~ssb1|MS$$*2}d!BAQB0|Lpp zVVCdfCg8;JOhFqb3q%G&>Voyy{B=PqS%_t<7d{H@nmEurfRS|RML zZ;%iHD6%l{)2jZ#B0;|_-LPMX$930*X#{$*TjfG5 z_%CzV_>!BZC+Dg&a}M7csTSowLHT$scj}+eN)E6<$s)TZ_T7rY%o{8mUSxq}<+FS> z77p-xk5AE_{)~>0)KAL-V_EVu4r_CGZz3VIZE2R^&rxbcax}MmAxSCEdwiVs^dcfi zdJqDiG3hN}6ugG~i&#^q`M!f>MHULup1Tr3C#NHlQ#bADLKBGxX~Z+;^rsKWsRkg@ zFmjPqf~T^~ELgTzS^U*R=5^ZTj9K)c#|rH0C$@*;wULG^CwY`%&q*6asOLyyLJlIo zSlU{`nS`YcB%DQ9BzTlDEhl>v5joY6 zuaFC^@}FmGm7edD>o`G6mL9dLJV~FVf-kD9m^s#}r*y$(+$K`h3maIa0jmxuP!YQ7 zYr25`r3FgQ<#LYGC@oG}>^VKvvKm2G4&(T#n?8Ujv+|jd9$__ z#E|=+@Qod)=gvi+_Ij!pc0}2bN{4l;N*|Z^z>D$ZhARsxwP&T-jR{#9c4JyrW*0Qa zqfAO8qG=l+oD9KCSzf<9RDC?ULK6jY`qnhYSUWs>(`>RR6h4R@+2y zU5dMe=c=FX@?C4@do3)LSpIAhg)U8uc}QY15@YTsCh+1#G4kDv{2)Yj5ht3o3%2bP zgF;%#QHJ2tuvTJD0c5gs-UmcVhsX0)^&cZrI!5vqPOvNf@JrC8_#?tV!XFU^%8fG+ zu4<+p?1EA*g)C1A6mF@X)|#}Mw)H+ z$LjL+9nvU`+jk%j8h86h&WgsmOl`&Za}#<@={=)8X4V-n{(?N{EIW0Tw%fwWDh@o$ zX$XFzi~Xf97O z`*bl30^j5+)N+Dry7YOMqagy`zMUzk!~)9oI)Uzhav>g+w7KGmUQ+&7X6)Y+C{_$u_v31)Rc(f~g2S!QP>Rk7^9&*6wkPrEUG zkdSV0my+&|ltk`dU#4=;2);w-n%FvzN$wT@D)%m#j#rrmUM9ofPrGFHfgkY_%O5*Ik!tuOGqh{3QoajOw4k*WVr?ZX{YHlGfSpq#`ih{ zXXvC0p3^0>mnHJmE5_bxME=kPQX&Iao*hB6&S$`ICe#f*lvvk4 zkyYp3_BF};{d3P+dl*#&e|UoultDbsA}DW}{Bc{Lc|e3aUg}c0DN=YR!{YAK(0NGE z`SF?1>C&8wP0lH!u;7on6m-*R1^wl;g36_!kD&kQtuA8$>AEAPhV-A2u2lNZNLMQT z=b5_h{otj#?oBxnGKhz+#5Nc%CI95CCI8$0y9*&w$!>YKz*LG0U7c9YpWdaMZ<$+p zrveOOgT$dPOMENw(gnN4Ic=5Ff*!`ai)A2*srJ%_HgS;_8~@9kky9^8oGap_#Kau_ zl(JQ+Pl<&Ax{S5m1JpQ#llwA@;1O4MOZPK_Lkn2~pTFA{4&^(2B@Fh>`6t6QK;~X- z`ov-;Uz~a=2gXX$BB`0|v6I%}W8R3n0eyY1kvEj5OV4-dSLg8tw8Pn0GLGCWtECKv z+&}EYO^<%qEb>u`9G>zOQQEW4!&J_%r|jV^ID!|ZJD4N!^BTDL+my&8mc=uH+17<) z150G~n8~XWSt;;CIm%SG@sD<5<+dSuJG|x#3=Z5SQvO9@*DBbQ z8+V&ilEX`ywd&XSE|-K?u9vyY1b0U=)jL)uVthq2zzo-`y=T-$=le>j0e24Os(HS` z_BmhJ3j=fisYvc=HRqVP?Ihq^9i0a&+_kVFw4Us`%pZ~mTfKi-M|$mrdZ*#e9cK<8 z7yEOXa+=?XbGdvpu*&I=(;LlWG|#qjlE2m+*UyUp>E_{J!L8WoyFCJpb?S z>@+wZ8qI}<@9}(u%|0LS%f_GLRJie8X!jVuetdiK>u|Ui@ptiijbA;#o&3J!xBt8U z`}=n^urjsf;&%tXP5fH^_)rLaedD^ z->2w@-+Z0I1ZkVM=vTa15-)Sv*B1C|4X(s_WSqLxk3$7A<-E8)XEV-5tQ^<> zMuZ3##BJ4n+T-4$=X@hq3xdjVme@Sondw!iG*U|a zCzR4pq0%l|NF4@K>!o_f^dQ!wS|2=ZeaohwB5}1OuJ{VoSyV}oIiU|p;4+G;c*9ev zxlYeA*aN(Wu1oAsQXU~HGLJulAQPx-QEuTt-HNubN~%j%`pHtGe4Nn@JvArD?WS`N zGF|U*v3vvtI1l~~w_cagC z=aJd;eY`|w)2r_T0eUR?ZXz=TWP)QQ)+kyci90P?1^@YF3god{lz+PM;{x|3$(m$C z;8R>C$ucs_3G@oZbO#kh2M-A2WL6aIQGp9pR?~yqA4;(VdJRYdVxxTU;Q#wVoGwT~ z(}QpFRn})C{D_TLjB7tS#&5Srm$w3e!&bA@`_EA7&s1Sq6-6^upkLq~a-@s#TpFx` zzJXunNXaf$@`1qOtW-;&*o1K3PcdJ9CcNf%r?gqD9=W-=nz!0upoMsYU$9(t zv+qcU_qOo8ZI$}_w(9Rk9Taj-U;fT8K0^u?SbzCB3#=u}1&D}%o#7qD42;xfcuByM zPSuN*Pz0`Vv;y`M|MZJ;o@wO;ongcs5LYR`;f>vtGU7Fy3p5Xtp zHwAysIcn83u$0aXi4X=9tW{mO?`M^)WZ3lGfrJ4_>!E#uaIgaOu4{AWMV&~Rul_PSc_MU0M{~`_&E-{Pc#S$yl zq+fScvirKq1xr+t{5bTP3H}i`1_y5tgya%|ujCSe;Ba0cKmog51f8mC%5mV%3zKHB z$ic{2^1nd@YZKXA+FR9W*qw=HE5Mu^pu9?1Vtc0-gq*I6p~epT#yM)bQTDau(X zC2wPS7Dkd7Mi+Y5E~S)+YH%1U0=$SqJOt5jlU|_w9hoh0KGQpAYzCHs1IKZ5L!;dr zSZZ(q(eC^@uFbp0O!pZA6M8q%UNz%45^sjyWr^UdIlrQEc5e|6kmrCcIe9akL?Lk?6CZPDwTI?@=0MdeBBC zPxF_LW7CZ|(G%aj_zZ4>mCa^YUm`>`ulBL6w6>-Eb`PzgRewe)is{5b4f{{bTJE4n za~kjFDg!lmNDR~k{?nOSsQK5uim9vJ!h<+Zaq3mMVz$PTpA$eY4Sl9Pd{xPZaAs{V`p_GgNgp^I!49GT5&l&U|M z2B?Y4jM_;3>EUA)2!8%A>%T{F)4Vg*y*H$@Rdxu5s&Y2XwUHt@mAgUJu;hrUVcWm1 zp-LaG;gm=XZ{-;p!p_hHvc!;n9;B5U>gv|VGeSKRVeo{quzJ_#F)_ zs1YqRDw+KlPO%$2y}U)kB%m!~VvPnbx|p}X#(xTlQm#-21sk1+zl<<9YK5DH>vq6g zMv8?f-WKiQZDUFw-f-)>x0}m1qF4qeNS=VxVDJoo{cpG7C# z7S7BHeX=p-BfikvZ07+Fi(Yh<75x`)s=uGdJGl&6ZcOgls_Msz!iKq zQYr~T?-`{089_Wm$<@ep`=mLY1)D-_zbockEJvmrnP#pJI0~EGg^t4ho{+0>Zkp$x z6-9TD%<9Q#94-4yVBy>3J=8bcq^IN(ENohs?(ogc3Z$Y;DaAsZ!Y{Q8esces+;1`t zGT|T?(CTfVS+QTp)bAIBp|@7mKp~jC9^OOOMe2uGRLXaA-^ybIr8g4332gf-JMl1c z#agbBq{b8DOm9lI@JDob2b7%(ozJ?7<^r-)7Vr5Ih+4eQipAUOWHY4}_WOZH%;G)F zOVr{m0|m??`EH^!5_Ezx%|P}3B#Ap)yx;DVHdFkKfrKQ47iJl~j&t73`hj>Uz;Rug zUL@zw^d@!rQ=GrVcx3=$q+H(=HPPC&6&sk>StR8c$@Rib=jxm5zDV)zPc<@YaklaM z&2#$drG5+_f8YYTH@&XF&&H5f{0xK+H%dO~j^U;49z1cZFP`2I2;Z6-#ZT^Aq(~)z zDGdsi2H>h9qu13^AOnch0)Lw|$#bpC=P`{`2#=Bab*nN`Wj@QHPhTaH{u{cM#Ihfa zmEFl=tx&}mEBdIyjTC3B8J-Kdm?2p#C8^)_UCPj6WyI^(KVH8`{=tng zYLfpgiTPKk{8L5aOa3x}kXVP;Rm#rvTgR?|Nc*zi(pR+L&ob{jbUuv9UeoP?vI*=f z@)cE>(c+1k$T4Q5*Nkj7BMUo0_5cYWbBPRGyF)bSywt$P=_%}NBRi*=@&z;Hos&Au z+h1aPE=~Ur`UgrE2g0|heTtXTyLq>wwWIqKSN2u=6wfK}*QCtd(E}HbvRm<|DkR#p zi#~Nk^Lt(8XKr8oPsuQ{eersgGB*BzpBTdn+g#_+w^S5b+*isF=8<%OU$-**r>QH#5?2Mt-j%rw6~H zS>nznqW(6xdF7enjDk%gtnQmeBzu_i7|m!KHRMcFm!DkucKEq)_%g=>1=}l+%Z6E2 z(jJuuD{0(R?MspNRe@`2RRIG@hZo5-ys(%g!1G4^)uZ$f$tAcMZb~!q&i}d?6NkxtXnD0 z?PMKFt|J&6^XH|l=uHCH3Wxd0M)t4u{@#6>(eoL7EH+$Y8lE|9I62#G3vZF58tyl_ z-TfuDFTwfn!?}I9b0XE|o6{RIIFHtKU;s_T zq4f6rqg>JCvf_eu;_}Kui#3Bg3x3MM!Z(puv36JR^e$M2jr^);&z zrC|!GsQD$jL?gM;#v(-K0Iq9>ba{@JuT>zQ)z=Y&73@F($QrPNPXf+|OfEvQ=VlLR zR-jipBDA~QVf6e!3RclqIE)b=*e;up%VHHdU*%}|LR-=Ef)d~Ku&v@G8xQ}462u?B z{&B^AE8ZAz6<7=8h+1lP*q(owd+3*NxCg7V(J`~VvZA8GQFl1U+O9X&9q!NhB5OO) z(`u!#`L#Gd+eR~N<>jc&vLPQ|60h%Zlr=bJ?lMz`a;&>_yrip?yC`Bqv1MaEUaS69 z0p!?WsT=9TN1OKg&ebX>?e!LX9AA;&3>}Wka*eivJ-U5=pDc}^{cD^-h7S<;zs7|# zY`Qh*X6{1uhvXb>|C&Jw&2OtwRJZ4vtzXmA8Z4Iij{i+e1d$N)IT(xGMPADXCQQb} z?Cmb{>TXrCDidM;(47%{qT(5o&XB@0zs027ag+4P+v!|IR3n8xck&lBil!AY&?`G9BaMY*U_J2d&)U| zz0I=Ip1(&*ag^DDMAn2397QkW@#De8}T0iw!IS(O0LEE`iguUxUFcR zz(Lk~Z{W_}qAbM~_CIfLPxpWhLF zUHbn!b1=-5A##6W-@ioqew%MRz5AnP?~bK1j2_;ue@yRgJc3d17)F7oCf3t0iw|d9+u)C6axSw@FAXJ4KBLJ?Ejb1|1Wdto~5A+kWas(Tgft4 zxBHfG@ryvq6<>6o{_qy=0z<3F#PR)dqYt@{$!!r;GA2)Hk}(5qEkSwBx3x&~kD=Qa z$rwYgFPdeH+3Am=&$p%Twx>7Sxxcw4ITttBO?dQewlyDiTEF9Nwh~-?S3RP-eSfM) z6QmHUVP-GxXJ$HA&W{D`g+G1Mz1cTPY=VnS?XyePSrW8QW^U*fCbKZ&z=Pv1f9*16W5CN6(%LXL%!#-E%pohb5hnnJbCt%6p|OR$X}=hOFE%s5o^3)Ey=4;6*sE>JEAK7*SHC7 zk(?WR6~T;TX*RK~Mz!#$h^okz<{lN%6oZn3^W*UU3k)q7TuF|Me^QXL^8N|EcI|2M z<=&SdTUe$3&@_+(4aFOIEuYJqX-u>x8CCpa>+A zJNg#2larI*2!|fC8QG>Zv1N4SFH}cd$E}^21H?C&h>}tq`H@a|lqpGjR2Q6F2dbIF zY{sbU0lNe`Vi1p!{&y1|d&N#0Bfak?+hun|#VCZR^!F_c7gvPod*vjV!!D|wOSlhIm+4`Gq;-35zMh}RhN?CE6cjoCbvGV z_|~5P0X`xfWeCS{6AT0Txc-6krHI;bn`IMV$L;wcaT-^)gCZbhNuCi^V;>&vM zV5V7R&?}3#GS`#QN2`93IT$s0a*66UIjz^1Kxx@_4(6))ki7VK5nJd3?>_4@J=1Dr zqQhlnAkLB+-RM5#h-Gg%+lkh*Dq7F~09EA$_i6&v(=JzBbSQs<75l7RD<%$<@vI>g;pyFrxo5b%R&i6+GL<zyyb!DPm z{Gvu%#2;b?sB@DXiZw}ZX%du@YLdEIPFKa+Lu|$~wTG(I-(f)22LDYU-UgSd>5Vu( z{$Oh7_HfUSv_;=|TkH=_h>pKhdnE9y-h}2?4dM@UkF?0XXp5XHE%IrkMLsguKmT=m zsA;-H`bF(sByzNpNSAS=DUr8l8VIDmk?UFe%XOXGI=DUt>73j}I&nG8L}aOTn@Fc= z)@s%DiaJQugR1RWw7r`^DR5;w?0Tbc>*Wex_?4lFwz8*VhTdD;pp;raz?I4*MdPc5 z1K`|ttLKUcwft81r|_Al(e{kSvER_TF7#IPOOQ`}vpJc9O*w9ce!jlB`HRGeNlA*o zHzu1b{*n;%J=CkpyFnqbOjU&%yrLR9ivDFL|I)r^!{7Z#1ow;MxbG9(w?uH4`FDly z4RLsnWW2Ql>J}&W%(pULM;z%<^tXEKhInhfXfw)Zc zu_+JuIGHU9AkILPO*9kMci@n2FpkualBZ z-cK`m|8K%d&Co*eK08~G-m~!jzjowN3g7>T=NIMw z2);4yk07jgKZ5Xo3&KoTnh0-<@xEw;*nCm~|KG0oAB)4qQi-|LFnW+N*JbnFj0j9s zBCwlrylHf76ScNm-QF~Mu))TVHg|cEX>ZI>O^Acp7gayZLX8|gFD+{gomcC!e#|AZ zPU{}&8>${7Uf8r1qaj1px48K*%M-T3kKG@k3fvj=SB>7i*20bMf64{|1VuWcc&yYf zxjTdK{-O1e;_r(VpA{`$GmDQd|8Svoto}%miIT$Sb73LBs3q>L&IB{Hi1S%!Cc2OB?@% z0Bsy4G7hg~KWJzAJ_SsazV6Y`vZsIVS?H$(CxL$cVD}gSH=6_$eH5pk`$eH$Pc;__ z@!Zv+^AzEt5n7elD?&M0kBLY_Y=0m6tQ`KA#Vq(=EbcoqjXMV!V_AzE%UaxAL|}Ap z@d&(8^#C3D8(n2PO7SEA8U4TYvu*74jdcZ2l!ys_Kv9N8y^j@Tw!6wcE9FX?W38bJ z1R3fX`w+z$PUo4+=f>pEn)Zku$Euo$n> zC;eLk0^1_gOk;@5#j@e`YE}+{a&fMEH`hgQGafsrD&^!Pdw`Aw<}mlhEY|W6lZx)- z>bCOB*vXQYFgK#|?_B<;rkJ5dvnqnX>IC^t(BJ=O{OfzP8`N}u zOLrZov}dm3$URhDElbP(LW~+X%2{_HNmw{~|9k@fz5!4IPj%tnAO02p8p)M#?{7of zI&p8Ttc3c;%5#?_lywIFJwtg3{2MK>IjRSun<|8!iFcPoZ|$sPtbXl}=MFil4LZV} z=s_&br#GkL-%vI^c*9nAhFm3b#}{ch|Gxtlh5J>{=f`}NQ>vnJn){vweM5D z;62Eb_$ht=pXFln+Ths=(P!<(>UfV%4iqRoO})AsU%SQ#m6 z1FC)M%xhsxATXPwGhPq+Nw)gkRV| z?CCm>|S*m12t13=Si>)(jRCY%qfkg0ctO!B!NtznCm| zd0I9cHjbVzZz@`C*`t4m%0Ig?7}nd3`=`lX{$8>_)Vq2K&=&WPN~#Z%>(NEBy{KrX zJT!YdF-gyHM%XtrL<~oTj|7T+9E7d*yR?!c0FER&a5Yg*z0vf?RlA47GP+mXkf=E( zQ4h*dAm07hjCVJCbJ!f|X2WebkbIEcyPCH0ri_{X04kKbf1hB{$B@LjEiHnQPwjY` z$LSGJVz2hGz^k8~VqQ~$Idm(GmKj@-;uTpy!!d6 zFfZ(V_2AA_jt(`j`OFLj!&In?{gzOkII)XtkBax_vG!N{U2Xafj)FRMNcf6E@rks+ zgMsc)X}Gv-98_BNwL-(Cf6i5_fjtLLF}J>+EAAJvrF^)0cQi_eX9;z~MI5&ET+La= z-KB>DUM6(p7;L9qrVWZ7AQiKx&s2X(?iuh>mcuZa$C#H9xa>1&yw!@C6di(nh>6J4 zQ1`QG7Nr>Iy0-_e5Ln;PpGzdNVIHC=*giejTatA8*NGlte>n7Sp+_J)A0A^7kj=6M zrLy)l^wN>C6MJau%jeK*?GT1378qlwbvWNKCWulW@JlG>*?Sc1FjD?HLVaD%lzOv6 z-QT*3eMO=Ci2XCe)|fg-tX@ZW3uFuT^^(7niPSkl~g5%LwiORP)pfGAX#Xj_YLOs~KHMzWL5uX{Z` zOf=Pww7{Byk@Gt0Jf`A*we54eIE8JgxWVGivgzMDIc%oyQKbc5=g^~2ihIVpGBPlM z;u@v@-2J6FZbG|pGRu=H7r$CP@7uhmtezC_-XstE()I-Y06U-6B_Q-lEN0X{#8KYhmmH_l-^ ztxFWd@XFpGTyBpN_iy3rD|6wj}T%ZbDl5Em&F1hlGL`a(H(!e-4q zfy@Y6@II$6hhB^<3bsX&e5MLa&QI0m<(}jh$TX`(_UB6Wm<&?v)`vQ9RyJnA(aJ@Ld3NR9awCrSw0=0VXSe zd*c9?3P5!n;4TF)HV!ac0Pc+g2&HlTTv+l@-xU)CM#YW}U#i9fuJsQ022Op3f1QDzG>X zqk2@S(I4V49g@!@aTqZSRX%zg#wiGw#$lF5VSW~eX%LwFILxvr%=kFWG=WKp!z_=& z42#1QV|fPl&5RPKvN;OVFAg(VVAjN8c12;5;xG>g%&+1wd!sOikjDs}e=abdIE+6E z^IjZgk-*#HrB@yi0AJDbRh{E) za$4h0U4h$8;8(iFqh%$NUv-U7GvihpQH=ag`W=B^_+{X+Ql+da_r=&AbBY2Sb zMz5R@kbfJ!!ssFhPAZJ+bwhO|?rbhwrUn>X36+pmyb%UCQ}QDfVgm$LG@at!XO&~$ zzY#?zWu9xs?{W7aTjdYR#F`E!%2JvDZa*id zI6YyD8=Xx1>9%n}uPSQje&i$4LPx=(wnAD+*)xsBLjW<&lZ@yPm4iElwCiPL8>qS$ z?M7))5@81BbS9!9gHRinu7gRH~9gRice<3pWQ-crV!GXta%!f`e9G zWBXNPJrL=b%(x)AR;+ahRI<0RMA*XOU8h<_Tl6yakcO!sr7W2_ba)>hXED!Y zI((j`2*OM2(ufZ?!%Gl@QXuz5d)$*qHFqe&{Ia4T!< z5z}Ah(M;i%4xACCaOgUzg7S;PiBk?Cxo?jMVz^f90AGz70w3=^cdRU2`1%&TDkx=d zmQnA$p-~hSdN#@q0j>I3$<9}FtD-k#9Sl264~|=}m|?8h3iWgG!FDsF=g+P*N6(B& z)ad!SC*q@LIVBoMgN)=hpLl5YW0Hfx6nUs|^znvM_!!s-4)@1#@bomtz^deiz$53& zY0||0PR7%Y$}jWiAUIG);wvMGxu*fA8Ejvp4wgpc5j~fV&3M{@%GIksL@_j0@8a)e zD%Pc9KT)xJ`Fp8~9j9Us^3IZ4)pH^ptFGY7Fn$ibI=~0H+?qYhPfY+6f@kZyy_>B1 z$Bk8soB28bK-T5;DxbUoHq8XPK;PYH#^uBy1SKFQcZC?(6+(s?6cx|o@~#l`yFy&o z6{4amL_uc=@7gLLEEKZK@pj>lP+a^R`m>6V)W~Tp5?jLi_z)B3oga~2SlyvNABC~| z%D9hy&&bBAHB$RxAZ*^X<{+|wnm$VjoNJvw6+XCoz8VoSKf4WAWz_D+c71PSmCCA^ zY(o>{??Ul)zazJhYqbo6W7KEWjdFsEO+rfcc6}d`JHJ(YPpP`i%eA=s>6;?pQbEI!%RPc4^=H=zr|7$59~DC|qvG(rB~``oVKc1f z@+l5{yMlbf<7Vr1<`H)~-Yjr4e8Qg64WGkXsadGaJ8v-k%kMDP__FA~d5YivHBEpf ztS>pGEaS~jrIdHB0W+6=+!n5FqM&F-M)6?o2jP1mGkTlF{1Y9m%5)TNnZJhU#nm5} z7%Z~!y|H>dZ}N|oNQdubN!wWcZX|B4dc9M^K|F( zI;9r5cIo@fl(x65UPY}m&x4VMl&P**Q6laFtY{U1q*5}4q*}cbuxJ69)Jz1%3DSnp zxn1VJ$-!Rp+Ey?vDfr6SxE>w|hce^yUrz7(B&YX>qDLo$XU=Ee}zza=JRBe1PE-HuD}2yU&+S$awaB zVF9P{f*PCXH)qjR-uG0rt8DgMgG)V=UcJ)=Fu}` zs7z^3X2het=vA@;B@0r27PVwI)WnwEc)gZ4@4A=xYhm8*vx~c1LUI|(=(!j`8;GPs z*Q;fN23pB`B-x%G;JCld8}2qgxr%X<#O^)W!}~lLc!t0dHt!F~TJ@)-Y^;|39ZP6? zz?0Mjx=kx>w5>q`&9#K!>x58=V<^n*%-05$N_522+VwSVvT3ZI$KR7=X4hYvPtbO3 z{Yf6~(Tyb)r&RQPRkk&vBn^cOcJ_$S6l#)2=Ca|yAE3jHY$>x9dT=H@p4?{hQR|2UU*^(!t5AclE1^WJ5szi^rnqhXV?I5(m)e0{0KB zUBeJqo0r7TR!e2%5Ia=DHJ*T`;NIQojyaCLROp8IL^r zF6AK^D;sO^JF2a_$BS^gg6FC1i`D@cNbbcd9KG+Q;!}@*jB%E)yZA{pzFDxm+x&AH zz04k)9lepV_Q^P^)$bvJ;z!ZDeqMs8M#cxR`D?5-@0ViJJ{d`?%bY=U%3rJcBZWF; zd5{VERZ9g0txD&wntrd@D@E%e zw~eaoONpo9lijM}bL62~{S{7oa4i!h^@^9|ej#vK53!~zK-}~n!iqd=E77)a_ckS~ zLI7AKku}{;>!?>A3hQpsNS0RQHJb%yd{C!j7(Onga>~S;9Gp8)7KQf@vp>M z(sQL+?YriZI92@!%ATKfq3UE5J!QN{JXB4iD4?W$O{zL6jIQdPa>-bRpQhuU$VjCz zouOT4dUaY)N--wqs8Q{AG#VRA{ej~vPDLm8BKH#_DXa^#M4vKI6+*#md591gP72p9 zqpGF{9*;Z1VqLg-ZnXZtJ+1!z;`MKq`v0_R{nwlIC!YF`P+Fz$1M*N@E%BHXH43sqXF*51H5c*`|MvDH69&3acaQ$5MmVAf5Q zDc(Nc!XKrKb5~09uXd`@m{f+9ujyBpC zFWsYNUC8nIdK-rp^a;MDj5izY)l1EuCnmIJ2UEI~egnrgl;mWjDthE;Db*D2u9VL+ zId8XGf;Pw4MWOy+7R= z)+h?~`p-DLyE(9ot5dr2hwKPClm3y38Kr*`c2KDPgxNg(WLs(y-Dq^8lf`KWa7&tb zJzd4)8EM*+O6Pc=$f0YH-bMWT8si=~RxiDnC%dgaL#y%;?|ob#yoB@}-p{S>)X>k{ z>a8A6TYZuzwXJ@y=b=z9eMjZzdx7ZjNRDS3IlyzC36jv=-@88p>{%78w9DvxUePK` zu{2q)Z%XMlF7eJwvvBJp-wWVtzV};Y$x+|wV!%l@)7c}dd^oM&zc=pOvBmtLkA43Uy?zpz%nK@eZG!->F ztK^w$Y!#=(7t*~C3Jxj#e#%3Wy(Fc}orWtnjewueiyw-`uPVViLx!`=o}1|`!%u^Q z6PSUIR&+-a?08-H{zWqW!X>G9W43sm z&k;=ALxK;1TU=i{eIs7NOvBJ*gKHBmRQ%zI%N2F|raQ8?uZRO7xpKVMgz5BqK z3SX5_c!(1=NJnv2U3-#aNvSWlinS>@_1A?uE8pr$9d1#HQAe7^827NO`LqST{3V2L zELjTDOlR10GxU;W^32prUS%Q@y>rN+Z)F7}fF^@orZ)>4SKjqN_!TjE=Vb+c{)n(j z92C5sOwTyqw@PX#eaPrE`!loqzy%y@8{IJ?Y0gcyijHKh>aUD>)NBi{2m=J>`i@E{p*gW zTDNi7zR`ydEk9?5Z_13MzQjz8F9j02^ffXL5j5VG*+;dGsoA&b6W8PXuSRy&=_M8H zjM9A%11GaQYf_|5C)PNOk!gk_=NP-pM~*X!AJ$7>9nhrXdB%84vgEutGHHELbagVD z&eh=0_<4pD#XvF~e%mVavN!3a&x>~<=#m-ZUZPPEGmt=u<`_|QOg-qk3m$Rn3Pf!A9}6rAqo5o~k(8QG+@pb*U7y%gTJ{Ckg&?C#(2*w{-4-m3q4I`RFMSVu z+@+;HkJY8U{;ib&C=6SKf9FEK)YSlV;JLlzDbD^$|1m5i@miLh8Yqmq8B> zZ-ZQrg|hqn2ibxdYk%AXl=pmB{<_}HFdsSQW3c%sHXq~6$6e-QHvZ;v@cEkTC_L(U z*YG@#v~$@)tNU6<-JvA1kBxsEGSF>OIrkhPiF<-vy-HsAv1gz4o3Xy!XG;s~w5t8W zOSK&OACb$ZOM5P~V=^$=o_`!#mLCe%^F4-sEPu%|dA|I$&sU|`=PUf}^A-N~`3isg ze1*S#zQW%=U+^zJGyYbg&KdDfR`@5Mj=u~1-IqgB3>r{R&J7FZNfFGy>cn3qg{Mk1 z*D1vU=W)cRXD&6KpPRG_Rlo-8S`L@xmekD8wXUN6TrBrFow8l06MK2KaPsTSOdoL| z3QqhZX|GRQ0_%$?1^)1q^y2LRxXSjHTE8pFKgB8+Q(X3L3z~%WLw70sY#WnvEw-9z zkpkE)Oe&YDHpM?mBztkwWM+RT;3R7uzZQJNu2^s5gj@cnxP6F=lU8*%B^lG#+X_F$ zW%sA5c8e7$gd+O1X#Hx{7tI#gr(ssQCx9hXR@GR1V4$%ooYoCSw`Eq(qfB7uEKBqJ zBvAiGvL!Sv(&JbwEO>*%=S8%~(X897b-rYukkRaLlBK(PZMo{MwCd;B-ofNf<$CE5 z;2d;m;yQSi?V~)m~a`RZ{s%3zMYtHx+7miO9{lH3_$R3Nv2~qgy`5#a4lf%oci!gE z+%!SGquWh%P9@Ey#MqXT;mumrVQ@4LR29?E4(mqi9{uF-1@F1{Yb$qZ%cZah9!L;)!+Gs+!0NFplkB|D)~O__?Z3)Z+1UQ z+N@}PIJ*8x0tS1#X0b$LVYsGQMy&X%* zR?(h}JF8V%Rq46VSoipe>84eEtEq47Z}~1=QjgEH8INY^-=uG|8Bb*E?deTL;c|#r zwKbR9XvO%^st*yY?AS}L?##*)>e;h0EKjX^3*W$@CoUuHIK-ro3NX12BG~B+R=t?6 z0=-^|1o}QD0qro|{H%eSXQo?%2lHf%b6cA2nUQ@I_M5532ymacO0d?dE==Yf%pZqs zMu7JSh4*dXJtuu^wW`-v~?u`Dp|r$Y({6&!|+khFJm0uEdy?hRw3nX5HYh z`W=j$ON_Zasm_QBJDsLh9k?V?p+hf3Dzr5c==+ugA{9FR02R97yvR1MAP#jc9Zlf= zG@A=79QecZ>li8=AMwN~rIZ-uk+K`5;1I_nN|rgwESP1@wlF7iU8I$>`~`kiLPz?B zynMmU$9kbZqE-a{4M$C*Ok8%dROtUWWi8ub#RNYlQgk1Ds9GCg)jO| zP1cM1_a%Zk2VgFA;@?~xqeUwa_K8)bRn?FMbr_gv&oC;iMW&oo)GwB^b+g_)eByg< zUP{?y-p9&WU>m5`C1Lyenb5ul-mi7ghO4EE1*--3t4eAXUM#tR{Dq-qQF*K0 z?)h7g^$!YGMM)9$hBEB)cVYv%j*A;y*%|Nad7I4hbSow6(j{hvx`C9rJalZ2QvbF3 z8ZkyAYZKW1oCZ&-+na$SB-fSUx_xQsb)&Qu_g>jyOMj2*EFnJm%G18P<-527otn!? zqQYkU96r7+OK-Oi*o*d@O5^Uf*SsvoIIc_e9rgjA6Mb_&u6OJ;zR4>3>rx{bPlPM7 z8K<p`0G!?S zn3`ix-;;jQh)}w8$;g^%`5iU$t>L;*#>krNdMY*j%WBk+MM-35h8A#U zFHuS`^fih07&9DHRK`FguYp;4T`X39l(Sbt8$Vui;p~+*G=E)kHB46OcQe0Ut2D;Gf%Y;+Ilf(t|!^v0_UjQ;-yn zlCOD$=S9MB+TzKQr3oU;C?HIksr5Vwk&C_b%{FSLfq@LsMwA`YEm;Dr&2s#LEN*lMd7d5=b;byr9m>WUF@S zrefO&Dz}nW`XNTUO*iJ$@!RIcE-IS}RS{aiwp@f#kgIYR62ql{Lb=%d-_JQoniSl3 z-+gcUe*fb|^EsdMInTL2m-C$GJf{aFET4-H)ZF0CfHe`PdBT~$6AAGF3PLCBUK0Uk z=FmVcB`~1_w}2UIS(c7d-@_nA{yKr&Z_i(E&u`|IPiciXC&J-bUmMO_-q^q-wk+q1 zRGtYxfIW6HK0q*gkPXCrqorxIj7|ed$Rdh`1EYPt^FH$$WMeUvu>NdEOh}Pvx zLe#8%`LP(83CW*BU}r-#kL&ON32WI&ee1=$%Y0j=Id}~>6CuIMTQWV(m9McG2q~@1 zQ}52EXi!ob6{10-NAl=wp`V%Z8TFi|pQC5TiRTB3cqWSlG2(eGghK%-$zb;27o@;R zf041f(m8u_ek@NRo3ebHa&hDZCEq|VUkx9iA4EP-#hS|`0p-kA#8UD}B9`|^#UPdt zNS_eM;gqWhqWDd}3o<$IJWg7&=n<-dN#+)ULJs)|m3&z!3PFhE%R;bpf-zM@K_JKA z&-gBgqgqSj)fCvb2PuGYP{_9n2?h%DVq8Mbg9fdm=%Ja4Z1&(Q?l3#7pJdA$eu4xkPrFGaWq@4WC&=g8gY9*_q3>r z2tf?1jG$hty=a9b6U7Cb`9y7mAVTZ2bM3ZO2nLhp*x~wi%PJvw5Zm*FmUcz^Vq0#! zF=kGT;Jz=d6^d#&0^T|H{12p*eL`2Sp&^RftT|vi4((KK@!vqd8kBBCq!5a_5ozMM z9z7+MuK5fiyCZ9pYUbMAQCxCYN}n0Zcr@&XxH4PfGOH50*W)A+ zn;#f_LZ2fFL1>Fp)c9M(_++_{m5b$s)3VoTeyZf`cZ|8|-lBbI2#}nL;$pUs`vLd) zwuJrUnS>ZP{fJQsBK2Ye>C>o;f>feNduE0#EFL}Ud7dexJ4&jGZ;~06W+J$($Pjao zjB*5Jz@+Y)f8G=v@O!6aHybF9!M+t7-82t6jCtS0fgF$GPM+XoO)vObGYMuWWV&T? zcTMVYBefV^aKV{xVR$(jlo+|q?Hibc7WKH@*6b+2!KMc{8qJemh*7Qp0(3C9fL3{m z8gCBvG@QYQWMXo36@_90^aUFH2bZOV%4WI>7L|78Zm&1+p*+Wp7vpKaBY`{mf!7SV zYFZf{D1DkczxKvp?ldy$}*~;Hq{@95H|2Jf-ISisx&3vS zUQW?J>n-?z{YNNtIb@nW;PG3{l{#tu#`2vi&EeIN^6jdijizUs+TXAjEb`3`A69a*kY*8tJi&|- zId(2{NA^CD!|*$KZZZ79Dc2}fe2hM7uy=(~(aHdbFerYeSRPsGjJYKi^b(!eH#76_0dH{&RI%w*MG#kRHZV6*ZrN|Y8lMAuZ0JNZu5*qW$+dVI|^v41Cf7Sutn znfk}Sx38)C%bE&`@*UPpiaw#LK$@JBCwNPY<$sTH-Y~+!PoP5xRA~sZl^QQ?W#_UiO4nn^MUyh_m6F=3Z^REr71(wKPXL#!%5bY&}DF_!Gr-1~sJ zXUyvon|Jf>M7(K0qgb{{&0DQ`pb=FvX&KU+WRddALBf4G@e#;oF`kUW!>}*=;L?D>{ugw%hCWGHK8-s1+Csl>VCG3R68tEl>`|7AR`XMRdqhL}sdPFr{)M|zM6`xC2(?w0B!5t@(jJZ+SndtE2>Ns0sk}0P9eH|C4 zOLO357q#zr&v6}J5g*!%g%KcgyV{>#>wZ( zvZiiIx5#|7inaKX^DPJ;`CK!#V=Q}U^M2d9f`f+VpsaQpy}_Pm$ogjy*wzGom}?yU zHXm7>UN%y!Gs<^%SkUXzpi#;9g(aD&1hPk+W=N5J@^Bc>z%hR%Pb+~svnhHx}u?Y$+ z>J(k+Z|hX@B;~hJ{@EoEKFpNc+`;T&i7IR-Yj9&Ih;J3f>Te>#gFeV?O4b(yx&{WB zYhW5X4?K0?sr=)s50vkbQ2CDh%=}EtCT_OKQF)S$zrM}iW*NUC(wR)iO8SBG`cY$E zmN73!Sdpss>hc|`+J{zuR=!=;dv&py86HYXJo3}f9lB?bEEE^{1fGSRB@}Qx`sSaZ1x;SLeDr# znK-VKxjfdP$6`shl2q61Sg}be**##R@HgRCpl-Nk^WtMEN%;7{VcUOm(E3A0^dYvU z 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 =~%_FKtFRR^DJ$iRy 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�S}s~Q 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 zΠ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 z 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 kj@?GK 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 z zhM!?eHy63{QsQ0c8JTC6@6q46iR7b8nwA`&@?LU$Bf0Hmp44-AObPy=J&EXy<>b_R z%aRH97gYqS3pl;Xp*u%9w4>U9X%>Uuds(j6vY?Qx;@?AMHo`_{k z)~BiuzFIFj?ngZ9E7!DnEZ1>zO`At^9mI7#-!>cn#8kbq;=xL_CM%A$7QL#z3)9y1 z(fWi6o@HKA_DU>EW(%3coftVfgY->}}+EZ-?RG^VOAeajwK z3$@K+5dkcef#v=*rekvhZ>VD*o#)|#UOkZ!N{&| z$gb|h>)I+?t(MYM^r4;OJJw0bnkiX7C2Oh96SK|u0$k`-BF{6?7h;2r1_yQ6b1gip zOrGGZigdMXXFtYiBUxvQ&N+$B`EHozOeF87&LL}wOc^a}yJf${&%m#_Zph2{$*VPA zGY&l^HjElKWdq|4z&Z(-Cj$Ef_COquO_?>HHmN)V9rDfxj@|arFBY+bfVCVO#2C8~ zi~X-2yUF^8)%VLsh}&(392vbto4^5dF1Du127uN~-TiOmKU125?4omw!tJf)t* zZl#)Db3HkK)STkQyahV@Xpm=qnB(Kb2+R5Ik&cg(A}syObCOcR79{uIm}BK!7ipPa zA8MUXTt;g>Ho+$Fd6e};m+F7gUw6KCm1ohhVPhi6UjgP&)TYg?6^W(b=qo~U)PVe(qGcn=L6bm zFZS0jZQUbnwMyQk_BKEru$cNj|0RDrp}$;D>%`$gAL55CZ~2j73-t1}Gtj4K#;eO5 z1~S0#1rO$ba=@pV^AdCLi!$aMb6=KLx~rSYFQokHD&}2$lV&*;;XWTC_11l(>TP~O z{Hm9KD{=6R$wBka-x>_>k$?UXWW;{emknOkm+VR3BJDK&tD`E-b`obsf2N-Ix6^%2 z)%Pj&2~QI{(jqu0Uh2o^GRBdCxg8plC(Jiv<(Co5EWQI#CG?tY8&hGXN7A!-HiQZE=Bezus~ZPi|tn1yCJ6@{U}?H zHT+ECGZw#6R(N}VQ&#w!L&UF{Y)i)fw0wy8o$ArGLT9E=(7`xF{D)-$ey0H$`nq1{ zeRDO$|B4;-0`w$xZ@2U=xqF0m=>6zEB`T!O*)`&(3ytf^HD|FjX~Q!woaDMt3vY6dxcNd8*JXOIrcKLpE?8UIavPhw zk2%P(ox}F4rB5~DV?T)=ZleEY+mB4U`AP3h3!hwe(^H&Z;e4~bY#KT748K}}-lwVl zd|R&M!IW{IexdWZB5C)3cieX;b@ZZNr7UD!yK$V!Z~3eIwCfi6df3lz?&rIXzGCssWdG;Hdkx)%T&UTv z;JeEQpUHQPH~C=`zWe%3eO;2tbD`~dPUb6w?uDlt9=MziCt)jn2o2uJ`4DvY80W*> zZ{j>NfG%b3K<0YfB17;McgnxZ{Bsc&nTznvO~_n?WgqvtYmYfsL5%gDEc|J5Z@g#B zVavpq#36hx^B#eG&ORZR@p&?Be)gQ-S0a4=q>pDdcHt}eSMZGFR-H_rNLiBO`{F&X zV>9d6&K7KFEBYL}%x9;Hui^rBz4&FtUNQPM)1=k7=GYWh3-bhL8-RT>Hot>?LM-&x z7`w8iMfdN*rY;&J_OyzXFvmzT7xEqNYa*JjVH{h%m_F`@?pP#rgs(Lgzvy24q7~46 zBeF;8e)4)h{Z)3D2g~jr7uuiwH`W&}eY%bR8sT-3=OttC!%&Zu{VG1g8I&)+qE$Q> z9CZB81Fe{PChA&$eTJSn_2^UPp2Je!dHjZd=g7u?I;*?3@LhC-%&#?BWS$>~Vm z-7k=t_*Sc2!RQCk390CW)Z}>l9qG%1_4MW8mh{JyvZ{yb5uq>YTJ__DeAmHTr}?h! zTo3hKhjV?k@45%q*QjgBN$L%^roR}gRj*lwA2UxYEyRbEi5*(Z+PGCdf8T2Q>f&IF zvzf7%>FaAt)_l1ZVIIc4ICef4HCDGmSp!SGCu$|J$z-l^oC)?|H|VC;xIE<*o3?$L&WJH!#LL zX4Q-_iZMpAdaqZuO+c)L)rzfchlWF-;ZST+i!s)kJVe1zxnjVj`3)IQtkwXyfYbF+G^+y*=s}eM=^Heyyb`o3d5J*p&6rj>k0mZ}HRTrF+b z+uji3mKle=N!|6wSbM-B@mRK=`a0Gxk7|n{{w7I{^Df1Xirpx>t2gVbtl z>x!D&MwPQZxh~XueG%)G6Y%LTv#`c)Iq^pxt@;6Y+f59r#y*Vop^RNWbu5r?rQTyk zIWbkEk$uD9InQ!iY2)Ailh{Q*TaLMx!^K+7xrXPp$|C5SaaQ%FWc|U1RhgI34IfCas;|jwTnC=Suh2k0sdd&e z@9593Ewa#S%nSR+T4v0MjE4fpVCHk=F7v~ee;+vJxWqT(Su?@d-hp1M$G0#6cp8$m z(q$U4mEf|%uRQNKhG<(6#6B~j^Ba@H@E3)nJ0hU}NcbQMzUzUH zBdGKnd_(8)4cT1oc*(mXbZYKFBeJ|Q(&Wj$&0AS>{1LR555JroQ-{ZI4I31{l5bd--YRlv673y? zTzZG=cPl!!frB38kH@>;k_s!dU^I3tmXCQLxv+-K%9Q@(~ z?aA>g*~euNe(le>A7Q^LKI&RW{MGj1@m9u?LAI3m?zXGqHQVs`d&drnzZp1Q!OuN1 zb!7aRn|h?5;Mt_qLGdYRDe);hKM@n1ethiJ>}it{KPW9Reh}}D_lrrN!?P^fTAs>Y z(H!KoNMHGsUryG-`$fpf^PBy0@@TT9^aSlN`zBCU-g|-E3&)hKTzj_7*ptkpk|H4Uytmgw`lic`p@-<%wh=SOn>gdkG_ea_-vb{O)u zPt|XT3rfU~Ao4bKn8@3{zVWuobtFDzmqAl1-6K!O)LA)Zsc&!Xq_4J*3}P-xgZBOK1eU4O*0vSF*eDUml}K!qD0sIAwm>vC zK@7G*PwbRf?3Ccr&wF>TJTX#hIo{n~*^Hgif}L^^9@-9XRl!>o@R`Ue=RqaIDy@B* zo5qk^1D-qiGxC%(=56@3Rz2$6EW_t`|2Rdf<8M~eQEXp{M_ z9vYGy)UrRTe4}0K#&wQ?rcmM^&bx--erreFio;+jN1CI0IlfDezsR>bkJ4Z9O($Px(gH zLb7H!qVDtV_mo?EUxW_v@Alr^Fh-3B8m;SSKRALer(VbYGtjBT60F{AFD)7wTH5fH zwUW8$=mv5F+Q@0tusx`<;YYq}`tUx!e;PgW`grCPW@*(usJHAs)(ou3Qu~Iiuv8oK z0jwn``|xmtRQ7jR$^A<1ZLvjhZI;-A%)4vs2Ik|^lfqr;6JlM+h~)SNe6uH?XE!+Jt;K)K-iT?ZxMwW3 zur~UcxJmsJ#kih4P1X+qE&x=A9=))H|5a9XQ7iTkDWr%r8oijT z>ia$a%iO(5ze0=R9}${Z_GMdcAf4WZ&UlY_eJAukh2zv!u9hK7!Z(}-p7-+a-hCt2 z@8{3ojjk?O2E7&V&1t?VSQ4?}6yI#mFW4=-W8=Oe-@|vd0^ z)X}a?v4P;(TgglBO;NcQi@?u?ziO529Z}ub?}p08!Q$)bk4@CODiE)q^PSknVh@Qe zB>uj-B=W%Dl~wII&RXrkt`;46p&xJCSp=^vzlXhm?vs5?`x|l1ML%L6@uO`!i^r+l zL`7rR2WT8Q)%Y)gJqAZ32 zpsynQHdsxFlC@=9l`e4B_`h`{Q$~lYZ$$^V?dscgzHblw+5fErx%P<2C)#1azb62G zXvu(|eK7?7&;a+OOZ(XQ!?P0B#)Km4k zzn*>2p{ggrs3(^FMS8KnNGN-R2)^*C?vj0Nq#RF>@BiHa|6_|NJd*<-IL-fi2mD`| zJl`pD-By|T@M`(KTk{x+No>Go->M~C%^cO#s`0n%&SpGUxxd%$it)X6Z(3nFbZmvC zROUquny3CC^v#F(b*`57+XLGF{k4Yv{t@jDtm|F;r)D{387CO)B=LW&=I^6hE~@`! zjx&uiq~GNFD&Mv1JM})9dzsH*FP^E}t+(vXXY5(EqSx+9Yp>k{X^)4PM9JZt%5~8! zOZ78z>>1DAWzSe&V9(fak3FNF_6Qs@H?_98ZM{iSp_fGPT!^9mNhT^r-9Sl@lT@4f7+TE=tvN7fCPGDq&krtV7aG+?`S zC3mi5OZ2Bq=DMncS4V9zd8%hq9egAGSAI(M*{fUp_S)CT&1LYxDBzQCykDqqcJPhZ zaObhRjxe8V!~T{&v^hR8_JctN%#-=2XX#U^PwYY|%f)w6j_afuM}C6+nu{Gf6MJ?BcI|ZhTQ@TMZ$(Zr+} zYg7+(Xpat!WB*haL2C^oIYVy^!#G28^g(qIbZ5fUxX=%i7e86h8{(_)JZH0vM`>G? zjq#)Nw@X$_fggMp92@;Dg2%7=LXDprHWh78_;Ut9+9$+Y9sT^`{>Jx zYg{dx$osk3$or}GDyi`0{j4M>RFyC9X9eF^`0{@4CGTei;~vTTS+U$wT@jG?b1(U; z&Xdcef}A4R=&fGZjI6)t>7`#ggYmvC#ENfowUo_Mb4%sqrsy+4<)e_iC*^OtT6>!J z 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ℑR=n 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 literal 0 HcmV?d00001 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/.DS_Store b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..f98ad581def48499c2f8afbb99006eab365cf51b GIT binary patch literal 6148 zcmeHKPfNov6i>G4GKSEDqQ`*OfzzolymWPb0V{e?nJpb!tj$=v^)Lp#>KF2x_<4LU zNnyjCMdUq5e(!J6{-8-8V~l&V=$J8wF(zOja#S`5x;KVuHW`uQ8Y%?sGn^!GmfP50 z2lMQMu*fE1vikhp?ia7s8(Z5=(G+d*=)b7K&x3rHdBOA^tsAA1u+oF@HXauvXZKR2 zc@U@LsV<14F{C`)#c8ApPtDRO)3v?{h?Z!Loc+b3-|Kc{|7_Wji~b3yr@iy#vL*Ho zk1no9ugP1g-VKu+h}N=Wv4Rg!I2+9UX_~0?SzA?%kQg8ahyh}N7+7JzUL~Tv;vwp6Quc2B@p^dIN*GTtP%y7V1qAf9p8zoM968WI6PKt%o@=o*h^wGqmjlv|fF^_{ JV&E4T_yz@tM@s+z literal 0 HcmV?d00001 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/.DS_Store b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d42e5504273a9b7f27dd265b78a65a43d6e44fe5 GIT binary patch literal 8196 zcmeHMU2GIp6u#fI&^vUXQz$U}?qXG9S)o5ri$K`^0hOONw52T|%kIty6Q(m|XLpNM zw91nb;$Jkzs4qS!L47d(5HQ1rnEtv?uJBJn|E6kknz@Z7nx1X}v!gPP7w?mctQ zx#!HBbH8&ZXNEC`wu0Hfn86t1)CJWmX}CcXa?z(WCFGP71?e+pu^jU=qy9+7nX)=! zL=lK05Je!0Koo%}0{?{w&^uc+KFxbyN~1A~Koo%)83A!V#HkCK4C%O}!O=lOPy!GY zB|y;Vn(BZ+CmzydNXI1&RLQ2S9uTS`EHNO}Ngfx=i6%ojE~!*!km?NKoe@?j2<}dL z@nAVaQqpLQA`nGjY6L|3RInXXxu=W%j1)A@qmmd+gzvp&yrGNtQuW}j`1ru3S2&&{W8*UAM7wrSClg9El}dZTS#!8QFr zw^s_d%GH!^jE%LlG$rB%W6rSaJt`eRco?v` zlN>ue)hov@wr3pSRasrhtM5u)sdFl|xkg`q-#%?HrOz+Y<9CnbZO`@hSvj9*O0V+C z&91EH_T(%fAIN%6Vc7LkdUZDKWD8C@Z?!s3uYI3IyedDN^Bkwg^KD^fXfSV`$P3vN z(cpgH%jMexV<}xP_|{&FY}rMtgDm=kHr-Mv)=Y8{>g)3sFJE;_-MaM~x3q1$YtKZL zUOj(7ji&9Vc)EG}9^12)>^o}QynPESW9M&wwbGgS#Nllobe@Z ztI^8!i~Nwd@vgL=?;f$-(j#p(Iyv9(A5G`1?oonVNu!JNVDpGCR60#N?}fsZ#%|7s zgt1oBBs(I2-93gu+hDszn*dH*CvmQS!8xxjZ9#3aPF@CaRBMyaYg4V=XqJ1D)80y*Pk_ zID`~T48z3;j-!YNF^-3E3XkAPJcXz63|_>`cm-$i2HwN__y8Z`b9{quaS1=+H~fw( z3Y0lYrJ^Z|l$g?}tXDQD&B`50Qt49mDBbe8l~NuJl{^gjgG48t4wOgqbx-7x^3sj- zD7Jma_AYJb|0a(v&6An4aM9wpNT-%9tygg;VOm1wwTKTueqCw=AP*2R8KB0JrOTGD z&|>|R1=fk_l2We_8ObNa>Qy&sF?|;0iJacLnx?ZUN91%(A{NsXN=-SfZ-{An86}}U1|`-`AG4+{v; zt5J_;Y$hP@K@WP-hkgR{VPudE0PPW+bMSFL9w10RM4Gk6S-;|V;6=kY=S?6WwB zSMeI&#ydEVckvM};1gWLr}zwC;(Ppv%aZ`S>v{m=*Qo$5_U2s2bB~au1pDiiX3VTi zdTNOJzjONU|1%~Yk)u%rW?}?T-qG99MxIZ19x5b@Q$I{yG_h`6(m;g + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL.h new file mode 100644 index 0000000..0b81a21 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL2/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Headers/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config-version.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config-version.cmake new file mode 100644 index 0000000..feea76e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config-version.cmake @@ -0,0 +1,48 @@ +# based on the files generated by CMake's write_basic_package_version_file + +# SDL2 CMake version configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h") + message(AUTHOR_WARNING "Could not find SDL_version.h. This script is meant to be placed in the Resources/CMake directory of SDL2.framework") + return() +endif() + +file(READ "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h" _sdl_version_h) +string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}") +set(_sdl_major "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}") +set(_sdl_minor "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl_patch_re "${_sdl_version_h}") +set(_sdl_patch "${CMAKE_MATCH_1}") +if(_sdl_major_re AND _sdl_minor_re AND _sdl_patch_re) + set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_patch}") +else() + message(AUTHOR_WARNING "Could not extract version from SDL_version.h.") + return() +endif() + +if(PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# if the using project doesn't have CMAKE_SIZEOF_VOID_P set, fail. +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config.cmake new file mode 100644 index 0000000..e1b7713 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/CMake/sdl2-config.cmake @@ -0,0 +1,71 @@ +# SDL2 CMake configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +# INTERFACE_LINK_OPTIONS needs CMake 3.12 +cmake_minimum_required(VERSION 3.12) + +include(FeatureSummary) +set_package_properties(SDL2 PROPERTIES + URL "https://www.libsdl.org/" + DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware" +) + +# Copied from `configure_package_config_file` +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +# Copied from `configure_package_config_file` +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +set(SDL2_FOUND TRUE) + +string(REGEX REPLACE "SDL2\\.framework.*" "SDL2.framework" SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}") +string(REGEX REPLACE "SDL2\\.framework.*" "" SDL2_FRAMEWORK_PARENT_PATH "${CMAKE_CURRENT_LIST_DIR}") + +# For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables. + +set_and_check(SDL2_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_EXEC_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_INCLUDE_DIR "${SDL2_FRAMEWORK_PATH}/Headers") +set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR};${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_BINDIR "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_LIBDIR "${SDL2_FRAMEWORK_PATH}") + +set(SDL2_LIBRARIES "SDL2::SDL2") + +# All targets are created, even when some might not be requested though COMPONENTS. +# This is done for compatibility with CMake generated SDL2-target.cmake files. + +if(NOT TARGET SDL2::SDL2) + add_library(SDL2::SDL2 INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2 + PROPERTIES + INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\"" + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}" + INTERFACE_LINK_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\";SHELL:-framework SDL2" + COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED" + INTERFACE_SDL2_SHARED "ON" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL2" + ) +endif() +set(SDL2_SDL2_FOUND TRUE) + +if(NOT TARGET SDL2::SDL2main) + add_library(SDL2::SDL2main INTERFACE IMPORTED) +endif() +set(SDL2_SDL2main_FOUND TRUE) + +check_required_components(SDL2) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist new file mode 100644 index 0000000..931edd0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/Info.plist @@ -0,0 +1,50 @@ + + + + + BuildMachineOSBuild + 22F82 + CFBundleDevelopmentRegion + English + CFBundleExecutable + SDL2 + CFBundleGetInfoString + http://www.libsdl.org + CFBundleIdentifier + org.libsdl.SDL2 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Simple DirectMedia Layer + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.28.5 + CFBundleSignature + SDLX + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2.28.5 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + + DTPlatformName + macosx + DTPlatformVersion + 13.3 + DTSDKBuild + 22E245 + DTSDKName + macosx13.3 + DTXcode + 1431 + DTXcodeBuild + 14E300c + LSMinimumSystemVersion + 10.11 + + diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/License.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/License.txt new file mode 100644 index 0000000..523c51e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/License.txt @@ -0,0 +1,19 @@ + +Simple DirectMedia Layer +Copyright (C) 1997-2023 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/ReadMe.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/ReadMe.txt new file mode 100644 index 0000000..9f49591 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/ReadMe.txt @@ -0,0 +1,44 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://zlib.net/zlib_license.html + + +This packages contains the SDL framework for OS X. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL2.framework to /Library/Frameworks + +You may alternatively install it in /Library/Frameworks +if your access privileges are not high enough. + + +Use in CMake projects: +SDL2.framework can be used in CMake projects using the following pattern: +``` +find_package(SDL2 REQUIRED COMPONENTS SDL2) +add_executable(my_game ${MY_SOURCES}) +target_link_libraries(my_game PRIVATE SDL2::SDL2) +``` +If SDL2.framework is installed in a non-standard location, +please refer to the following link for ways to configure CMake: +https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/Mac OS X are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on Mac OS X. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/default.metallib b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/Resources/default.metallib new file mode 100644 index 0000000000000000000000000000000000000000..a30298d0aaceab4ca7aeb32083e06dc3dfa99dfb GIT binary patch literal 21968 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Μ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Ĺ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 z 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 z zQ@LGnd9n3guppKSYgedM{(b%>F3q$0Etqm$8Gkq=vx^Os5U_?hJ`a^jZ&)i|Ci+Cm zp0)YI&@oO_LT$S|810m67+E8^U%tH@ED~W)X-W|IS>)AmC=?muH1wrs;C}Up^_9);T5FXJHL@IM9I>IoOAnpUv4}^zW>Qs_=upRwitg9b9fI~#o zgNOSEYQHSnfdGcQ6Y1-~pcMo(0(XNm{tvY~OKSO^MpKr~DOyC{17&q3cw4H}Y{$#4R0BOKcv{}Aasyb7 zY8nUR6IX$Bq0fJ&3ulNPkVfxVl#RN7L2DwK zzpD!%iG_GI-?JXhS8`pen8N9I7n}QGSDgty)NB1hu-fSWf0&^LZp3itB&(B__9_rj z@yDH+YM+~TlGR@_XU_4Ke2D>=<;4I1gV2ZYSUC_vabdjiwR#4jNQjRm{H{nliH{R% z5Izf+t5v%Nlsp55ywl_aBG}(fIUGcV03*hi_>V-)O(o|3pgB=a2gwRsB_M#Ej$`sd z9HwEZ7;;22$Ml5yu0pa)OE7ifP(yuJs?N3)o1Ek~q6=P9-RG=q86Vx`T>d%@ zOP0(h>AWj%zl_7di7MA}NkS{)Ls&m>Lg^8&Dp=s|Q}jB*i31l#B<1TQb#|64HZWrx z;i?V`X+*sTN?7GQ9k@`X#Oi~pk!0Wkdms=Y(Gia;5I*jej8~8lWuvgFL`;m)=W$D$0uNaveiJ1Jp@SJ`aR3 zfN=?ExZ!*TROV0%5BFan*xtt7L;XYgL?JM)VjXU{P!{z+;xq*R`+BLrE`F`UAd~)U zxBW8JJ{FH|UmBwQ$*O&6NVhKy(LVdQY2W5Sw=d9k*#7>Ye;FV^5A5ugPj#p3Bmb5C zZ@C&g6K$msEm-ytEV%X1sxX?0Oim;fR62+>`x_MvS)o>!xceeHO&^c5nj`31zVF05 zyrd#vBP6gaO3cHtj$N;M3qCH7YdrHlmxO|woT9YXDK zn&LAr-c3gpDWIh{lz4kgdpb{0{&ahWAH)A_?I{8j^gfZYSs|D4P#X?a4dyu8W6v8> ztrCg8?v&41(Dpe6S9t0~pIT(VixECZAx&pyt>M`FMP_BcqtE=&;c5va5)DZ%KC47D zMo&v8IHn-ak6Dyp4pIKXZ5zZk0yzSQ0(ebjLk&p>fr*84`C@`=Hhk^5P2ISRFDvO@ zC2BNAG2gH?JyA4Lf?Kgsl4<)hzrALHvXfbzD^(2zDmBSu^Z~L+mU$WRg6#yQibB1x zxx?VpYo5kj*nr=V;xo2(2#;TzQxPUVLG@$9fc)_t2WE@U!0KAnixPzz`}6@U*|KL} z=B)9eF6wtWehI{mf|`9BqF5*-w!i9y+de$1{b+zXn||9ti4}x=ieZbAwvaM8O5nGZ zAP8Z}S&ratHxVBQ@5I$5%77MgPp^4iN0T@*;K;*vlfH8dnAL*eJ98#Y+6B0vawh^A zEjpQ68Ljif{W`y2jJ^EqjKY4M#%x7BU754#sm_6fpy59`?aRktaX34<^dl)5m85 z3*77@k%TZxkqvP)Jt9^X_xPGCFHq;HrV1`?DYDd9i~j~&kd&6N?1P5YxQ?9AX^Ct zJb?6JyB}4|5-|a0BZLP6f>P=^uJf?D^qg7U7`w{!It`;*YgN z!6SSwrW*{-1nwDz>0cjc_scknW29Tzm$ALv2qM4bfnxXu& z0@4-70m*A@iToMVV*RiXJ96Qcvd05kTkj)T8$l_SPn zu-43|L0|1NeqfG)?UD?YysY8j2-5ZNBX{vx6S9f;+-9uMXSyt6062LN3SQRt&+lVo z&a)>N#-zFihaGDBniVmk3V(TP_QF@(Ag31Jgf90S6DvZ zs;m&zp>HwSL&>kU*Ojq>bJeXjY+dKv*(}RT<%dUfBCttkV^s79a^xF<9IXfxY;!Ad z;^SQ|>@W+ZNsTZIIXh@0R;`RV86f(Rr|p>uoBAHDsD9;Wn4=GN+^8mt*@!tLt}AM1 zeJzN`8WVlMozxsrwkiG2IKsIFDiVFeS+j)aCnMg+Ctqd-7!nlIPtMJQ?sQBLWYPxV zyV#UWuld_6&cX(P!cEyd797KBK+Vc)J5r#b=;<`il7xY%xD#$pd+UE_4gZl&2Vcfv)bI=<*$l zE{8gILpSp}k)hNBopfUDSTBa6KG{l*aneswNHZ;x*jH;NDQJnAc*tcA(5zpbpmSST+cMsBwU6?|=$~_Ke`0m_z2W!JPV4(CVRj3A)pvMUJ zY>3Q5ZpV?qPSoP(qU(jeWL-A~DOn_nF9GDY03wr`u!aF5InZJe9h$L0V`~rttyDd< zM$A{2#C1@W?XnKIa|yEV;>dMazhFRf^i~fxG~Z*F()Y_)?Cx)4v9ovEPkERBSMe)f zK`|ToPeu}Xi2p658I3K>_x!KM=H_qY&H0Kn{6A#jpZ*i#_-O$_DS@?9+U zInU2|%6hV^Jxk~tok@JTULOmv1AvX$xHQlFD>8<5ue@9j7lxnh=~AXYdcqFXrT8-- zZew*19{FX*OOho?jD1D(gBfBD8ham%mS=JKROKb~W;>mJu=utnTdae9sf$!3=zTjV z(zl4ED5;zani1uOW(Nig%?SKvs1_{s)ZW*}HQVJ14x@AWPnUVm+Zw%E1-oLd;02!0 zec8a4@}x;zxbV@3(N~_yBa)lRNo#M6#htkRx{#gMKQv&gS%tzSRq9z-m5 zgi2rVhi@wK7@NF#_-DRT^n5IISMy+(rx{?^7~XfIC))Nip;Z~a*n5Ej-PrCozVsVk zTL+9(SA9d^3syVq8>_uQ1~2E1%+l3J#%R(@-;Iqy3T=uuQUgp_53No>`KpBpf6{;0 zA7zxUvh5Yrcc>{tH#U_=GVktTZ(nrEPZE#0Qu!*!|F3)-7HLrrO_{)b5*tNn!i!k>kA@=vDkTK`e-j4IQOgQ(B|$~u!GI4nf{ z+w=B=x3ufaBPS9TmxrZ(PyBva?qA6A8HcPV?j#dk=QCf=*^FQk%M5;+j>X{HZw=(j z8gfQ=mo9p&G6XE2fu&-8eZ45k3oj#?-`M4e;U=lcTC9qJ!RL=PMIdd;Td!ia$1?ld z2}_M#axj7v#T1~MDTjBayJD@9c~VE_9uGR1{pN)q6Yq(AKx<-|TX-)u&ha!2&j2cy zXU*_FZeP=I79B3a|C_U%r*0NbTiDBGHQqss%>2u0RZ(Kw8~cFv$gY@~-(1(r726<{ zen&E&v6`^D8kN!x{!j&P*YVD0=ASu_rW*KyU1>K)H~Wtis5dYplibYTIbS8P8*AqG zr0t|vpFCrkxunMA(q|0Mw(5{Ly?Ohk9<%@M9d_}E4vdaw z>&M%BP~vWSGpm#FB+$FHodiOhJ@$@A{G%O&*JUg;oO1cx-9l~OD++>w>6t(nz$pnj|GuR-x z@NLpksE~+RIFI~P*JE}sKvo$~?8rDf4g=wK^85nTnl>ltXTKF3u7b|RwR0d-H!}y# zp}cTajc$Bmy+m~M1Z`Y{mg`-}e~mU!{xQPn?a#^3dMD>t^;4t-yKpYK6j?6VV40V- z3(b8mRK()mZ{UbUfCt_kVJNk))NAHHBy|anHbN@&x{Q%U(5VBR*MZK=pQO;{U?5&y z;o}rVjO)~9oIg#5lhNciezclAsts9l zRY49&FWqJ%%*;=_Hx9d9Ivu1sq^gw%4Yog)ScA!-=FgdlWPB`tRP;J}6x?ZQ=yEQ9 zVVVMxgL}2}O49afy}g^E)xR+4bfYbn`Oe2Ox>iFzFY=}U-VddjMHieuES>%$7ylWh zo5@+aP_i%Dr+qn$F7qy?{l#zy2C_r5pU{OigX^aTbv%5H3I`Wo#WJsPE_R9@KgPwW?wm4<9NTkThc@jZ8|aJ(1feS#|$$_|@o9){a$a zl(_0GW*yg?gZQz&JI$Gi-sDRLiV?~t77->{9!3&xYt`GZG+v(&2Mxxs3|=>~f52-t zuLtbcfxMoGf`!mQysqMK60bveO%pwqF|3H!UiPbQ&8~=}Y=lsrng84jCXviSumKXR zr&aW7xJMx0hF9h&>oObOz!@|{5l?@Wepp(xcU~;st&!y?yIgtORQwNHrSsdY?v%%1 zvOZo73e3XO8JN`B9ex|jY#|MIe)TTNlHZZpc@6QBkfG!B;Thu@J*v!OZ1fmE2&;d6 zvJF3FzN$;vP1YV2)Fd!pPaV^!!!ih?)brk!pLeP92B9Uz1!9?HR4l14?C2EL$ZJnk zof1HlSPjgv%psD_SmiT{bJC(IdE2~spTnw8Q=!5hZT=w5%%(cOvBM^b8$9JUnIA1L z2|pNBMkCs8QH=;4JVAS40^MwE*2BH#NPpY@TVp$b_@p2ZhYMfMp*c(ls;Q~e6FEeW z(9ZdAVvyW1eICo4^P$uHChRI<;z%VIUPqYBU|{jB zo1H=A<$NzI+Ap2(f2eSXpP4%dlU0fTKp@v9DXFuKa3q2;Y>2X?A;mh$Z|0|}vNtJ7 zhhL_fP0amEctl2lD3JrKLpM3I=8(i$vx_`Gc9ab9EhJQv*Q~Ty=D#*c$8Wc8IHkMv z8Vt8Q@)8MzKO|LVCymQ7+GL3YH3mZy%8OYZV?VAat>yOlAx)N-ywE6dCs(Vy=9rBfQkJ;|xsh~A@^B`a$WDNxq*&%N#Gtfk zK+m|b!lT`_Mt=TRq21i9UEj!r++fXqBh95WyvKSeNm#X_(r5;YQI&y^IK2f*%wgHZ1y=PpNmyML zSaUu%hvgI(?5_SOY1jok=ZIu#9eOLx%7}j1$7(?=0awmXG}x=fh(=r*VA0)l>^OD7sxHM z1KjVeJCZa#d!Ke5#u<$`?pU|(K+=^te788r*{5CCz<-Nyk?u`J0|iaiQqWLr#H^jy z^^jFPlV;&FkDw>nme*hnIDy53%+gE>zt~7usHHr!e+R4gC|pYZCsqDng99EsQ4P#k z=GPn4Y(m#hg$*(wTT}p|vKnURPY|k?CESy09WGaz4Nio)z-o9kjXD;~xGk;!T&vqiAZ3_EWnS}w98Xhn4nQ+_ zXXgxbX>|t4JWa*C^A}k{+6tBj6>x!t@>2sNsa&U~I9qP@8wcgZ%s&;epw#$EQB)}@ zw1I4u4J>EncZ00_`s6SmL-b%>gI0ev#riorNtVmP1V-FS}>Mtm{-CzyiGu5<2?alxqs5_kPM*`CmwinnTYpHY$n zw?g>y6d?`m>r^ik`F9BuihL4;F(sLNlbCGRN^_MO=qq}UfFglaxpj4BtoJ2c=>(KM zAX_Nb(FgpEsOX7ZDM<0Ti=;lTa6s>)-txCX#|paMd>@Z?O2#YNsmrum^QgjD|Igl2 zaK<(WaV`eB`GiY31oZJPu7DSN>%R?5;VB6OU5MLSu5y22xyLHT(mE!AvADmr8A}iK z?8;b}>-v-`oEPUXdG%4Hz=a4OUn-R~;+WrO&KbW?JEeJ_c0tR&Vp!M;Aa+?jRxm5E zg2->ZJCO$daBZ9hvVWUM1J{W#D^#eoATl+$R8tSC8T2xa1&Mj>qWhN;BmL#G%fM)Zz;cdwdVOcZO?a>~RxhJSdN7B_b1WsUmuXGNr z(VJ`v8CXiGzigb5PDKbEP20M;L`L{!^9;=n34YW~Rc>dqGZA|Nv5nRuNlrov=%oTm zRO*4vc0JdT>ADuM$6hGcgjl(2X)y>6tsdBkso2?%zMIbZM48V(Q-(}KyQNL-*1i7~ z!9|HbEb6`OgchM^$?!^iQHCuJ$?Sq+QRN?1W_cwKJZ69z<;&F~91%Lh`sM^y6isSX z4!-ThKKVNMR~Pw&`Dl?OLgA)kS!wpaO2o!+;j+HcKZQHqkuLni5dp6lC)^813i%D9 zZwhC=NGf5i9VxO^3h9nHw<$`D>ug#75Cy1Y{v(Cjl6I-_JxNcNr9(KgP8Ejfmvpw$ zX0K-msn+E$S44ndLAY>pQXr-m7O*t7#yhFPnKuj22Dgrh4mZCJ5!WfmAc-v%zb^y9 zA^i{Sg+Zw-A~vd7;IH=h|51ojl&m|~rpugCcfSfRe<5_RoA#hAR^ZGZh$tk=baH^1PlfZqoAnP^0`R@AKxvY0UV*d6U-Rkoc zNlUA3t!Ir&D|Iat{gu2dqM+NSD18<)qOA)ZB&<5SL$gJul$wkaT#8iyqtt_5UM&Cw z)2gMh7MZj@2B+WB8&VKCs*et;j-)ttn}tV1gB}%$;U_1%T1nHoZj80zkiz ziF;ti_AE+tA*G*hh*fJWI1{~sKuzE zyiDu%g&&SR2Ihs?$fbV!<}|p>ui*8AL{iPQx2|*Tqn)|7ORe0er>eL+YqVSpY;vm> z>t;&#W?(gK+@dzDdmDJ*m(~N1q2D!DIU{{}8o{D&6KZFFF9WJx?hilhQq@mxV7DMm zH>aajVvTs(-9oiEpAP7hy^q>&nkU zvE<5=^+`=Aqu%)91e8%jYjyYg(e7}vkzv^~woXACqF_31ezaSxvSkT> z`6eM5Z@2C{1oux`lSFrHmSudG?ayQ8KQ#lSXty?8NayxR+AQ z7*}Ta%&X7{Us>icugWs697Jc2_pp^}4Ab`yyDcM-PF`!MubV6rr-o*wxdJ`fhE0j> zVsn11${J2t@YSJM&AmBkm3|*v?=|=Fc16v-z&+V?lPkkmS^Fuyu)Fq0elvn28?CI+ z4lUL!v~h(LA9i({QiQyHizlKvmT*u_{ffdTE-P0)tOR&)Gk0N=8rxhKC$xb=?qrFe;d`=8QWe zpIZIB(4&uQ7>dnoL0Yjn@U4Ad{H$41Y6}lPjvN|`RcrN8sxqoxryq2)r^_mPG0D}G z@(I!MCj+QIv_Fg}INUn~!*?LANLrFB@^4aDzdM{J$n9R!>tDpWttUFZ|H5}S>-moF z2l-C6-sEd^PAz-WL=^ zP2MHKE0BpB^e}gehQ}<)YeBzd6*11tUIQsq`a%y?z2FL@gjzD9Nuic(qnAbmwLm&| zJ|%qAlOc_}+|1nnmtL;6_0hha2TyR@*&@%5yYui-c7TjKc zb$W1X4 zsYWtjx<4q5EPTjNgV~1x3&gZyr3@dNnCf0;h*zF$DHHp-k23~6&AL)C)jmaYMT3=GB6f=n2*GcYuy8Audm^#E`>S=~v-WzSdhtLm-XzQlU;S&W-H>1&(!n3uFOwOMj$|OA2@A=Kaj@ocS727nWv;*sVT{_B&i0b5FPY5W(s^11 zuI@^75LI-oWDBRru?HV^PT`clsJG#=+qB1iWnN7AHN1uW{w!W+*{|89#+)ITE({_O zYKY+j33f$$Lsj(;^pvfCM$K+)oa}vmXM>EHsPJJs8Y!0)?~x+<5&DLD%%7qgocYP# zA7KhX6=j2be@yB8WK@*^!=D9ewK?{!dQ+QYR{#l|QNVq`eid-vwO_NDrH2$7(+4#T zvmq6&V+NIW)%?fT19q($owfELA641f%FWnp#q&86V3+yVhM(TZ+pomL*tj$xpLv#& z*DzyQA-IZ-N>dvXBGcuq=gV)jGsQMF2)V$=<0w1M{5+~G^kdR=_BameX7v#3+!0Ds zdDdGnV3&0%z_D)c8r`?=r?^F`KqLWk))4Ekk6~TkaBq}EMI?%DIa*&nc9g6- z%@Sr;cK4aJ*P`dQUY2}Hdl2l)(s_t=2Lbd*Pg|y0NnggN^iF=KYH|yx~`o+r= z{8-a|t~}Y_U_w3!p@pgkxdNOup=BSi69_=P-ckkRQGiE8o9~zkyX-g=5qkE3GX5GrU*|K;tt{6*hzS+ItXt% z+;2L>*Y3v|2ivfa63RqZbTIh86I}^&;P30`2I;hN`@5cRrE&iE_w*(kS5WKC(ve;E zsp9;Yo+{GMFBt?a+UsFscj(7%0WI{SJCISoK1f9)2St1GTNF*^cZiOph<`4{oT0Mk0pa|8UV(;NT1N4HGGtSj>+W}4Qu@)0@ zO3quax9wrbvEi`3Z4c8BGX*8QBaoyzkT3?1s!s^5rx1zt>A_T2d0vApFduKclkyn) z`QMLS=;tb?b(?-ht2aeI&)ToTxbCt^Nf=j1*Z>>+(9W^+!#2N7KNre!J)D2_T!()8 z+uvTk75&_a8L2}*XG%vNpMJuHqa;Ivbs5Q(!Bv;`l}Em$8J+fsg8%sbCV~vp&^rol zE)E#OrcYIKtS@86^STQ%_iMf#zVPfEx3%(s@bHy+EzyDme#8A_y0PJ^@WsFJ8xeo* z0mU#`YBs|bW8*SLgwuzV8sE@IG73vL2IUVwE9I6Jd@*O0FTBjnI|b;*ht?ju0ul!Q zC4)W>pw-A3xQ~`oBqz3r>mR*@lK>4;UXtG!;#mV&@yI~G*tqOyU#Nd0YgrKMu5}QZ zgH5iDy~K&y9&hEbbGz^p#$!f#Y)8lbRe9{z>|^#XM#E$GE98j`V^7^$UA?@A^EU;B z)o!=0`ox*Q|3rAl1U|Dpl@Bq_(CYrEGNj1-=@aYIaLQKoitd#6Un1Ix*@Dp4H0NE2 zOZ@LjIJ5Zd9H#N&9A_S9JE3DDf4y2J^3NfQb1_UtXF!*z?vWL!*zZJkArykEm3BgV zNy zd@@zq#}kftqbu(K)nNZ;fY z^9!lq&cWF(L@uv9 zgCt{}B$s;Iwfbl1Rc%}gNY5^he7-W(Rfr~_dRi(QqYcp+EJAl!cdbctad;4QKwt=l zsew%Rmo8ep9sHD9)_=$qy|OdFmc*7EOoLmGOWA#hS>eLYSgV@k67iu#^y!SSv)w~B zV0`JnaWzVNkdqGpx5`?1Sr3=pW@)eD|H_^*1EYCFCgWgjZ2XvO2hZtWdr-f2%-HI| zwFj@|J8&7#vDc0X{5q1$kgYv<)!4y#fn0g!4Gx?kkvvb0q^n3DIRojn2gi`bHj-3u zy{Q&0tM{piRI3x&ALeIdH5JLYWA!vMt=O2Fj`nV|v0ZH$?3E>Z(&YX4Dwyeow{N!g z?-FYd;e&AfX|)FhSZ%=)vfBV_zk5@?3(#6!Uj>c;&Q>Px(Lp|Qc20)%!X8TDZHV>d z^knr`WPQXNtkDwqgjvR{72gQ6+#zEr&L~$AJiR0HvmKeAa56tYW|Gv9lQNG6Zt9 zzR9o(b_-o1-cOyzNpy2ok#(!Qs2w3W4&d9H>gr<8!2FV}8>!kdbambS5BqWU*EX5m z3xyyU@6B`0;QThgiT4O6m zuAr@mFpAI|Hd_~XRY9!I-AqRf-Sp574r8;i!2LXQGCR!(z^%R{_L=obss8Wiu>%SE>658QF{Wx!;blJoGkSIzD~&*2qVqK6M~|7>U4!*yIg} zFD(JyYI(mg{n80QJDqn0EuwgaK54J9HMX+x>jB~PlOdysu~L1xTVoCDERGuj`=nOg zy%#vF@ak@^$lX+Cw{J3Um?ropiTE<1NhaOd;F~lOq`l*btu{;2Jq4?0e~4W?=Rvgvd!-%Y(u_^9 zHDWZhH@0%!k8&3s*Jb-AjY|iDb-tu=8R2`}60OF?K5b6-3hi#Tqo%DJP@x@>m!0kk zZEE9~3T@6B4r=mfaqsa@+Uav|gxYEFX1{x%CtT!K*RnT&iFU*LU;m_LZ{D}qSG0D> zkMuWk6!15c8t+?ot)h!;zvzB9t9@@Pdi3ycDJ7hqDq|E(_}r^Kv9~>DQF^${4cgt{ zd)<$of)8fDB#q?W^aZ_Wq{kee#_n`eMi8o5*rBN-EUyy=rl()^R|O6G{64}@IAq^W~q{Kmcn`387we79O|01|r9lgbsn_}u?HhF+wvv;{I*_$O7Tsr?}K zdMAxlbfPDX&G3c3I$~a8PDoC~_7qmo=6-Hocy4f#D}em~)LYBpHirns8f_upTaD%J5J6wa>i?#v@=a zM9FF6ce(XsgTgOH2f=2cX7bTqLGf6Ii_Pw8FJUD84L(}*Nn7-!2^pT+b|o5! zzg9&d9(Ri;*63MxAgsH^un)RfcfiiTRQ3*Bc7d3}vU_8!wOP+PNx^XJLPrea)So8m zM(ugV^_*sRvqGkSQgAhRpuJz6FiKhm61_YXjx2#%UK;Wte*E<8eksetel zyg&OjY3KwR$q8A2@+aLYZB(+*nFcf>Z4y#B5T5B4LTQrGss`ixKKHxQynhM-npGLc zHZk)5vxzVfnwX^~i>~tp%RVlX_}cpPO`*58W9iKvtgG$m<7jGQu)cl_u_cVZ4tY}9 z^I`8|PXzrL)Hc-#{dI8vV@T~XpBpU{B&mk?av?eO*CEfNACkRl#Zp_X(`kcHWK#KZ zA2W*2jX3~=q_o-eL4xnjURU2@23Knf{tA9&=i9upD+#Gyl?zQ6^CM-BrKrr%=9DaH zx3m|M^O&cw4~=t=Wy7;5V58{lEECUTvNkbRH69!wds64KN;(%hTcTyS#9T~N`#y7Q zQQkIzk5gZf*=|=fJ$OnhnFs)yew zqofrx!35`f|AKm^R5q|=F{XC=mhqwt9N$zS-`Zv!_&^y#HoZwUIoNRW$^-RFVeVb* zEdOb+@P-^=8UlJxZEEB$#&3Ub^Q6Aru<$QMN^f}Iovg5B=sakD-!0#w;Gb=O-^Mqk zuugqPj-;C@Lpuu#zAVef+SP)}1Y?ioe7d41FBb$v)0ZRB(JRYY5MX?|oRY7lNGqIY zBVweD2niEJjKxnI=qVIcu?pI54YPyt2=Y2XgY2NQ2^#7I^|ymgMVo(G8~{~wx(!Dh z0NLX|i9A+%R{$hT0Qi6ln;ZaI?~tJF)=E1_05F}P=j|W?;2tOFFLu!X2|xpMl_qqR z4ML!+Vh}`7153+zP@Wwmo(bbYr>mgCAeC7!EyN_Hz5#dl%3i*12KWY$r+y2#;V}q3 zVw+G3IG(pM&Sk;EIbqznh@!g9I!A6ffzsxUmrTYg3K=NWYAAozcsom%FH^bV_v8JF z`y|+DfTazv%+FA4G%5eCK<+Zbc2eapnC+D}$tZu-q{-$fY4p53dcivFLD9O4AoZ$B zK^lMf-gbY%LG1yd?9dK3LZB^w<*m1-%Y`fjo3;9frG#*>*;ZRhXG#l-BSfQT3f?O- zPU*Xby5`cbp$V;G@%4BH)fA%o_iA-tlB@6<-|*q);|f{zLaUvH3Z+V+yDU|xTdSAj zjI~wGDtG-#NZ4dG6uw6;Cr5u$&gx2bqThhIKvwFsY3C@IQp9Er^H{eat80lcDzHziw7^fykLBy}aEUa(4=`<--wX#;-T0yb#(7f?WKO~F#3 zWUcN3au`dCd1oio!LG4|g@{eYt9Nw4u^CoSnGcVb49yU42g*As+96}n^7-7`{g*0= z(0+%7lMpY$8NDe7kJnqT-~q*7fX;L+Fm)kZAv)^;9Hj{HqKP1HoPcGTF%%p=99THr zR9JD-q(ER|;Vm}>ZZcJK0y7IM?hIt(NN$icwEhdQU8@*}1Z#D2BX8{+!Zjq1RyP7f zXc@{Sx|U(PRL%{z5{><$u$#zJWC&F)hNe`Bb}d?cSb`5ERsN>QyO@e%(dy1pouq*~ zjwx7tt5UF3AHAvrAJ0gGFIC+cJil}Qfp~?F$}bc?+(C`Hz=)v4@IDpo?o@4q6smgN zt<~*d4=16y^Td?6;hVFRir5FqQZq2Od;et z#!X_8A9cZCoMo&RxD@R`Xz~es(!=Gdzu=V$Bty_6&!t9;m15Ww$Qe zD=5^^agf>;JHeHRk+Pl@Pl?fMDDOF`{~5}25Ri}tM>DSIFOLm>1_#K|Q;rS4>l8tq zHg6>8R5AuD0)&xe&v%2=XHv1;EHhs@)Ah_N&PlD1t=BYHhSL(Lw72$vZ0WwbS`0rq zsW#oK(j;fpR4mV^(U!Ga*SWj9By;zgH*`vb%_y^JpN3hZp;&@5H9{WWw$u9`F3r5F=h+F_OTwx-TBr2H z$&q`h(>TA3zdV(_qd6?uU$EP+U9p>GM!+j{Ib;jT z#8M3A;=%Hpxgo~Txq2rJF&YI*nCq2kL5zx~XQ&Nl68MchmRkSX#zM zSg($QA7_2bewjHTOK)2RY&8LBr||E$$RLmJ5k*$E%AP!fw>ks=EKhw55Wsi0ZRBs| z037=)CE4EL0YBTaAXsZ)6n4puUVRq4G zH90{SN6$}i~A#hH~V zb&{PrT~ePyYAIoYQ_rs%pg=oB!k#0H_o2SWt9?6 z3{SSh&tPFRn1vid>+2#)i@hgIm9?Jdb>Q}siv`9}z?n8n5u@1^@7gS7<@6Df=1S7Is=btQ#w1F4n-sh^N{O%9?=8H)NzYYx z0vPGf)r};3Pm=vXlEEy3#d@eZORMZb#CJC__sy;dRS$LruH`Yv6-=#YD#5yh>fFK8 z!dJ&IO`CQCf>5wmsCu-EgV!Zxf;lcVsR$j&sJuX1)`B^>$PD_V^!d7bU2LcIOkd%v z_g=ajaAHcLeh>(vC&T#50;&9t37$vozauaK*s1@+i1{(N0Mqu{o#Cs1EBi?BPP4K| zTQ;s(TQ+hy4(v*Fen$HE88?ET30Lw{>F1}ql%HF#B4{L4l&C63c}6QGxoBc~QVSel zQ1l5)!|N4bJ`@oN!Rq}B^>u$_IA3HPOIBk|&(j)Vx>5(!h;k zPgG*_L!Vg*KNL~I^ATV>{LpvlNcbUfaem0a++u0lgk_b;VT2AA$X<8nN95lir_27_ z(fU5NjW;RC51S)_9A#obb1=2koIE~y3o}kBMxHB`{oaYne$NxCD(e>L6&<2%_~ava zq1T)|n((RJf_?o3JE~3s)sH}i$WM2_Lkku~Pat?sYN>_9pP}yDqI6V}Q(u1ZMfRU8twL%kTzim+ zqUo0_RdM)Y*^Yp1Vg4Cxj)={+-89?Sx3lz*iD3&1-{U)!HRMG!#V^ zL3|SejHtp=Q3C-e8AG7f$isf1z`Z6r1%Ob`7ueaIXSabO6LNF09i_VLjhv}JN4 z$EJ;5iZ(*CAdU3suZ1+^J$ON}dHd+lESoSaMHn>`6k&{Qi4%r3C)ICIUOEB+gz+{w zn0X7w7XzhKkRyt|&QAJ4k$`kLNQg+HtMuh#$Jl?qg15Dh=vMp&7cg1_0zo?O9EN=4 zH3GYK7L!Jb>Mnbvba;r zF}L_ahtsCtjc1m~MEEGilBMo%I7g|9`J`196MQv3DC1Q{`anUd2r+3;Ma+>R%J~v~ z-4Bv6TsTvWqpna!PHm3Gu*;mnF_t4E!hJ3jdCBkon#<$$+)aAHd)fo@X)!4V>ai9< z*#mPGS|WaTg!BWkHJ(084|D4gFVm#fe=w?kzQpZzijERLRO2wAL@lH&{q0h)5JiX3$p?X@r(2jPm5%Gj}a;UA38#>)RB0Q9XIZf?;{A0ImVIQnmyF2BR|8R!d ztIcSUugo3t#Y_LMcz5B~_A_NKPqrBQ48TXr5EncAcdsSS zwhHZ*t%U4a$Io^`?pdGA+cr+YPuxhFy%pMR`>`k3-xtGzANFb2s}IgrPy3Reo7VHP zSE4>3N_|Mwr~KT$$e+C8Iy^5bt zR`U~(x4YlrXX|_N`Hsr;wkqbHjmhBh?12h`iC;*C8~M43^Z2)YAw?bJCwhpVZSCaU zE)_r&|Yg0d$moIr)FR4G5)C3Q4L5o9N z2P?EYeguSFE##fJ4yySyjmG`R*LG@&LOv542;D*GE&>j$BxZ=K3ED}%v4eJg4|9Na z0yoFkbI?x!`e_S&RUK*@!-1vGG~+;HBsn}Pqo^i^MejB)Z_%#Uz;ENH$)UArM_P;x z8$Kg0o3jJPmbNWLb^A5_onwgT8GF);EJkzill#l|{#0D#!0;qxwVAjxC3=k&3n5w- z?cEl$JsZBWVMRLMn28Xy>j^m{8o;8C18B*5!5TTZ_LY@&k_dX*ykX45KF+C)hp4qW zS?H-XGt-p1DT$98a&qkZwe@haO!h84cQdgrhK3Z$NeHEO*WKG3eY=m)iG&U$g>E~t z=aJ2q#AFaN#Cgx+y+~4Z>Wn+4E)G73>i_=L!reu5K|GYx7T3b!L)WVrv3Mm}&0b6A z3p&&xz(8)~d6^r!h#80uX0L^viL`oC$~ppLF?5FCy_uwLR+-6_zHstjJ=OrO zr9<@C8YVl;dRKMx73>Mt`Y^-8#W}Vl_?jzU#04-5v1ge_fjBqEhmd{eQK?)Atu7dW z1>=rHbx!nhsOR}>74@VxpaE=Wm*8UNTc`8DirtlJmm%Ik36;^QX#!HX?1)~lSJz56 ziGkz-@ptLqU-11Rp8&6}5d-Dnp*`q(=`y`-J0k32Il$9)6e{Py zN*R*FOgi=&pc9Q1pX0%jXwE758ZQT3epSKEo-P(&%VhzkUC~O9jB!;AGx}ZSi;0+> z>Mx)L+!CSHT}7!Lv_nPsFh9?KDckX(d}+F=svVAFewQ!S;HiB_Qbg0^{M6I>R0uQr9JbP<-=Y??SIYez{7S0}qUN^xX0QQoJ}%t=4;7jh&Uy#x1+*U1 zvtS|8Symr8_7g7LisOaIVcLLZ6ta-0V9$7k(ceJIitywHB4L_6xK+Z+j>kKv)%3Rg zQ9PKj?AWj8VxFohg@v`36Zwt z)+e;>5mHA65TVSQI{8P}^>pnw?Vv4Teyhx4(cdvqRWp^zMD?j8!j0H?SKKz@jckgJ z&wOc*u*t10^D|kgsfPFB9GS%i3Si-6*~yYIDZ@KHZ4HqqH>Od_d52iZk7pq25^AXJ zocMet?UnZ|3YaR<2{Q#Mi_C;ct4*!9nuY(1^&30pGHG#|vGBdoitYUFHIQ<=Nhy^wo^Js?%C(t+KnEQ#T?s66-DWg#@IHJw{fJ)$@ zb#qDNut}v&_2zLRORd+7jZL9159!M6duSe}Z;SNsFj$~>Nrf@=T28qa=XGOuA%hJX zAqfsrPVa{eaSa2HnW21%9$V=PtxS$CbL`EWCOS93k#ZsP20XKT37&E>&~EX$X=dp{ z?o9C8cO~HzFSi+bR}>R_-(SG3?WLS8D(UVIk2?{Rb7T-Jq4cHFQeWebNi4S4m9kX) zwVyrl9?gmfdh)Io{n73i%*u+N)##z{(33)6rGjqJU_vy*4=^jD2xA&c6HLlY54IB; zZ9$K2q!7cSt%?tM7x}|Oe+|=WhXq70LAg;UWq?Js3n+_v?fEqrRFvj^=QM;ixTMtF zT~whhST5W;6if5GAqyg?UPWsDT?hcbpaWnGB2+{NchPtFVoW|uh41)6Yr4U2q<$aM zp{Y`9b+f2~Is7y|cQ+zIzamr;)GrxihUo*g7gdxP{RT0iV9Z}y@V~&nJo_8n!Ba5l zqSvrf(_X=tK8C@3=?l?hPs2B;*%S%W+3yF{M7YoO~csj4Ylh;@J4RCF^VqU)tV|Sy)TJtW}22_>(D zqWw*2ft%dT@sH%dBzH4`Xr~*$>*g_b7rPsbM#TC3O>WKG?A6}d=D|SUnQu}(YQo`D zCL!&?Ot9cl6Ox)=I>(E#C!vbq7fFqFS@0HQ3{=NCjz$yRxPsr_Le&2^B8Oid0F^$f^k=8`f>y@Sdx+IF|w??$P>Ac zX-$){%z9BHem10D&bu2 zZP9tAV)h`&5t^Cq)L=_Y*fHhpai+XIYRUs^?ro7_;7jHsb#zBIA5hG@1E=$w6hzfN zY;eV^*=z`B2QC5lc~^=yJo*dtT7$J^jp4HP#+Cg;KPFE*jmRriq*7eU37>x~mCasB zH!6p;7}xSOC_MCkAkoF(Z>wL==4QC?7P56@nnosb*d6x1@gS6D-KL!NvO`aa=hMn;BrHbdeS1f?84?RHoidC;81&7a44!y_9F&WTskr*=Xqxd&it-a*3KbH()v-U`$?{!jGA9iYxu@SY}}#a?ey zMJSdu?Nr+IK?$_nWOqL|*sF-?UsZ&TBtzK+jWY(4CL1Utf0s(ah2Q!*aM0ncH!|{N z;}o^)oG-U&Om|A!O-?hwVyRqf+qRQQuMD^pM>;2L|f+Tqt_k~>6H`iGIwZK z>_mC_G+X~J`g^*RbiQP}fF;_~1d1%>y%@g>2x5&hB-$s@y*!~qsg?csoXn@wKb^3> z{1SZ^YRa!D6E1;E zd)2Yi--H^D_zIe)4Yp5@aa$Z$%(V~bsu%9q`03CwzW{nEdM~Jt^b=k>z}~N7*Dc2% zP8Vgli|w}(>3n}~Gq2;QVI3R@mkphrf2JC#^wW>YfivWh6s(}w?^TbMN9MoCz5>Hm zB?xXWEoiK~*2AIM3LFFlN2ZPvvM~OC#~gf;iOR z4_C6*EEyl2Lct>ko0Sr}CLStmVWcqK5qj?0Y2H$W&rcalt%~{KIHpzhoc2UzAU&iD z@hN}mMK8b_i1LUu#p%L=-MThxjnCasYNWD#+bwvuSu#3QE&D0Hf(EspGHAHuwo=K- zMq3)e)i_mX5MM%#?U&oGR=UVL4n9CZjxf5T(SU=FI2v%#!4c}ux(Oa+@#d~PT`$;I ziE?dyaMV$Fh}3}A<6z+q!NRRbxM&zw&bU!TG&s)I86{nD0dI-Q-gBT-a-(Qf1VvYHgk$$lqo|ixq3E;!{4|O>kCWT}TUZCB zmPfAM)g}};;v{8J{-lDfJn|Uj9GyP&O*X2`12f{P%;TOvKa(VzoFtq-4_?dJb6XuJ zXS^fRH@LeTK!-zf0R7ts(p;VA#L+_S=%(`IHd$AYfg(c*MaGYd|IrmcE`AjMm;E&H z7b4y!JmNS^wydoolalaieb^1hWx=IR$l^P-TNSR<*l|3&3;pQkMJ#x%dX5d));rf{ zlPG8v8&Ugmuj`jO>$Z34YuhKORrzo9wuTo49(B(l9D5$?W&)!#iVJSf&>mP!STQ2L ziF3yS(%jFtxU=akyXg4&J7V>*E1ar3z97%)SpUpS**9ba0`IExu zS62S33ZHOB2cJ<|Iz3HHrcRaTJRL4LfMFIb5(xgHT05DCQ*two1<~e-sWl6ffRV>ua znQ6K?9$%1`hzm#69?=9rbDu}&+B2ZK%P8Uem0EI_N8A|0bK-DkIl4b$*3-+5?hj4+A~iHCqgyc9uWZ)j0<{h=VTtl2A{`AsbG}yB66jZRU=Y(^ zIDc|6XB_ULSS&h(4KnL>E5{T-W~+qy6@M20KBL8lr;yR3Sc!_KGPD0w@ly=UXCu*p z&QRd0%eg43lU_UEQ}+QWdLKb^02J4ETHR&p{RgHMwYhzb`owi@|Nn}gTVOw5T6-+~ z`3inaQ^^o-!{=|w*tB}S=rEKPRTzpOtJL^asR1dO{mY$VJN)}N`1oR}!p9BqvMif9 zz4?Mu)|pa|x>q?*L&dGB~u^fr_#q#oydk+G!cq#4G8IOXN60Q}}hSg>eox@3s$5bm2T z*vH-}i{~*05lK{(;D1nVmoWR!5x>q*&9nrSD)Y}*R?2^m9-kxQ>~Oe)f!<2rhDnpt zez|4}hr&aG->8Oj_3Y6NkCS_(^7&My98ip2{wAM!nUza4hx*d2Z2JY)77H|W^v{G0t2+@OhL#3*MgQH!DX-MWKA6rizHniF zQBPNSSLnK2p4{RxvW&nBM_1ebVgVrRI#O@`4m!zIa8E(6U?_Y8A}w z=33)joTP%lmux>i{rwTNAcM4r8fvQkcCPkNV|JtV$`-jBidtW|)2{VWuN6E2ULRUr zrf_1t)`l_karz^{AKDaU!kcoZQv@z6l)Ut2GvHXUe>uZH7v&@K5$?xym~n-tFX1wd238k@7_iDfwr2#;4iwYgPOlC%(EfzNa1k zPl@-|$||@dtI&_d5_gxVhW;RiX7~=3%`xoQO8oY7_ysgGF?oF&0ouTn7bc%TaPQ%L z$de;!)I_Gvd3Zu|`cdw!gnEpt22$6^tl9&2pD2~xNnoUkpEYX3p-ahPlqP_kh941S z_SRB}j?)D}P)vqa|2f%w=7g#K@Z^OK{fI&Tmv}!}<6U@CoXX%l)-`*Dq`GSl4yH_$ zu48^b-}{I8rGK11=ArrJ4|7@apS-B%m1AnTS>+N`^>r;;{jcOn__^}LWPbopF>$Di zGK?a<`BFaYZh49?nVpUU&3GFco4}!YfoAm{o51V8Bu`D%AI{b4KjICKX%8*ooYX0h z&XQ!U{&acb&E*`Py7uOnhnEy-^}pl;>&Hj)8ftz_)9(MZ`W*Au3bteGhw>2-gWbFq zaGveb9u`a`B0QKW*gviIKzCB1N5D6%>Q|$rj6NQnEPWfA)5jIikV;M+YRd%PS&WSE zQlV<$)L-(6ExDi8R%ZwLTKCURbtwjb#PBN=HWYkf^fYT1!Rjk;qKd6i!@?yJdyHP1 zSe=T)VFvW}+u{QnKiM(Rpa%7n&Ix6em{`B9NHc)cb{rgkUv+GcPeh+jkIydo>E6DY z%A~h_@&tVzdD7bj@}#$=N2Ryx4X>;G<8F`N%Mf7S&)E*d|Nf*}RohhcP@u7+}uFAH%rm+ntedrY3+5>M& zMyKA$i|S)|mZXL{>OKV*^j|;qoyJy){VjTq4r-}eZwIOY*-14ItR+|vr#yt=m6^Pd z9ciJTz^N$s{!#&x&R{EiK@H{bd}XdYW#4KL08qwaA+@@*_#pOAq9~QrvM7t3NFeCm z%>PdQ*YdxrNPFcyIew1{?70Ftt*gl3O{{XzO?a;1B>re?G^;%rd3NL>CLC)o&bXMO zifw;;YNIgGpPpGVQ4h@&hwet%)bfZ$NlInwr0?{P65nr?Gw%1@8lS6L{buz<>!h=O zj2ZRJGcm}0wrdVci2G{*i341fzfW>8*EFz~sJ45|IrR5Z*)L*&yh0Lj?EVTEfU&B+ zVNMT!_}>y2ok&4`y7fv17NdjX`t?`BA0qegqlX_(B8~eUcBQ0D)~pz4-*_@9W2+P7 zT?B!tss`*A@2r>kgt~sWh>%O`N029Qz4UmW7zSj93Wnm6w9tJ-nKoXG zk~=u|Cg8e)W$K2&p`6mYmIR@LJ+(RwkU|HGw7DgO?5`idFD&afJfd&L8snuNTb5R* zc5V_IqlKOYu2-Q+dZYRRFekDqg3`p$O!<0)ucjh3@q}jPxB}-mXvANLh!M)b!*cyy z7S!s!sYp(}xI#0tTwDcjqg*#sQ&g6HToW?+{u5l*4JwZvAvq+%FA>9t5aG>ad^??| zz>5?B%B#Q$mLC?>gOa+l35#6B&ucv?<2Ws@KarG?-lR}867YKKKM$N^D-IO-1uvrK zv#r8P5txGKP%{kj^80WfcpB#d?l@m{NXqws2nhO zeddi!jB20LAt~XyYiEkQAOw4o3RM%*5$hsF&T4`b^I*oUYTf+$Zls(a7UG@%a5BF| z^OvTm#~X4+j5#xSN?k+nq`H>iiFNCPJ>izYlp-9X3)f9#18ZOd?>lVZseGmtZnjc9 zKqiAY8z_C&W&^Zev^sNwNX`ls7vBpi&R30_lXDbC>Km$i#|JNJoHna%23Xv7ZyMs07AYh>OVFA(7%#;s3{Mw^DR-DHV(0w*Tyw}96*KnI)4CDTb9JjJ^3T;LL zE1ANaGE@#GfFi#ukR6)U2T4pcP@bj-8hFsPvCymwT*1>KQmPXw!hwX^j&PfXUBI`H z*+dnnE~_LEawHX_l!In5HQcPpPjI!wFndhSVoaVVH2Q(92pSbdgLd`FUItC(fepW%5+hti8sx7io$57uI~Rm2BjY zc~b-PrUc6)&tQ1-mNX9i?W3~b>9RlI#MBaF>wnFW6GQi2;0k2stqJ3K@D<%c z_abc-uXJ=a$JW=+73kYkG*j9)uWa@_y{dR#(VX(g`JGi~Q-NAvC9YSX)rN^3GZ$wR z!L?j3CAX%wGljUv*&LN2FDx0(V*S zkhq2R+`1$VM($;V! zVm%>_5oLJj`Fd^BY?6~pR!%FVZ>83w8#?^~>c)z~MG_PTO{AYED71}}k<5~Wf4z*Ulbzg`Sd=@quWRlA%>9_pjWq#4loRXNie?0SMIu}EpmYUhU7BU|{#=I*wD;x&< z7C&ns_hhbSIbNyP9|xo+j~%nr1%C&A9rzA1I=aF){U67N z@3ni5McKLWDn4b&@pJIau`_o;+1H;rjeDBR2`HO#3`jekIX*}Oj|0*}@lr?rA0S1i zs`hjNXNnJsb-OjF9D*XwN9=1#ELRjv2sdAF`=dd*XI3TV5)WK3UnLDr)9PWU# z$0n*bpH6c{N=U&FS#f>BjQt#aZ;!g8uV{>HeTX&6E8gF0uay3wac7$L)|MWtc>km6 zeW-B1 zrBmQ2+ACEL8*d12(cW5bjH&7Ip0V^66<+$J5f;`%oqwbLV(qO1y#C!B^AwemxW`&P zpVnRpKGXOm-}`&K=ibDc>K{f}R@b~eYlH*#+jB55>%&xK$oEG#>Pc#vhv=n4Q%Ce z9Vd5sj~Q=1ELfM~ZJc*0KAyv_=7z+K6CHOtWSpovt4l^Z!!7arQoB^=MHKT65vf2d z!G~Jc|F#?ZypTM|6+){%L!_Y|Pxf??`UY>2T#9Y|X^LFm`OB137WZ`FhmHcsuL>x( zPKy^{=X{?eDyOb;-r(f?=!v6q`mG(eIaS*^ACBiNQ#sFca{ld@oTII0y5_t-o|Efa zf!4a!hIYy^Id8D;=$iA4c+QC`=YO1>zdR=AE!N{;yry8LHyi zJ&kl3-XhiY*EL74!(E1VsOT`7yv1O#$*ZH1yIelec=B5o{~WD8$HzZ!P@faypSP&b zDe}pde6JrL?@5m=tFNJF7zcZ`^MnBFWx#6V*7MoQm63S3mBHtjxoCYmP#K{=(VjX4R6=2mo&tZn()S8 z0eKsu7j?~D8jt6?Z&hl>m@-wiZe!>FVeMSNqbibyJ-G}d3Y-KPMFq(!C@3hXqeO`? zlEH~4fFcMg$a-N>cNJwuQ3MhvfgFwltctQ;Syy*)bywC4BDjzMGJq_Gi-@8Uym7`s zMM3Un{NS#;q&kW83o%X)lKS8THrdB0;_TIQ zM4@GwBUD%6mwtGq1OJAMh|lCVY+Dpcl*bY`i4vVMgXqowd8YiAVVv@+DQELt;*_L2V> zaRNhABTlG<)u1DX8dfD!+k#XS}G5y?+2h@HgA?T&eXe&R=52V{xuI zQ%zhZV3^6orAXXDIlGH$?!w!PG9O@VD`nrL_g{*j@UPb<%|^~f$jpFANtw(Kcnec@ zgeEmCVueYjgPZ8R;fXTmnchEG>t8>;f2h{q5S}Qj^742|c;WpAGVzCM;6 zX{Szsc3Y2!i?J&+|Q#IvWjo$jjjZ>Sx*ae7v* zpKBN6Sv4HWlwjXGQW5*JpOkU_&mmH8G0tsH2C{7E?Eie`nA=D2D`P&@)n~3%PvWt6 zj+yViRbhht{)Xw-=k|W?IZ82V{*FHOO`j@9i+$5ax_jf6?***fd98xQoXW1?g`&y> zSxZQDoxHbS-a1w`_Oc#Z`lGKl)KUQQNIrQ(9wYq*R_{yK`)Y^gfvAPA_j7Z}6zpbh z>6~ROpk9e3^lO*x`BRRoAzt|*%?^qBD@iPvD>lhG-#Uv*=>ln#;KkxK6%d*vARBx9cRqd$iHIJR0C^5XXX;h2P8AS?b#f*pNOZ5J{C2A4i zb60FG-=)0nsxDTgc&g~Cf0C6C?pwK4w5;a(7s5Ge{WmA2MJfYWT=p!Y>*6h)CQy`5 zA_}@Ha>LsVj+64=Lixj4P1O8>miJ#&zddK6D=RB2u#qd2{)J@6!Yw>{BShDUx|M=NZ)ZP$6{*`(rNqfadQeiC`VXW!prQTDR3Tm(c1_ zte$4b6%$66{ck|cEe&?6qOv|||4qem6D<|3q-mBDtr;f8VH3OT2b}0Mx6oHE`(~ok z+{%-vK}7kc``z@v*4KrNqAwztZR3(h`{6vY3l|+ebXyWH&^X#sI#TN3_XKC zq0Vya*r?x;m;X`y_gs=&FtiI-jIqw5`9JY@4JNMpt#NW`e?;qlso#Q*KR$`Kx$8Dm zubz-&bmda=D$3$*!wq(|G~D!xGfk}G1w+pg{9TX2-wpivKWQVCi_s(8!$7NshO^fw z+N7uf#IZGW-G&KySYnfda5?d! zY$;U2)z2y<*#)J9pVHx0*LaMY%QeFHPtyp+vAHpGmqIeoKcvW*@rXh)NW#@jO+YwM zJN^!ccEJVE`J4u5 z=$PaTQdB)e0pzsrcal*fr!T;8or57u_+Ndg0?5iMY-iNmr~%$~Xvh`Wt3E>k!Jb!ZS5_eS+@)x_!@pPB=N!LZxG;L3$3)ms&SE4Qev zQL{w@WGfng+^kR$I8kLG@M1D4kqop^!a&llB+T*2q@KyZk|Z8i5+;;PYDfmAC6oFl z13gX^W`g;>BuwjM;9xRvPZB1QEMh}4=8I&^$;p^Xh1s$1&HbDK>tZgi`jSfTQr@Zx zxO*EZxfdw)a^wY-jIaG*D)+=A9b~)D#oZfY!C|BSA@eeym`{vFQTglAA5nx3x6sn! z!Or{?oD{kwnw`+;{3zgrKF1OJMxx1(kjy$!AQubT*lPZmJjc^M{EZP_d00h;o3f2* z^PPkO5)$jeO?l&o*4yozC(~Qr9|+vSq{KV?&f~FP+ASgY2Nmof!G~4wLJ2-e(CQo-l{AOXii_hd) z*IuRODQu!9gObpSJbtq$c}mT;&MWtvEtFl|x%^wezZLxZj(_X<_bvZE#1W!vy~mlUwN(}DPK(`8Z%m62Mw1d-&ecJl7W{^ir-p~jMSV%5P$DWpyKK&Mc? z;_Zikgqu2rPIHn@bkM+l^rixNU4it~{*iTQM$Jrmq6Rf;WH3<0DDW`gv2hY5U0r1G z9%7(?er#0Vroz&fIh~?`3Qj^M7Rp#6z@-3~yQ@&m308?W_^N)A{$HBEQJP-z0`k|9;E} z%lCmJzRv|u61Il$A2Ys_@tMC9kiyLGBf~F|p1D8fj4wWQUigZ#*33Vj+si^o$Nq%n zD0PSC=VwccF9_bkDfymq`1q%#z2T@mr-~yK=%E`qALXj>$rwsJSWk=J4$^4Vf*7}_a@?; zWi6Q}U+?p!PFQA7|M$76mDNXOUD3Y#9Hq4rTknyuk8*THC)M5@;E&Yr|Q$ zvU;x4*Y+>8{EcS+b}M;ner5m8d9a{l9!^txtxm5unai5$*V}uSWe0z*y{hZK^2}w; z`PsC3{kQY7&4$q4+N(NS{;%*>yt02c&~*`Xmx1n7(ESR&ZvP!$7t3#({X4Aee>V8e z{9oWZ`@iEm)AH{$`xmY3e-8N0`d{EX=fC4SE4jGo%$}0RSTfx$>Xp27{gdmRm_wY; zr!`9+9YFKn_VivB9=mh#(7dWUFAF@>jg$$bsAb6~N#%R~Cp=6U@lN!}JqeZ2#Bj*o z{&fK2IxpBwUPEv0??IkSx5|)q&O!nb`hlC4J>z&Gbe}GnEOBbdl4MCMq2fHsk-I)} zs{J=S64efRIBnaGaYIfdaiqV3Bd*N%Y(KvUm?EN>aI^FGtOrv)9IhO)t`HRFAi*#h z-@xiFI;DN{v8u^=swO%*cD||$hk|006>cYbD_)Q4`6KAg%8dG1L>mxxN0*X^pW;ijDU^u0=x*0G&q zmp;u&_IROm&8wkA_1plbxaCe(#&xLX>)DDv;lV_CbDLI%pJz?Ks$d~~)3veDSKMN< zT>t#~g!F|MHBCN`vebQ~;(fsjSQAXs zL;+K_C^nBcvYaUUv6<@y=obp}vtnSi?AFk0D?T)zSsu9MU;s9j$L5 zwmwk*MYip~I@`5xDms8a`iaj79E*i-K|DfQ*tZ^3R3-N55stNAw9RDID17tGD| z-?zx$T>ouO{^owQ7tS=79VxBT6^ux?3JZ6bMPuwAFj)DZpDXQ zJ!(He*2k|MQfe9gn$?r<$HO_h)(bZC?-Tz0=x2uEdzZ0_0S+%D@phTx372fkitB?{ z8Vg!YEA6%(?}5{@O1ph-EVy=Bc4@bt@J2Z;r?lH4UJEo{+ncq{cx^-0PsVFovo@9% ze>r{`<4tRy`6)Mv;|m0J4k4E6=&a7gGPVB!VLl}aLf(BsUgeaWM6ln#viNm{x>Q6) za4>fRE^#}#%8Hi zwwd)QD_+Bm%7~BrGg~6H^^$+py^s6UT3<5f5&9`9zee>8X(}|xAi5Aor04KiY8A@G zf*JLM1J(n=+I9RB*6#8xO|#Xxk0ktDrjO#`_644@iEyLv6vvC@!qXpx$2nCibCJqT4DO2GdJ4P2c5mKF@N{*Hx=bCkMn9-s*$!d>(QC#-PHM} zYo(7E)v~md!4P>8Imr-t9_dJiWXKvmAyT&g;li$v!kI&o^e;sB#y-6`+jNvdN&Z&#|Acq;# zZ%XrGgZc5sZ-o_Kutc263aSIbkisTPsGsXg@h} zlZfZ5Vd~F(B!?;Cg@Ehz;bB9{ab6IJULkg(+~EuLN$P9o!8=Tu36jQ@^3nEiDI(f` zv_xa@rHH z`btErWR4}|I2Hw)<&d*Ofwl{p)kpNbde5_JXF%31oM$@R*Iks{PUecl{e$O6I0|qbHbMrVG40<( z1gr=1%B&Ea|H58F4S9ueG+Q)zt`L?<{X%JUrJrSylp6y=!t{OxzDw91sg_#}zG!Y| z2yn%+<>OaM{C&(wJSQT-1s*yv(B|EOQ>yO9QRq{j3k z($-5_#<2c)WCJlPt0NovIbv{sJ`kx9TmiFYj{HRaEwl(9mN9Eh^8vpmDLw>$m#lA@ zDUum#8}C$J{H@##V~0>GMRa&MGRoDpz4pufAM`$~Bk!!hJe(CjSAx7B7bHCXxr$V*SWS`PV59koAK!X9QPO)8e1T%BI-O2PAjuy$R662b1ONut+Ivr z-2(NooYLA3S@LnV{%DmIt0Y&MIchY%|CE4QT0m8wF={?xr6%?jf4CJt><%Cu)u*+M z)%sx1wB%Q}VA;%WwV3n2N8yXj0LLu3i=PJz#`13=z{jw!l(VkG;!NnGGV`OdTiSK@ zU3%h_Gb)PraKVc95htH$!Ta*m3}iR^qO#ucJzdtPeMYNZp|&Dz_c*6(EGHRn5>D3; z6Ab|u2kdx)llyqR68&rYw8Yb`NTCwJzX?K%Rg%eHir>(@F_#;6wW{QWS{#p$UWIG) zRf+@b$}`Z;62Di)KL!`!m$2RI0N|7GxBNSZlfpYU;Cu6vF~-;Y`;hQ&@pC@zlkf3! zPM}GB3?)G7urxtOme>ao$pDsLSb^rYwCY;7CouDTCLU?nH5Q8wsU zH{KbFW#1Vh&QR&~p-Ud@y~u?|!f5EVH$6R#ozPz{FO+<`T4lX}teLadSm!aw$hq$A z_i;L*<^$?$Oc#F`+{*rTkh+!Kg5VE2IG}*=ZYNwsc%KvQN%)Wx?ngM`ga;GO8LTgN zk0#vG36CRuybe#TgvETeaz1D2&(_Z8T>aU``JAsm4d=5?e-=2O4f?at`E1mmZJke9 z?5Cg;oKMm0e718w3-qVQ`7F|(Cpw=!_2)^>XFvVf-uaZhVo;sze2&(ir#PRoqE70m z&S$0m?BIOP(w`lj&$;^ZH0N`^{_Ny@*6Gh8=d(e7{>J%i)Sst2pS$>s-_2ox*0~{$ zxN?+RovXN>)0Kt(#$H=x4hdzBze3VDin&})UT&|D-@jrLh3*>bSd{gH|p?%p>3 zIKI2rl}JvXQ4!@B3XcNtLOeT-6c>6YEqKc_oLLc6@;qz^LaPr4eY*g8G?&|-$}gsa zxOsd!TP}^Wkh6^IG}bL*jOgWAXMT~o|Dyd3ViveR;~G@J0+YYNepaKzNXL6Ujjh(t zMv8|hUi%)NRTf^6T^2q(<^FbMOr;{FojKmoxT~z&d*$X%o)W_O$NoFS)_%{o((k&d zEHWue(ejC1-&fs;lS3kx=pxFh4p&mZz1WFA*e~2EDsXG)RJ%Y@@rjWoQ^Zt7mfb7{ zjQawIQn~okR;CM)+tg%lq&^&CU;LJwL2S0ZCEXi;VQ-MaiO%N#CG~^0$HO}(pvsj! ze%SWEDXbk?8g$zR$7{1u`xMC_ahIt$+^I%wd%hrHH-dUn zJ7dO)q~X_i0(huROHIBNBc zeHA3q#sPDsJ?afrgW$(BAJnsW`>D7uiwvD(_Xi4RMXep@xPfB-oZ#!U8!%fmOr_mP z!#o|ZCRGyONIXZuLW%`7GLp)~ucMRtg-*RrQbp8g-h{lss#cmb;%&*oSH32N`;6JR zS<+syDc*S8&sj~}2YWvPPUIvqw9bB7ftJ=zVpxv)H-QvBPm-fkG(cqNCVLJ5yi2{w zU!!j+@;tpUXp0&nOO1j10HN4{p>E+3K- zp0pOcW#2a(%NdlG_j8{bnw2H74v|{-Na2{+VAT3@F11 z8S|579k_Y_t=c&UqV>t*$`YcWsl*Nx}dD8X$xAL*RCS&hc0i0;df(; z{Q>7K4%QXgbESq$ktF-A?k%`39_j>IS#~(UsVtJ;BKb0v+?nL>f-eQ4%SA*a ze41QWKUuvbWIuJAG8Kczm6}~k&C$7N7Zgc{Gj(l6EqX*PR;>_LWU$TdNKeZcKhUs0 zAI^8#pS0!HJ~$wO8`dSZ#H~!nbtUdIiF-XACxgs~68BsxF4(^EQkSgUdh1CLj%Mp> zv31jNzK&XQE)>~|Mu{OcE{g(jXtjG$KO$v_dH4ny9`-GfZ+o@?p)7J(9xE3|XQMLw zPo%~#+EqV*QEr`9A^yBxq8Ze}f}EGC5LGOvtjeu?^)$&95@{7w$bC*ZFD0rT>;0|@ z>pZI^H}A!Teef<`DK~0j5aClJEN_2h8xL<*MA~@AuZT>{@=d=fQF*8-*mlgU%0mep zx>WXU3K=nFiC6Yz)%7oc2NJ6|sYigZZp@#V9$WE%X(4)R3a!!~+a_9m0x~5FtpDg0?O;(~wa{xJHGQ>Fw z2#t3oJr^Io(K?BX7b`g7l~e;r=1z%)tS9hdd3{+H>)H3`(re@`IG!f%I2FRgq22lV zwMl2p_L&$J^||=XKkPF(`g$7vri0XmV!2EkTu< z0So`|_|gLG7H65)##`$c9?_AQvhZ@Szjrt$qX0_{XZXTjO^N49sEqaP#D8Khk-%j0 z1m{4{!^a^W=Em@s`#97s%N)AUsA)@-7LhzcEBznIdFuXI zop<%A#CcY1A9&!Ea79Cj>jst@P90OfoSlfbzbuOkp}{9L`6ADBb`^2j;gD-TGl{S) zZdI7Sl$jf2dqLa`M?I{^DfAg-ksF-6kL$b#CGWi__^J*kIJjp_mCZumyHW#%YHRG3 z6t%CprNVFLjH#~^IvV3`G<{DJuW-u?IN|r2Vis8{4>sOAPS~-_VMil~jhdcRZZXM{ zu9zVa8qJx6V1_Y2%ar5M!jVSJ5qX-`ArOHGQQUp^XVAD&WHKi1mnskPc2OPJrQk-V zVEHy`#48^KnhoK`&r4L)<8|r~-0N8s+9~Q^0e~y^PyUpJ6WM~2vhpd*c(|HDiHi5n zj-QfDGakM>87b`G8dXwYBC}MRaPlOP7=OGbGxmVgp#H1ld{tk`iIgsK9L1Nl!dFG9 zS-kG9tBxh3sEBvlyR1@CZ}=O`280cfD>t|D5Mk^y2uyK_waN_@k=qg#=8m#%+l+@> z=hE!hccvf12L_tU!(Y}_9jYWx=mMX)$r`%w^r0WIXT-w7HJ*LPO-TM0k-gF#B~7GDz-hR_6rG%3p{pD{u!(gs6hN5uqeP?9>Axdp zVPE*eU6(2MogDA0Vy{lcRvnhf)p$nD#`qbEVgyl_PgHpS6l0qBpHjI_B^TQ#@(fX8 zO>C^-P*i7RC{gpiY5mC}O4E3F$3Ye)myM}k#zW7XaygnvXv)O$!64Ae33OK$TaEQlj$mV z7A>Msr|Qy4gSn3dmRW(=r9hM<(9OoQH)si+Z5>ze%w_f8wy0cF=c_I3+_zPwuhy5U zbu3@gLG@k)vNST6^JEbCMg6xJIbYVt+g856#aD}$){gQ{rLXqtEWwt?MtkL&Px)lu z%a;>drpp7%sQ-dxL>6c`QU;pB=2+M+^JT}UsAj#t1j@PY)Xt&2RppvSCqs+MFZx!l zp#nlhDopd$=g@?|#EQv6X2|#mZ7fB!tz5Iq$=oWHK~*7*E8AfTIP^#u+e2UO z5_N{7m^4bCsw!p;|(obBYV~Tiho?SzZKru zRo)*%E%CZagW9#it`4@uaKk~}Z!jYlZo^u{JokugUSRjwLp{U$6QNUMH_+6WlTQL* zpXfvz)gl08CXcioa_bkw%Z>gFq7QY>va7CFhOtq7vVvjy?dLkuZFS1|2(wvEmkm5m z%t{PJ(Y)o69&Lb(i_6>8dI3)e$?}&h?lF(4ewCm$j*aTMgk_!_2`ywI*}#FeRUBxm zvv2=dXs*kJ?wtEWWw(^p@GzI1XbdF$@>WR$h9IOg#Q!P$yDD;FXVze4M)6xsZ}2t> z;E@7ASCx0$kLfIr@~GF8wgM)Oa?($dDY?zc*g*J~%u z=3A^E9k#D|NmkKU>MdTm-lpE5$9G!cpYqg-_ou=)tK{@0GD+WoTd9O+@5#(oSRENf zUa5&0O?bYQIM$ReFSmMZCaht7i4O(P>i}Bb-EXO^c;T0nZ3)lolF#zyELT}nJf-b< zJBcCTsdY-*^H`dR|ibuquICNNzJ~Ym@Tm6jAVtrPk7#Luc)#+WmM=Di4)PD54+*V z8}BL#6Q1b~@K1kHwO5Om1r@7U3pZ+HX~~$rfWMHSa@XqIt>18Rmy_Eki$QQYK-gdX zUGR4tSG|xhEkr?AQcz-}G}0_ekcFeDU$6)f185ZbN-c#-8*gMKrZ(ZpQxstY{gCkN zIjNOPy)AIh5BYRD`_q9aH(r6i3F}9k&3ZTf+u?M=QwOXfWGR7IiL#F%>t7NrHJAG^ zOoe}ZUBKvfR>?nCwsP4oy+FmS*2j5>whBQx=WS40-h0T$qCbSOxXW>{#AZZM*Xh2+ z)LOoy_F{5NrL2;V-xCC(28=Q~^e0aG(}Eolj{4_1m5#v>l*3#qEekZ}GJ)g;%7n+D zM7j#%`OAqy<2GO7BS84e#=cQ4+Xj&L$Azu1*Z0s-A#yE%PD#B~Nm09_Q=;YV`!B%~ zm2@s-d@u8E9=EaQR45*5{FF@9C}szLV|kcTRAn+%u_J$0d^vc6R7?0WVS$7?j-W`n z8|N9t?RaT5IX6KKt&%~KZJ1~%*~R{5$U^&ROemiIwL)X4d;sMl&7%V{bN+^4}4}pKHR)RTYJ-c@9|zmy$U$be`@*!cG=+6Q1SZ5aN&@%KZmlS|Q3` z%lqsiRg^k3r?WJugh{Iso+@DJ?lDYX;aw$EuqKbJjaEpM)W7$9o}!&A)sP}9Nm7BC z(zFqt#1nV-L&2zE{{*a(k4bY9p6=ifF0lff@SMa4*~aQFton@TY&h}@LZH+^l7A5) zCQ|Zp93i&6Gu}#e0aYpVzbYeY|0Y?MxBow-{>c7^Y8g%BelA`$(H)ckN1mnxU1g`{ zNFtn>G+*VQGw`AO2iewhtc>y|z>z-2yu)c2nA2-R!sAzxKB+;`T&ModPi&0MU|!Jt zd`YwMF;KNr=~MH4_G{?%hF~#2q9dv@!Z@XT&2*`oF@&k7u^<$WLF)9r=`+~*{J zPO@q`?<1MA#1+Yd> zp>OHf#X9yyiIp4vu-Qeva$H9(M5dS%)1xEqTSd3ZTb2>`%jXIw{BvR6JdC*p`-NxJ zg0rgCjY0{GTS1)W%r%S!GKMKaOH?wn^-*Q0)nTWYn&Hx75%+_tB)y*#asOTwrZzvy zwclMSQjD?g8Kr(xpi3Q?D)mM>Fb+;-^;s3XLP1dQasqHS;aNt2fk{y9cp74za%hfEWoSBBsv4Fx=;PJk9Mp=%?0mF^2lv@u33V-D&woc9xwP< z=6x9}FT;LT@-O#4qDA)23Pe_xgIz>^MZ_%cK||`gO$;?unfC++jO~BwSpNKU+82_h*SGa~U?E`}kwQNt44|;j8CnsL`_m+RMC_`6C=yh+ zjM{6+qBNLyg0uni1}J6xgymQ0eA?QR6Yz;H7Ye0E)L-5-$n=K{eFXt?^T=2zNq&01 zA^ZZq{Sol(6}&$V>6n|>3%WHOCQXf_1Z8W9~*}{PEa?0m+jUs$x?0cFl zxt`KoUol^+;29X@q9q{jgj?=&Fx%-Zb+D~b_+)h~Ya|{B+{_bTxahQ{`AArFuhW-mwbsTD*dsR{6AgBZZRcGJ^jenCM znIuS*KHm7ID#%=3niW^wbaVZoPRS$P$(e-qKa|?<5PDfDlN%bA_k0Gxgy+>(iko&j z%0kL{V}wd-esBMmB%v~D9hhCrD3EOQ_+%ZUhC)>PhnO&6l=jsp#%b&!3WRzwRz>Z% z$jYkeS}IZx3aQHL=P7<1Pd$JDPOaTzv-T(=t8OEZ-T)O2l5x6xyf$spJb^Ex+;@Nn zDFU?a4FxJJ`BEvT596)WF+zK4DJv<Dqn(~jwD-H|!d!JBhfNE{} zn&O{J7R&m>o@ofIR(5N$XK8Q5&D+blFR{}7xq*KlR;i5YX|kp- zXCe;S$MreLfZF<%uc5TKb`{-=d#ofMU9TclFTBIbB#WW3fyK~(RVfyoJd?%z55nXW z4fgM=Qg82GBo+BWrzJdJKt;TS2psA{$qpKF|*HqT*)xG^0W*)@uv_k$Qb!r$xgWfJ~^Fg3JK zR_uz}S3jml3ejTXnu?m9iE=?XCOq%8RE)BF03+i$-IEJ&!e!?Fk`^gBy$v@4pY5&o zjg6XD1VN;vHIXbLZe$TLR_c`ZvdS2>w?CRL?;%~@sF$4bhC1c_8yKfNAy<{>)8)P1 zn(}%i%ai?N%6pbb${Q!;ZKBSh}FhnXcsGXZp*z-yNy?=hiDQtpMSmPg4m2)QxyHywV zVJiw7tP2a>OhGG%pki-*p6^;DyD0X?OSym;pk1fuvVwCmfj>&1fIy`LS`zpjfq+Gn zx8`Lj8x!iVTUYc}%2sxM)HW5LXk?o-1++~Cm?&=+XuRc6c=|%mtSeZH9>Twy_;)A& z?&qIex}V9vr}_6c{=LCJ_L&mz^Y2pDuwUU{dyMHz`L_6doPW>q@2^hWk@nD#!3oc3 zMeFjTJNm`dFpg=?RcNs*s9nqX5N?$eDfr}&`S2{=FX^u@N-aE9$G67C1(ns8>1ghx zUHOCX$vMWVjhe0>;!O-uNr?>1&6qbYFH{Qa?-oarE;Y7b*RGd?V#1 z_49Xd`RHb=d|0ojejxn;{oGS>X6om=p-NOK@7DbdY?gNz{WGbbFDFs-v&`tRE-p|t zV1z(FD|6w|8Jef8cl=r9a^fE(UX;G5supBIKfBpp!rgkLbyJZP!&9lMlZ;l}N9;e! zRtW6A4oVb*?9C_?%Sof7Cp?Q(fG+hffsV93J-;;zsFfur^Xm#2{`z!}Ibwd2vL{)e zV9ON>+@EC$A=EYb9#`fp;S0C@0?9UpS2?mtbNiiCiyi@5JCzaNd!;3hiA}8!2Lp^JM zrPZg=p3A#7`n+V2nUH$*p7-g3pMuS%NI8HfA0*elzM98dMu|3w7yG3tgF5P>+FKKIWp zQuykEXK~}xp-0|6l^0DxRT#KMrlfD60+{EQDs3XH??c{yJ z-gG~nkcYhEl%ya%vJ=uVR}k)<%!9phOinB=>xQw3b@*41h{uU2GoKYp)#~4yXU+4h z{^k7ivHD-j4^KDZx}g+tw4gu3mtrF0lo2?d z8W}3j{6fzizaVU8O(O%bteDjiwh1F8fg;hzHM|xkUu#a4{-7RyDmT@`PPD@87m19_ zmdpvyLNFbz-CuY}v=l3+{eaO^%Z_&|lA`uU816De(RNrg z-g(bRm!_aWq;sHFd^V;k`^qI8m$baMCSlHL4g>pL_B3GV|LsXqQ~Tsno26(wn)DqL zwSv7xS&Gkgr2@@J|LCx|#S~>a7Y6V%U;oG%JiZ$Efuxt`iq`4z6u|JWH%O?Ynuka2 zpQkzc$NQH#s`5_!XT%FrWN^A&GFslJ{-jtfB?U4yE}RX3li^$CReD`%{HdbxEk%LlWjmtRlqI=MH#_G zv^?;VBGn=#CeI{N+5QKmRkV(tj3Iv7CRqhXRSToisyg-;oP^QOUsT}#mX>0C)RmEd z5~^}7fDmOrQIkja%yk7@B-}kuMOjv`4NFpMjB zHN|J{Ia<hs#0J6Aw7$J|$p5Ckt$)3~*I*)bo_Az@gQ~ev ztWJH`B9++vlAGGJ$f)n5#HH(d_!M2=uV_j~<>~s4S6Q9zwJPGh8|8pWwM8(i z*^$)c5`|kjS;DiD6pelMa{ARrPl%#s_j0eZ!q~>CmB2m)EcG_37t&D}Nt8BFN>utD zYEx`Veq`9;M}`*e#`}uBb)-Js`Ph+#k@3mB z$GZ}&l&6b$k|G!z&O}Po`D>K3wzq&TQ^g?YF!FmCX?`4Dor_}fe=NtZi`AGFoR%Um zA_}UR3Jo$pAX!H9fmY{T8d1QSEmYH-`A`E|2GU2v?`NlRhF*=GE2y+0PIzKJGhAA# zogBp_$C#MuG)MwA_ZO8?j=LA1NsZV}-E_61Xpef|a`20tVpYR6>upFk&F zzYisExH-VVkUuGK%@EBB z#fIMhQEV80c9IP!A=r={N#G13H&Reg`MXJLKF}P3eHr$?)IVTN(-Kq{bccE0Bpbi9 z>Uq?CBV*l9;$f2`;4|mn?X|fx@+U3R%2-bhqr6Wq2BGuVpdFhejAZp#kC_)y#TGL~ z>n|j;a9B1f_9i@kQn)4-*l#lUkh=gOl*%ML(@0Uq`9#4hX1VCcyZA_W#w#SOeR#Vm zE!^W8L8Es+WpCsaC2soy(Pi{mF;I?f#G-q2Benyfqe=tjvuVAXp=lkfl^?NTLBEqm zPMVg?|Ea2$@;wpNsE#3au3~{c9kA#}VVO5R1AxeEg{HZ=n%1^rV5YRKI#6=M=^|?Q)FBxc1SQDO7U!o3Wg{ym}JgDyW z!!8;y5iKwNx1hyJ6IzVwaVon*>CtNU7iJBp-BnZs%XL58gB?PL!>lYOL~7v)73Y2R zkyLz)e9GoO+G<@VD3ey}2&hupL^=<2Hn&>)3vnt^>ZOid#;{V->iiV4V|PmPa{*9~ zs|=DkMAOA=4@Ef!XzSMslmR;Y2i*zu)!wQV(l;{I`i&3dCH(=}pFXH7VU;YBZf|)n zMNkr+X9Wc+!mTS3usnx;CYf7aUK*m)cTxb8QLk4u*EZH$nD?k+OEw5#)E(tV{!4g9 zsCdsZ2f>vf_-1Dk!5$fRO^u+dM(`(%U`7f-d*b6K(ApXO-^T8RhLYf3AuGZBTlDSs z-wRXr*)D1ob>B#u{HJccsqE?X1<^N0u8*YkNqFb*gy&_Dsl_w5p$g&3Z90E>@mL4 z-x5HZ;VK6&MO}Wc`VNZi8_s_!5cEHCAlgB!yf-C|8Al)HK6449=LA-*BDxe@)ZU36 z)COjoT4^;|ITRsB&xgpuvp8Ep!4j%#C8y5}|NA(v;0+5-Uf0?WahDrXx|-_I3C|P}UwX%m`_oj9 zmpEAixF~_8;pF`De<>am9{qroL%6oRYbWlIyptih=&^QpX6+$Qz6;i=2 zx{Ok^aZ~(wP7-s~iP^Dm%K)QuG%S`!n96PhgvwIR?M&qy`~F;wol@V`$)cGo?@iLI z5zn|{DT)D~qX<$Ci4+pdkNRJP5w5sfZlk@Z+P#MC$E@RxcPQCKoV@i6t`Kr%vLwaz zSDC(u@L1kUlJP>pe_$~bw1I;7C1mpGL{eT+%LOX$xK!SzZ=IHuynmji^8VEO*QlSD zrhcBHK1%juQvclTih6XNH%C+dNU|hF!S|sg^$#WEg#rWW;}<~oC>=}G9&B2N>F=a6 zU6GmT+o_7|8-A5+xjW%7{Z&PF0ojj9_KvZN>)XS{{EAI4G)LZ~j*6p(z|bX8~z zRj3G6QlefZgVWe^)8)=p<<8Q`5}ug^P%TIIw=rn~-lzXSz_lt5c8)sYx_}vgbaTu5 zm8l4L>0)UtO@Q9oIY$xjl}MYM5pXKb`6zmnA;>JROXEb9JTaR>%x@g*!&BJL)PnrG z6!u!qgi43`k1hO|G)JoxCts11FX9=dGYEYMlVXcr)0<7c%1JMB*M2ER8T;c2H>x@G zVCAHF5=U2a*`|&gQ#t8XiR12;%MR(dYbqzrl{i#`%l@s7yR353D%`cBE&Pj^o|$x=@G8N%LJSDl@Jum21KFSt_Sd{jf52<(TI$JA@+~gtQ!0xKkn+ z0iQXG_qdr1xTLS5DbdmERT6;)0>_k}zl~Aya}D)xh1P-9vvnSaQTsrso3D#z@R*B| z&6lB+ZYNJ#DFt(TZH;HYf%6hd9!L@|J}u-@WvGanZ)JT&*Sv+Uc}>35oGYKeu?RYPfbj~z2$gRi0$QWGN@*yP_@*kE^$zaqkhQ*j+RAZ z7EgA|6%DJRp{i{7AhJe%Vjj8F8&@uAvw-Ob^K`rK@H=B^c{^Qqbb^Wp=((QZ;(y|PsA4*)! zRvcHX3K}5g_MYXRpQsDSVQIP6nkz}*f3qry{{>Wp!v9B&zjqRUm4iPvE=_bu<5#$c z7c|EW)&VK3lUYOGf#v7X~#eN3>{)Rme);&Xo`3k~M`mAkX3Pr_3GNNL{gkW^rJ zQS(ClXaQpTQP}p%WEHldWKn#IiDR!HZ-G~6k$^*`kqKF# zd_u(C8aapjaK1K)_I`!ds4m7}D>WyrEj2^jXrax&!HT+`L~TFS-7R*L%pUGiq$#^8 zYQLM`>-r@GNP3F0yJ`W@QbA8V0d#aj64hU&QL)!B0{soqe&VOWRT&sj zDO?HHWt%*IWlfqxkz18Wc3k^qlA7}!Y7{}AO~Ig4g`JwBCQDO8Nn~$Fb`5awt_*5w zKz9sk*kKcDMr&%W&q}1oxK@+lPm%Eo==5ZpQii3-cw9vbQ>JfMOwnXS7$h|r<1@)< zg4F++jO;WS|B=Dg>bQh_8eQj1GCr7`ETwgdj6;nXWVA?;u@l=o)i(G4ugJ(vlQBS( zadC=_XF-?ZMj%DTR241UxHXfEDK$wtZ_6ZO7aaSaxsjJ9V<~vx#(eT=Zk(7&M*XB@ zDT&`}!$0EjoF{!tMEOv4GIcwtDOUXc*fg9W8aL{b+XJr3vJsWm(6xzWqH^NxO3j0k z7(ZVAN)&08lcFv>$u01|ivLUU__{?c-|#Vur+Z&^RdOM|Ozz#hCAb)qgICKa9K1=! zU8A~6#m*&EL&#sfccGN&TPj1VxY1nrDg!N}0LKsgTjJxoB&M)_O?2&R)sq+Waw#%iZyd!w=l5q82t{6!?~&z~rse zDBT}F4VZ6Q35+Zf7x0yz962-}%4INc1{w3}!E{x|@?JEt8gAZRULr(>ISu$gb?! zVtHB0TaU8{mGJy?8$vGj(LW?$wLWbJFq{WCHNCzq&acau=&la!354s$s;30@eIwec zXTrUgfX|xT+rF)%Y+>`*z>4AN6^BHZVW4e3f0y~UoR5{YmfD9ACC}N4hN%50GY7=U ze(G~}_Bms5^DbOW{zrePrBhB3wD_<1dMkXNd@gm0+Lt@{t`rnjNqiDkDAoI!<_) zABbE%R-RzkDQm4Bo?aLmFau-bo%A}eI!GHR?kMMCLlDrPRQGdy5bP;Ajt@lD(O1af zoFo$y))UlY0hCL(@-CwzV$RC#svVzEW#{2tWiWqEgjj>Su*(yz2ZPm`*xR0UmTbLG z>}ucNk!1>owAAAPvD=7A-G|^lMN#rx7lh;_`gLe_KO%Fzq-(9!X;gQmM+QvHBdg>#%uKsnGFYu+pNQ<`GuG{Rh$>kn?WHGqk+`APRR~TD0`g-3O5J3txlJTfya;@l?|}j zbr9WviGY706v2DGqW652zhs5Z7tfbg$qRz4N+I)(p#q8~rP|8OEfsQ3D)6al4b^^K z`tzao#F$>oO(JgBIrqc38Z0JRIWMDza>Q7r6PyQLu?sw{G!B|9<5EVf1If+hS^8JH zeX4fK+*i@*zGSPg8S>a~{2YUyCM&b1Hju6lSHDg=?1BFU4?4Brruie1i{7+{99r2Y zJe3kBOCI@pp<32iF_wNybh-Hlrr5ZB(+B>e_PaVCSpS~nO)}}vD#>4qEH4l{OQwTr zPq0=c)QnYVdpso;gh&H>Yuo`Tg=TP?jZNde8H%*O(zd)Rmwn3*2KeD{J($g&OL=ZWU z^E9N)btsawrD-gWkS0PZq(~K|!Y=|+uILz9nWp7t1u450B!@68G_<-9&)~lGV`&Wz zG00jYJ7NEp;#5E=RDsb>U=mj`0T50}fXlk_DePCDwcI7TWz<+)M&RJ3R>{-Xfk^)h zx0SJ}#L~olCx}Xt)=zkbP(HNTi*HQ}&J_|Tf>Vv*%nrvmN=U+=;lNwKi)f}wydT&y zY|>PTaOQ9R>X#WM*)WlMz>-BlQ6`frWy)`LS+T|Gc2T>VLlNf; zA4rOwuhuWb0iBYpz**5l;d*A9+>D9Mu)PMh6f@4(*qSq=OEZ+h@6qK>2_`^XcQ|Va=_!siTK)_|ptmXi8jMaSU5%!(!q=U)XJ_c}>*G0p_ zryK8)-qqs|6r!f4Y!OE74@L{OL`lg~-_=k>EW2sG+Lnr8R{%{ySIH~0O!v7&$U%#! z{kY01dlCSgL{5+wkg9TD;dHZ>8r<@>(HNYKy5X65w}yll6nTa2W*axDGQS$9%5-v^ znVI9|R1V$E{;YHSM0C1pdv3}Qg!@xDbT_+O=a{8BCi8T~jAfZQ{HYweo0X8mkwhqM zL7mT`eNl-b+UZg!r*POCReRu0K>BslMzR|VPQu3HHrX6*0P%GlYi;^vW_zj=!=qTv z!_7e_h7%$ClrLBNW+x_BVi11rt2i-ki9wgT?8}^(77O(%mL8Kyl~22f)T&99m4w9w zal-C&0(PbL3Xt$z4~=YGDjjeAVV)yfU70JzdhrMM=DUs;MJ_m!ji?^(zimLKmM8o6TE3K;d7pq%58tm5^-xgq!YPjO z=&@HtB(;iCF-qAewWAb}e~yovdOXwj>{z9GMnvWH^40tq-hkfOCSTj-%XaiZc*2b? zqgqyHlJxQ`mF^9wcwR#+c`KTI2^@k!o)czZKfK&VasZxmF{D)Nh zIS$d5d;5P>>wy4>&gq=_DyN7TYw)Q8#0I7q@k;~iyt%rOgbg2GpJId6V<#h?=Cku2 zK=wp&ot5xh1-YC~lg5l+qj9XlEODrv4UXnKDMbENBef-?Sg{zR!h%_}&6J;T(5`Vw z6EQdDa}vCkn%p7Aj@4!3I@PE`U~h$7@QHX`35BYihr7qCRvO`+#^ZmqmhwQMk@QHD zc5p%hm4@OY;Rc6Jk-A4D-W(C@%`x>)iEvGq*b`LG6of zCIO=zrL^|_q*B_D9B~!In<}fLmo7%Dfl_KNdMOdjP)%o0oHVzrg)8?!X$wne%!TGR zp*dEe3Ee{}LZ~B06=@0&j&&$hdhtS)kW`%~rl{;rekX5XCW(*h9;3+<24#>~xz=ew ztvzwU)0{^5ShEo8O6up(T>Tt0!#2M|E}S|aEP@zCsmHQEUYFwTWl7oyuKN+luKb4qBCLGB4H=>R35I zkCAp$7R|NNQs|y{hbFa$T_`gQ={;h>^&#C@I+QIbcGj$lvQvERn2h}qhNbS$_ViSwKCSWq>2nEvpxWk+5j+)Xa~CIg)$ z4-{?-?Kpbb?vDXkw&MtzOsKhLp*!4PV2H3h;kieeSoHt3TK~%o;ZzNDu98l)eg!ac zM88j^6uTD)uFK}ByqCiLw}=>|3O|f9 z1j=xqxl0?&C-vM>l+1z2aSW*@i!|td6=~EwEaWzS@q}VLceJ5Q?lxSvTJf8=SXbNG@SJhj5^PqF zNBD_7u~)4-crI-YuDDH(23Sl(&X0B5uU^qANHob@j&lGChnfn-M!*ky!ywjeQ|s-i z^;+(zcL!8VXY3f65L!KsCxTw)Oe+5%byBnI-AT>HaeRG(CiWg0a6y)wvFJ_y4XW8N zY1M4>LMNj_{Wf`tS1*F-b1wgoymjC3ey8^*5|L9U-{HYY{YBCgoiAD71Tu-6Y#w`9 zmlrPuVDcTAdFwLs_HUlIj}*u@7g@8xfy3;*Y@zK^9i+%f)B6+21M^&IE!Fp1*?Y0x z9xFCKj&H{+Z$3{V1@L~RY{(_9V`5;9Q|YUNX9gmVDOl@`2@+-A)0I>eV_Fg;?OvE2 zh=wJv{Few<3Scz6)`^IQH#s3i(a7bjmZ%rAmZ$x-Xn#m$<{ss#ZmHl3L~_qB&)P4C zXG;R+#z10C`EL#ex^e4z0}nTRQf4i%1*&-Ez1_>Qw#k+elk?*8tS`&5o|F6)IZLEg z@jH5LO~a1InyF|gvs6+b3#X%rMK0`Lj$Lk+`z>YWhk>jOWySB^`!i;^U6O-tVGpN6 znK@OERha)&g|g+U%M3jdk8r4l+4#+eMOx)DZC-i{Z@KIzsP_nD2MGR$6S?>DN=3=F z&*r;SSL{_68+))x`MFi@Ql3`Z_i`maFg#!m9L)9IfKfQ0AHR7 zII5>nIIPGh99Uo!w$NvC^?hi)zor~%ec&_K`^;VD0eRtc32oD9k^Hf}`7Nm`evswD zu{`U|e<-VI5J?kd}Qr})f|GFIO4sZZ>Yk5@qwm9yfZQ7@I+LS-IbS{om^9rQ2l|D zcSV|Q;NTdpr1M}LG<$K|Dp@*La{r+dv2BRePur~_i4;7?e~=r`^@VpFs@XcBD0~P9 z*2GMv`1KiLmCvx)9bwEe00GJRJDB0(>g{c+pel39#A^eLnFVz<1W67&;o zKc9@=X1}PT&n5Z*_hL2lHanuDPa^tknbRsH+wA*Pbf}{qZG4HLqNKQ6N|~JISz*+? zCIm#>GuT8`NHyG=T8hL0Lh+Cl{1;Nca8O;<#==Y@F1u4f)mA7N& zFlkGr7Nqi`E*XD%3P+yCt;}6m=Cnhk^^dYqY~|J`0X4lwHBO?1eBa(^Zt$#VSWbiq z|E#cFlbV+sIw2Y!?!<*x<(euQ9Cjhc$a<}&E(7ZWk}xW^vPh)PDufr0res%0UX0oB6m3^jj!>99_uVMUp^)gsL~E&d zlQc7YtB@LTkB`dei}rX!rf>F~kLdJfc(5cc3NP-g z0-bmouHTo8f`ws82`rRYF*C{6lW#1Y|jvY}*+Y$}buqyvzfjY!|CG=q0SDt-+qs_D{dJSXYNa71{(36 zM`q9${@j#UD5}dDY-F^%WVi863*&lAnsSUWqJ9kAoIqWO9>9B*I-*u8$I^X2)FI+% zE`!|oqJR|+NR?oj96s%*%FPR&N4Zz%a{olR@u|u7MWcmw(T;nZ_I;oIa^~ElD%Cr8GnE0n zf0a-%2DaCWCLJ{iw$K4v4-@Il_1zjcbkrUwOOy@2Lszk~$&#k@ z@$Rbxg@y#Wz|xpTB=tl0I>}5?9T3$k!;7WUyMjK}*HU>#ICur!@NjRZ>Z|M-xYz+> z1*P4{zd}nVDU2P!ScDi>H^FrWt5N-y6DgEJbYL48S&NH?1F2l+}h+Sed;I;v4Uh*UZs zW7<&ewxW!wiT_in&K9HHD&vNFy%cNI+ybC6UEV(CE%WwpwQsB&^;5z(zGH^)ZAJ4Z z=|AO2`a%4ECVU-1u7vM)N(Ax$sql#yWJ*eR{qpG9$d?k~BU@VwUW}t(QhDiyNv_&I zcWEi)WpZ^j?W9Mt5e|c8E&4C0BI!8JlEJ7|>+Z;#L5Cf-`GFk6!r2Wxv~HI&rHIG{nqP}=`L3hc#e#WLbtWvE0Y{3%Hy8_I)@%{eWxiHx&CHrl9kb@mWSZzW#xJQt z@Hp_=x12-iW0FP6;F<2f@peZR7@|PoydLcd$I_R3?lPREJ>)>F+Tq^0Tu{|!>>g@Z# zrA#w!s$0`UBm?FErn=L564bNZX<{%M1v8}{M!}N>>gV|)m44LB_t@n>vsl+g%71a7 zs!cmx{@!mh%Acvty47OVxo=l_vLswGPUl%hp78I?J!f8U+7Yz#O`hbxG3iP(C1o@=MHZy#33Y9rg`}npD}n zW7S{~SxeYwA!{-5o(h@jTH-Jzo7`X|Z#Y5Ea$W?V{#LyAv2isR2 z8aiUwh+sjlI%0;67>YP1c!qkdq%LzB~s%L5EKwwVb7AD-rYr9m_+HHSu zQ>oI<{e%fMg{t%&wvx|YU&Z8IvZOxdv^vr_^liDr%cOS4XiN<*jt0B08!aidk;g$G-b1i?>T@02xWuJ{2#4IIqoC5}Wil zpn7e<h64WulG zj^$g_*u*mH37PkmSu+~>p#gk}VPg@}aSEU=cxG8-h5!RML88pTBEl-hoGLMDSj{Sn zPL=%fpD&?GBPO{3?2As_Np!mItBAfhJ;bc!}!}POKqD&=o&R1FF3F#Ms z$iE!fWciopaX9rg5eZHN-S%ciS-yJfui=OoU;XS4zH{s4iO+qBCs@g$sEMQP)qh}{ zA=-a5-xQ?V;Uyqb>*MAw7}L+Jui6g8uBrq4EeQ6sW@-hs+Nf?%gZ0{=;ESuD)IIMw z;*^S7ABxBJk;Sa9kG21Q%)JYERMpk+pCJ24V=6Duy43g^O|%4;I*~yv;X7v zeVFlgT3EJ8+W1zw+%|dttE+0A-6*Jwy=csr!cIN!p!WByplbDj`sTF#!-QiI*LA!` z!SRgwvicyYh*a)L3e#;VHcMm!OpMQM+?;EQWCITsvAzIMk;|r`rY+km;?k!vqcHuF zos(b+w?vlT$HsE@Hd9WBo@AHg^bN6_b6UGjd;AZKrqK)cr{&M94*2eHamuqi>^~S) zrU$_xx1rS& zYBk$|`9#tCV#8QJYh~4p4Nhk{FEh(e$?~_%EN9w{-^mC^SCcJ~$!-q1^h5SY`Z`y9 zUD+mpVE4OSvh>v)cPvcmul1et_K~D{o?Jm`^WUNG3?D2E?9+mCPHvs`eSABK$~^uh3S-S^4`-`)nYdWFFT39v6r8Kmnz@r>tQ#Z ze^$<69FshnUzHZgU#L3fO_@J5fPgcNA1+Oz&im<~D}q4l49_4?MtZO_2fj zPE`Yb8;toScbW-@L5KMySC4Iq{J2`&Wr#j6vg&7Y$@*Rhm@%rj$ZmLw3#kLrqeDwj zD@MZXnPa1Xx9Bew@#nr7x-0LG@NRGE*uh`mHb#?mcp~TZK`Q`q?>gx+Fb=MTv z-Eu+QmS*!<`_3}^!wQV(u?{519${6&s;XN9;K{e`=!EyZ02G6)(6?=T4 zFqJM>c^CiC>T3%-)Ls1}mvIBdZSn)GAnmm(*|9W#ChS0=tK8y0v-;M;Z|m(pqPcD| ztV`72*Q|ezS^pgBm%1OFqNcH&5?hx_?~kSW0}z|nmzT5Z|B4-H)q`A_6{8y7g{+NpP+EqnAr6S1V zPj@0_SP2GkORZ=eT^TI8XfWl5d0B%v1}@{N7On&L>gSwSz4wj4LwU@q*q`xzv3zfE$~6U2mPia1gE8W)Hu54) zex#^#r6?-38>4d#?+UorH#~-SG0Zm1w`7Wp|JDSlq4~m1#-mEM9USsXg&MDJkFZnd z#`wKpzUT0+cJCP@7LDv^Q)s^oEL+Ultv-|&1EERYrjhRZm_=r z?q>~A45@pF;zzG$F&ZNLsHpGk@innBVakl@cS+}R5lu_yt`M$;(I*Z?iARq*^<8jZ zQ)4q(#dkThrMvBcHQ8K^eZpOJ!mTa+mj0>H??gtu^5uxOS8YsSIuk?W(2Lcm7~Yqi zdc>`Vp^cGprI?m`W3fHmF4Hw1s1y>pl>AYy$`TaTGn43_c|A!!pf^<%H4l#a zFBh_P2^ipbSuO{trql3{ao-3;2L9`+?<{PqsGC__H|B!+YlLcyyNm`Kv3{{0*yC@IDL;MM7S1()uF$Aj<#ypYyURs@vi|=SknC zeLt1@%BZgc^+C`Q^igVBD4%-L^l$605z?hT`933;pJInhFj&t@Lh-qbSPWsP>R0zqbB#xem#>G4NKCZAsK0XTat9> zt(QzXw1I}M9ioQoEVH3!B^#=C5()o->^4?1j37mGGwhUGszR=8n;VJoz>wD|T{5qQjxrrty`9a_xz$@TD)PIi4 zm;>P-)?Xi8M7)1b{8^DACm?W|S;LyyY6RA7OO1ex;A#8!E z(KEV2a^+fJ4m^bH#+Y2Vl7afxOxD#`BED@91RPg%_q=(>72)j(jU>vXyjXoT;GsoZ zejH*Nw+9*^rk_Jh<46HoWz|?muYi*?Ykz@-^ zdd<>zEFxE+V>TD5`Xop8@Nbxl^2u^D2zNU{T66%jk(4joIHD|6{+jI2{SV2?pEl0A z2gSMU&c915`=2n*QUszMd}s0}%DyL|dLQx!6JAS!Hb=RF*JoxaYOk9FDd5@r14vGU_n+ZGhcaiLAH6IYh>4Oc*!lsEAqq0!gnolG+G?&G->=Iws zA?|UNqqW*EB(W}hj92c9Rp4j{=h0+bS0Eq?Nr4*%Fil2h-_RV&YeF7Y7Lr0MnKh{g zV;?5!p@CUijX)nuCOHy(fLCvIavI$qiu+eYzLu{5YqXc-2o7-$RNa61LD&sUX@*>8 zzW-j{ujKs#^Zi%y4$nWNhxz^sc|VW$9P_h*xA6`2eNz>FdQzO%Qv54Q5TNmF5x%=2XfU=U}>3RJG?qeyY$RHIzHwBDlCfH zNo%sMb7I8F%t%H?m!WVx?s;DBM!C2|0Vb!RaXcp zN${Xf<4&7HzoXG<+$U_|2K-Xh?$v6}C5cm9JQfhJ2j)UwZX$~aZZi195RG4v3;)1hgG!4Prm>W_<65jn~9$ys67cko1M_(^~6V=k`A%|0M)6U zbV^~}@67iz|{?}Bx6&G*4-5Kh9n)i~@WNy+KH{ZYOttXo-4^;y2lO~eaD z&PAdi@VON1ap;4YcW4mT-)11*m+@yMQ}h=pd@I}pzCH3C_{IW}M6}2)qHSJDUsWCU z3=DG^RSLr#hT3?^KJHW$liirYFtt-l@5BVd*o~PxF*%Wt#IWQxgS}w_!i6M?#^VmE4q zkI0bpznUTGf7+Dv2Srj3&w`yPlK!A6>BrLB9emo9^uKCK`tL{5A2cQX!IY%GgS(+t z^2bpA8{>1?NZlz)M%vLlPc)4--x!l4G*v_1 zglb3_LZuoKIVSwzWin1`Cw?e02hF&&b1KNjfGDiojWo)uH{0V+i?$(pli=acrG(=aHD*0;q?NWNA`lF(}r9{KJ{b`u?*j0dl3ZO0&%3!W8Juc3#aD4h;^HwZC# z9=lMPArVQX$q#A|=NcCHCf0eApYg945gCE(C;CqkiV)|PWa+7G$#jpW>Y)*?Dqx5M z;2yRBtWS)M<0N^`0Q;K)-=;k0VpE<|%w_LMdCppUd~NJZ8dCzi#Ge%vaqLDm84*wR zLlqES5A7EQh2723$POfawV?+tg+(~vwHz{T%rzbwWlSF{y9>1eI)>}AWo&>}M1C!F=5B^J0 zE+c8C>ciOQbeo|-Qd3#PF3BWZE_U?+m0J%a2p3jTo&L=;Dha#J+g|FZ0O{_e-Kc*O z25ZV(C_k_Sz~)U%L$MiJWWKF1-?o`=jpkc~A57nQ>VXqHX;~KC!z?^kevE*!HPr+6 z@J$TR)i<^rE%7I1Hh~?l0_U{#5*Avss~K}SwuF}9J^nz zoNB%vuj*rETql{ejx4(oxtcqZF2hPDVzlD(kWCc0fH zF=C2GI4@zk>?;HO(2%!>OEIy@yEj3IGT~Kgz}CRH+|I!lDuXDX8ax$*>_~%*|J_g& z9nH{Y?3ZqoyTJo1o9IuLugD#I>jC=j4lb`FLd{s@hL9K#Xf?8wxsBf{NM?=0@!il8 zP9LfFhM^_Wl~^y+I;B71$hGe(4#>QD-KEPBMZt)K+TIl$!InLQ#(bkoKgX^AR=zdJ zaZ({G$YwA-WSxCfniIL@w-yW$`-b$PHWgVdk=Ldo3sj_lLgcbkWTA=_tGP%~DzdjJ z(ngqF!h*vDUO-pP9>10DasU6u_@UuZ856Q+#m+J90buG3^Ya^AVAaN=k(N{KKOJ5{j-~q|8vc*SsZ#t(TK@UclO~6v z{91ycErlu##=6$V{XP0i6c{wb~Mk`oMkqqnM-?wxBNMznyNm%3j?nM zJ%mFK`3kECmdPAk79m#byEeb0?7I?P*;#`xdQ>_ufoG)WV#&OV$HX1d^Sddp%xwC9 z-7YO^T{sBUuTgt+ zBV{J6u6My~q{= zoc-uqGCqk`W9+Gpduv`S;pOBShgv9GDpZ$}jZ`?RB^2};6MIrYk|nXPLpYHvNTG;!YC(~&p8oC$j(VsigC?Ah?rvky zqzNKC-&Ul?;v&W(`Zzn_#IATtl05WMWFgv-QWRBaQdD6}^lQ>)5QZ+1TaIwq!zZeQ zA=$So(B1I{3kF(0A*v2?>}OosJ|i!B3{wJ9WoR!d`#X`D#=ykrD(# zx>H81qwzb*o?7ipeINF$X(`o=L@Q*?oMV=8@D}NnvM1f}FEQ5@!#l0!NibTt4q@Z~ zJ9UT>+~Xk6&Ed!opGq<@9VJb5B8|XeDoy;!WSU`CNhJ7oN_z*K5LkREayXicb*y|O?5Bw)#~JsXvSI1TV!!cZGt(hrruB8#bj_>CI6YTnkjxu?4i@}^V0?901NzF zd9E7ZzfMfS&ttEj3O_P%r%d~vUnF5e!H@93r_B1wR2mb0WRy=S=vV1P3Vwt~KBXjo zI?;E*k8n^o>FK`R)?4*$(}V0?K-8+$6=tZ%a`zgr{z3`J+=tUka zOR`_eph88Mpq>xiXlMVhq0VfLl((gqYKMN*|c) zZ{Lje4KUmH!g#a4wXaG0#$}W?_6ey$#^6FeB*s9h9y?#!XdZ$+wd2c^?>TC`3RHU{Ez48%wW98|v5ZgMv*YCX#7#UM zb@RvbBb;!%@%LnuH_9w;%}vt3$RE<>sa0UXd{w4ubMAuqs%UjehZm`#E^$z&^MWU& zCVQQn)%gzm+WM&33s%7)JI_|V7;e_uKUu4yfS4eO{n6QJ`=f3S{T~xlM^pj?31}xm zYz_2J5|%~&kJH9M|IHMc=Y^8vHz858jNk2M&0EH){w{wtHGal?sY0aTVw0lap&k7_ zD^ZBh-}B8vo-hl!KUqj}OKGTWw=@x<2QoaD5FHgYwG%*s{F%7;DF7`aEQS-JS{i5)e0pH1XduDb3QwA|)u@2ty>{R<>_tX<#A z%v}q!Z>yE1fO-1ED(2~&S%oStF?YX|IOa~U4E-1qC5L`EQX(aDs^Edg?149L=OxRB zE4AoDYD#jtXEx%1(D>kx3(Y1!rvRyalcINXMAmI6HRZo3N|pqzMqFLEjnn8WMZQ^U zij~yaBvU_WJS_q|^K4S>T?E~Ft;B!~T0VQNe@|l>g;zmKf5a6WEcPUrptNZ-&vfg1 zU4aI?^?%;%E2JF>?w12W zti-osTwytHB#dqHK7w;@g49D*kMknOonpy z&rAWjr)sx5yw~auoR~Yaz^#Ag4myf6u1AP*IOOxl4_=coU(1+dj?di6z1xppK!BDe zcqjsj!$1~C`>f2$y6CGwpdJoo zpqMO|618i$mOr@}M+Uoa_0^>1&j@L@QJaf2+l0;iwUXUh{T>S6OyN5yb-Olx6F-}2 zomQ}$+K{uKO&UFZs|%5?<}Rs-s7 zTJ29kKYL5a;`3{^0{SyS`tu!Cy287y$!bfu;H4+kes-GLCo`zqsrpE|4S?9F9{qXx zdKB@zrw50J^Kb6~r3?Fp3kFfN$FiTc*>d_;mW_^D>Gu$dMhzFf5^W< zsP5G#cyy72uz^)JISh*@XaMz~!0)fl75H_}J5de3njR$o_$u6lku%nBLZsaPe9iUo?{JAx7ywl8nr&6`P_-8kAMkTV#5>g}QouWP-kr)4wBzRiQwF#U{3Y=_@ z%W7fAvz;P?i$OSt9^u%n<1`rOI-%xue+Nk8sThZeR~O1kkV|*);o=Hz<~j|^rRa-h zD_#%2t>hK0n_diOj|FQ zwmuWnC=$#P9NVE42qfv)2luB^f>vLABM!$HBCQtl{&-Xd%-oN`Urn}aQ}8!6 zWgU{2Mt+gJOxY?@n915b8@2JPv{Gj?>~Hfw0jI1899x3@ZHF()M#spRl&H2n%XKri zQ3%Urhku!zr&zA79>sF4Sc1~$4O#Swaky6VD6NAG^gWWnjTOFrDmP}8IJmLDlRwRk;VcYW%r#=(r;7qL%DG5s z*n+94!PIJhOBVX^+pek~Q-(`F+P5;g`;TnVlP!=yP|*77pjA|)S)Qt0EYTfgi3R|i zN+YmgCg<4qq!w#eDO$lDv92=p{-sPkTtaYkJZQavJHcmI)&;HeTve@5pboA;e6B~o z1M}nAD`uYQ(m!JSMLxX{0(d_GGuHa~kKGNz64(p)XbM^c4bi2(HygA#Uk1G(4 zztj_)d_wE@q5r3|259|O&8Q3x`&PFXa%zzjMYRMPjLfu`#^o< zVBKCJ<1k*oU-d;FX?BAe&0b}uHrpu4X}OGuYNi^Lk+ksEz7*SEx6`3p2NI-5w^BG` z<)G;4~gz}`|BcF;1)@(r15U6{RXVPL$dJSoppCs zWFG_wvqCn1{l)q3yxGgDNvs9bA%l6dSD0^WqyW&k?nR8oQd=uIixYj4n8YT@{szg+ zUD9k7dzxJmmHY>{Ngb({jj&5!AGw#CHC_6L^vLYPBf|Q)^!Fm8_@GGA03xDWP+p`d zRvn{}q*$n11reG6twg1d;F)1ItC{KbUV_Y;Ue##zw+hZ~&w*VhII%b68(i^*Ni zdy-pBSLruGL|xMVyE6#*6%-Bu|2Rjr+0n8a}AU?-?3VDpTc8oH_ws@_dZxuv-(2&m7UKG3Fe>C=AFzcIS zqV%=VO5!8`bp-!kN&nX=c?;`5wxCBC>xn;0!Wz2@+iM~cVR2eac%`g@!D-ZUR58zO z_{H(Bpm~02^6bXb2?#F0v^O$sNsiEn*=ps&ss3S?;a_124YZnmb#3}MbcD@bAu>qPP!k{Q+`mZ zL3hiUk3&+rH6~9_%<7J>mC&efa^+{jH!zyV{bjH<=W6}V^cT+Rsr4Ig_1hlmC+L{A zM@=}tN%^OM{QJAk>dYGCw?6dC$=p`6N~?XAW@rn3AfECCm3GaI{o@(qCkqA$^=$GZy}n~x z+U}Pl5RsbSi4gXT%hIWQ+auRCcLI3)8z^`BlGtC9=NU8cOZXu16PeF}1>GC+V83D4 z-vK{_F0vKw!lc6GMI4vWQd(b$+YiGz&|y^ecNi0kz|dSU9Kj=rI6uIFDa^hFrJT$l z{zgaGZ;1O#>^B3U|NHxMI#B_QId*%J#41QMqe3Js|{cGHUzD+D+`3#B;A0<0NMaKb6~oD^SgLfp&|!S&PxmuiPf{xI;of z`B>h@%FD#PJiGuri?W28c{slkql|yD9m=7H5=Pt4yNcvt$ff)EIQ58%ke1 z`v1=uOokz)gN%dig045KF;JaNjlo35peMF8a)X_a6J;r5jzi^X$6+46A3>qRw`GjO z4KfbaFJy75VXPAVzD#(OK}dM&+jO@%4q{NZ{aZB-*Iuc{q3^F)%RxdT}(N|?27bV9E9dVeIwc5ujCv*;-b%#wvg*FE<==beO6 zDN;R>iA%CjZ5RQbN1MfHQdAZfngu^IM78+=3jCKenY?>%HIYJbP{jbJQl+~xh>zJ9 ztwy#Nh-4p^qYZi!PJpdcxQJC#6_xDYk)f&ZOpdp3KsV&i~G&~4P-7V2Ffrp-E%N`x1M&zz%)9|q6 zmeh!7wQZtmI9Y`y3>$5~5WpUXP}8d)bcgpTq2@@0n(pARgysO2Yj12U&6$^3$ z20VRS4fGBLknLBy=!eg!ftJYwTkMD;{`lJ*80pYFcI}t=-rQ!_ zo?Y!Kf7=xtYL#TU+Anc5*>G*pap?&@5ngp&&@ljo=X5@ip;<&jd3*|Sc~D5z7973?8!Pgfhyg05P@`&v(78gB0jLr1i%jlQn5 zPxJ=1hr15o>F8Rl6~OE9TA&qtuJzm{l34X&po%Tg3R=}`p;i#ldLH6)RJ{*YpZg|1 z_tpxUwVp@$d{`@~*LtqiN{(vp)AjNjA2V&}N z#afSpsF*HAkAlEC|8^zCouH(+9wo&coQF`N!d?EZR+}eKS{~7A=PFek5WA0^X5>{X zvn)!w1jD!Xc|1FPq}BcE1e>If>8(y|)QruDA#O}*>pFAlVwMwhvk)o%SKC=b! z0w56m3$c;NXKDkVlK0F0J(J$8kPFD*5QN@^S`_sNkoi_gkT5*Vuvxk}Y?>wIJ4LJCY?@Xa7wLl{si*M2B45ZJZxXcj#L$vx zwh+V4X0spsscQE4U#5v+!%Z2)P)6&2of!Hui=0Q1G@uS439HWE2TB7@B8D3{md>h^ zK@5NOTsva;6UxXWhDrx?F+}G3aW+Z+n1Pev=#M|9%2NZ&wIzYE@ zHkF|_Pe<20!OflxEQ^%4N-F`2zfR(A8@P+|wmF5n?}EF{;4Udl+}#Q8M*dyg%`$P< zcd5B>m~>ukFVp*DMa3}^Fqa4+6{ZV?yhU<$D`w^-{x{*Tn)73F3SO*WjGWiTq;bi(#U*s8rec9}`^!cWiOg5Ay*%7nn8Annk|_QWM7@am6b< zYzURdw?ZU5Rn2e~s65){ijo3Fhsj!`^&Ced!Dp1XZD`PXl_S`jL+b0<>7(B`HW%L_ zD`xg_i85#;9LerxS1BjC*O+zDKL1708>o|Eo-qS$}sq$JJi?5xM=7_WLt){Sklhx}3y^)5pFmoz@7zZ-KA5>o1 z{cqE1C#lg~Gc~z!LmQ_!Wie#_r7AAlXQR01%;I7c7hCEnpI!pK7&+q;%^2jQs2);O zaL8k2YDEa7%Z$EZh&}gvUSskIS3|8_PERLs^kT!{iWfP=U;8it@oa$q-B%@rOKcDh zNA5pvMa`+zs2zHPvsyAj`D~A>V*muy@tl*F;yRT?t;Lc=q_HO_c}#Af;OL{j8mbt% zJ6oJs`mQ5&CpIqCF7aDg+k!pl5xk}g7orclOB}=Y7qY927_@QDYLztjv}$kAOG!r~ zMPOW1w4WGvJpmVrs|Nn*hS&&bkfPvnHY)79W zF!2R>TOy&CdB~Mu`FFg+r%6PF%?8xn=Y* zskFM=dUwYWJaTW0Tya40GyR#Wy62$JG7>Fo(b7C7#Cq(GQ~9x!ypJ=^rq`0MMYJc# ziwn)j&-wsN%*YRA|0HT7Xfn>}#mPqe#u2BHq`^&bFg0~=rL2f2^M6HRR##!-AN!tM zv7;;X?h*_3vc%aVs7k&Ub69nv$t9%Dd%_cRwnj>67geAhDqBYe|9gntBL%5QwE(xP zFV#QSyaS6!=hWZvqF@v1B9|P3Jm-x};&2nrk9?JKlo(XYIcFT#1eABwYMzkdk%=5o znEZHOg~?Ov(wMwsgp{DfuUc()xOdmQHBwjRII!!%T)&6KFGu$Fad2)Q`^bJ9{lA#? z1a0`0Dj{)CYZF^kCQdmtf##i5RCI=D@K_^-G|U_;lqTCJw^GiDsrEI|zUX+MSy6{e zDSSv~;nU4M^pqbf>TpWo&&?Nu&f#O3B7awRV9um0t!9}lUjGxl7}$Z;|?2xSPJTR_=a=U_CSK@*?Nqa#{GyTJE^LJFB^^-B6%FG)J2~hc4*z-A=Gm%1GiU1Z}NRB z0rtNIyJZC!1GPlhdh>CiwHqOsEkZI6YvWtAn=x!`5t6xyB5tPC{Mpb<|5Ln~M055M z6@+R|ct@-M;!|zHXEfRzobF$1|leyEjBT&C53*@wTYiEAeAORdx&@&>Q@e!|PNo`&|mwJ%M3 zKLm#66wK8EOSWfKqY7Ca}SUg5GR#FWA);%qUYWD$v-C|N$~ z#SB6suRzJ7ywD}6F`AVqZfF_-31>+B<_TDA;ZfNXzj5qoH7O;TgeikQ%ep^Mn4B9& zIQ8`&J!IG4_5`oabp>zAdtHdET|KdoxKY@-f*T_j5eYdSC{6`}Lr&~d6sYbZp)Jwj z0n?pbd-|W*|3ZgxM}L^c67*0-ASl*XTwPhOI4Kq(N_^%

KoK;r-v5rFZ+0l#V~o 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 z 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 =~%_FKtFRR^DJ$iRy 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�S}s~Q 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 zΠ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 z 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 kj@?GK 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 z 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 z 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ℑR=n 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 literal 0 HcmV?d00001 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/_CodeSignature/CodeResources b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/_CodeSignature/CodeResources new file mode 100644 index 0000000..9e81817 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/A/_CodeSignature/CodeResources @@ -0,0 +1,933 @@ + + + + + files + + Resources/CMake/sdl2-config-version.cmake + + GOmfPsl6+zUzjRroR1OeRUu1Do0= + + Resources/CMake/sdl2-config.cmake + + s2hXhDxzy/ilC+gLamGy/Kq13jo= + + Resources/Info.plist + + E/exzjLmO25/xe18BS765cbGzWY= + + Resources/License.txt + + fCUUBjJ4JuUAC8MRSCszNcY21v8= + + Resources/ReadMe.txt + + 04Gl3MPa3Etx4qtkaftLHaPqBVU= + + Resources/default.metallib + + 07w7GQmm31+NEK8ne4mSo7m70Do= + + + files2 + + Headers/SDL.h + + hash + + hzPz83uejvKAqzL0Xoi6aO8h8jw= + + hash2 + + 9u/or17IhYmY6rFVU14yva0lEIgG9DmS4LbiwXBLBL8= + + + Headers/SDL_assert.h + + hash + + S50t60okfb3/ykWKavFC3tnkGgE= + + hash2 + + uPZQOi25pO/BZWjREOhxmXsoreSNJyZrNOnVJ/TyYzs= + + + Headers/SDL_atomic.h + + hash + + yrv6uC/CjYpeCteZDUbBFr2nwiU= + + hash2 + + Mrfc980NeBAvQ5I040V8xusL6cHBcFfPaA9B2prA4dw= + + + Headers/SDL_audio.h + + hash + + ATRDpv42XjNUWqjKPDAPYqIqvDY= + + hash2 + + MThYj7HEVNC7MdUTbzgyHDqlDMDS9g664b6M5d7tsdY= + + + Headers/SDL_bits.h + + hash + + Y7zU8XCX6cvmN/FK9COruPP8VGs= + + hash2 + + 5bLOm9HAk5AScYemc5V1usN7NqP685ZYN5MOBjzC2IE= + + + Headers/SDL_blendmode.h + + hash + + ThQw2vcWPo/mLtvKmhQrjhSQhLk= + + hash2 + + o3UtzbWJqnTeh6+r+oLVdOzcJZ1b3XhfPINDjKHftu4= + + + Headers/SDL_clipboard.h + + hash + + pFjnEWnFn2vCXZrSDQ6m8N6h0MM= + + hash2 + + t9Fr9UxC9zwgfkCY5P5DW9k3TndMFRn+tU/heffUOQk= + + + Headers/SDL_config.h + + hash + + B13VD2wcb7zADcKXB+B/kBYhpHw= + + hash2 + + LmXzL1O6PasyaBOUhPezJnqtqwCV9rqOyiJNEvGKgHo= + + + Headers/SDL_config_macosx.h + + hash + + /CrGe7lmePlmR7DD9sqN4LHqM/0= + + hash2 + + EpnSzka/wAuxi4wcgIktwQnuYWsMAATYMt6yDmo4zOg= + + + Headers/SDL_copying.h + + hash + + OzEuv+IaGVfj3A2BEoXc87vV+Wk= + + hash2 + + 5zsYMLhj8aKXm4gWJoGHC55ipiUi1OIxXdOtUIHQQw4= + + + Headers/SDL_cpuinfo.h + + hash + + 4/UkY/aNgAY5RsZ61XSnwtCXW9I= + + hash2 + + pWPZkQcmPyAzgZNKcmiYutw8VFjBcHOinO+VVKIBeN0= + + + Headers/SDL_endian.h + + hash + + j6/tuHiJfdv8YaI9k3fogDw4bNc= + + hash2 + + P5KOVzR2wBlhdSw7biIJ3O78dnYnoGdi4pHxvyFcLdY= + + + Headers/SDL_error.h + + hash + + 6cwM6B1MfW2wTFB+g6c1GO9UH7g= + + hash2 + + ULQrtxP4RfbnV5GGj3i+PrYSI/rzDYskl0XQtCd72SU= + + + Headers/SDL_events.h + + hash + + feHsZTKREoq2xXa4dv/4lzZqzUc= + + hash2 + + FVz2yvXnjsUNWBsWQOcBqaZrXCCdohSRWDh1l3SKqRY= + + + Headers/SDL_filesystem.h + + hash + + sicIJ2kroxv3QVkoKklHGN3tbWo= + + hash2 + + k3ybgbDF/Ap8kf4vKxLVZnRXoXtZwpFb4Nsk8GWqDCY= + + + Headers/SDL_gamecontroller.h + + hash + + DGpJeIYXN/t/Yyqilband2kKOSk= + + hash2 + + hgAaf8SQwVfc94yXKjNFA3VpsTCYwL65W5X6lXEnsgI= + + + Headers/SDL_gesture.h + + hash + + iBwReSkmy4b/H3FD3mZZtLNdCMk= + + hash2 + + H7K4JyorBvI9vlJegmEZ6NvapE7/l/2bhOGeQ9zudiE= + + + Headers/SDL_guid.h + + hash + + jTpr9nvDtYvix2njIOclQs9xYuk= + + hash2 + + ifUKQBbQRJdNqsJBO7Mor3KqQyqDulvyNC82/RWPXhs= + + + Headers/SDL_haptic.h + + hash + + +Wt7zxeuXghMudXSohdJr12ueGM= + + hash2 + + VhCeKNAvsH+lrvZW9g65G84lg0FofrbORvS0TqPWaRQ= + + + Headers/SDL_hidapi.h + + hash + + CBwPZQMZ5wsa03aBND8rQvsLfUg= + + hash2 + + CJEdgW9T0b2VRNRFaEZqPeCTg3FjsEFOHZvwuJbVHX0= + + + Headers/SDL_hints.h + + hash + + SWTHcoPzInj/HwBHNEFfQGmL6Dw= + + hash2 + + BQwW6YWVYXbaOLc9Id+ZjuKHs2VIfcSjM/Oo9JBI6Yk= + + + Headers/SDL_joystick.h + + hash + + Y/dkiMb7+9Wmo8oyyOuh4igQK4o= + + hash2 + + d3rYIj9RV45IuiYZAbOQyNe3iR4DORkkqwYiSA81c6k= + + + Headers/SDL_keyboard.h + + hash + + 4jiEP+XRfvz8VFmNWlHkcsMS2nI= + + hash2 + + EPdkxf3E/uXb/dm3gpxepX+d5JNWswuHP+PG/c33p84= + + + Headers/SDL_keycode.h + + hash + + j4z7vftDr05ahrBr5bZnBxZ3Ufs= + + hash2 + + abAEws/ibkdlWSE/bP/uq0oIjcebU59aul5g4Lu0pbA= + + + Headers/SDL_loadso.h + + hash + + 1fe02ZD9+yDX75ZVM1rk7RqDLCc= + + hash2 + + eOcuzAcWhFDvl3bV+3m54GtOrTQztPLIiFHK6NOQuZM= + + + Headers/SDL_locale.h + + hash + + UOhBMG0JOnoQAEGMY7S6as755IY= + + hash2 + + yM4RN7sKzLhnVlwbW1pJX3S6YLZl2LM/0qsLyQf5GXM= + + + Headers/SDL_log.h + + hash + + Ij4wEHg0aIMC28dTUSur/CAxQss= + + hash2 + + A1Xc1+qvTtDHCz8f4e6oWq8SlifqizcVZ1Q37GJkhG0= + + + Headers/SDL_main.h + + hash + + j0/bBvlkrYcnXeoB6sWoCQiIlV0= + + hash2 + + QOjL/8v8HMC/N+1jocNxIGBB5pifTDWxbwOvD7wJtRg= + + + Headers/SDL_messagebox.h + + hash + + TZHRdWCuyxbRdc1GZjnTjHdKV5A= + + hash2 + + Y+cutYk+JQOcbC9kbCdqbLr4oIBCxcX8HIzKJW+MOTE= + + + Headers/SDL_metal.h + + hash + + yggpDR8fWdb4ZAxZDLO7ztOMa84= + + hash2 + + aVk9kP7LRPopLu52brj5b7qNwMeUyUOwDPVyXwOm4O0= + + + Headers/SDL_misc.h + + hash + + wkzkXLc/0JwEBj+pVGBGODS/N7g= + + hash2 + + qClRwcNymRF0gmpjyJ+EQ7fChV48OUN8NAAM2x8NsRM= + + + Headers/SDL_mouse.h + + hash + + AL6jjX5llLXh3nscuX0MJQQJ7C0= + + hash2 + + 8R3uVCCs2wF9vtwJEqAi+xjYtAtJ1F6UIqCPUhiBwxU= + + + Headers/SDL_mutex.h + + hash + + c4s6haEURwhr1L/ZsIoQHgDC1Rw= + + hash2 + + L1kG6r9N1C+njGEvU0sAJeAVFwr6gkCCwGcBxsjDuNU= + + + Headers/SDL_name.h + + hash + + 86Aic9zf8RE0YQGymeyFxdGck34= + + hash2 + + U6Hh9de6D0JfccwHBmoAy/zaFw30VuNT1ofo30X7cCw= + + + Headers/SDL_opengl.h + + hash + + a83WQIdV8u+rut4US8joNjpA6kA= + + hash2 + + HxWMmpZ2o+Z1atgt7Ou2sf5/4s2raLbApxzyqqzQcGY= + + + Headers/SDL_opengl_glext.h + + hash + + eOvalGUielSzNuOWWDLYkwqpYrg= + + hash2 + + GrsoiRybBmG2/zdJ3iZx2l/hK+tbyxgzsta99ciezfg= + + + Headers/SDL_opengles.h + + hash + + Vc//lrKlqY/bME9ocSWczplleP4= + + hash2 + + hJHBadVAgpV3dIMW++DPSJKqsNOCvkA8qNrMoFbXd5g= + + + Headers/SDL_opengles2.h + + hash + + gyrJUUv02Am+DYc5V42xH7EQev4= + + hash2 + + T7CsPQJXfeZ3+pVjGLqzKBfEjyHX2Ne0vV44iZMKDgs= + + + Headers/SDL_opengles2_gl2.h + + hash + + GbD4M9ZIR9sxgLX4G8T/ojLVQJk= + + hash2 + + 1uxEsdc/OvzjogrGl223+z2sZWxRkPC1Y+TOkNeaFao= + + + Headers/SDL_opengles2_gl2ext.h + + hash + + frTvd+EfShO/uonAvnnsnPkqc80= + + hash2 + + T8WwA03N6cElki4+cNAUiaazNQdoVu5mApThpjBaNxk= + + + Headers/SDL_opengles2_gl2platform.h + + hash + + JO1DB28zz7TCz/P5YCSvV1PaqWg= + + hash2 + + R3m+mZrNGQRFgjjwnIaYO3lgrEDmEuBdstuX22FfHg8= + + + Headers/SDL_opengles2_khrplatform.h + + hash + + mBjqEs+5bGC9u1ED2M93VNzONPQ= + + hash2 + + ex4Bqqetj2/DS1x733nr9RibsJ4sTS55/F01BiPRHoM= + + + Headers/SDL_pixels.h + + hash + + 4PRTgauh2fx03ubJfuuHNOPhN28= + + hash2 + + GZQPt4sz55DRDRzw6E2c1WMjhNqInkQA3gxLQiTPQlw= + + + Headers/SDL_platform.h + + hash + + Ey0u3gHjhY9CsV6rnGPL6l/Lqx4= + + hash2 + + n9zH0IFb2hWb/ZQ3TBMQxLzDre/VQcI6Obhdmq8O7QU= + + + Headers/SDL_power.h + + hash + + SmO5g1nUZ1IAgDQGIlzbR8F5udg= + + hash2 + + Lmp/XdN6xQbqR/eAmoKFcpqk+MM65gGxjv1cLYUqG8c= + + + Headers/SDL_quit.h + + hash + + xxqxk2GqAVUt7s8YiRcGMegy160= + + hash2 + + cd4fDfe+MqMZ35xoFn5VPkGBafcN9tPvL9J74IeKtXI= + + + Headers/SDL_rect.h + + hash + + AtB+xgoXRW94PDzzbBVBYyAW0gI= + + hash2 + + rFxcleBxja/rwskrEIytxw3evL+Drkx3YsihtllIw78= + + + Headers/SDL_render.h + + hash + + 5yyytzTD1eS/K13NSzW6faLAUlA= + + hash2 + + +ljWDPQHFdheD/Z6QxHzbpNQVg/XVlqx5+B3ovMbIF0= + + + Headers/SDL_revision.h + + hash + + bdjBB5+RLx5fhpvXy3LbyEC9q70= + + hash2 + + GAe3NNLzg+OqUvN6Bxys9o9XWV6xzSDq/uCDwqmLz2s= + + + Headers/SDL_rwops.h + + hash + + sCmzKOj8q3vee6JV6acptKOzBoQ= + + hash2 + + j6rnTfnMJaCsq2CviHQP8obbVNgrElC0OXJBt3ltyVg= + + + Headers/SDL_scancode.h + + hash + + JPnDQuCIC32+ugD3OX3igjdGfmE= + + hash2 + + vC/EC0A66ywzXwlp8iGE7nlOpWGZ18iHhEdS7BsM3VU= + + + Headers/SDL_sensor.h + + hash + + J+9woN1Qec074rah/rly1BHM5sY= + + hash2 + + sEfbN4S8Lpxm0XDblgOvnVV0fsgx/zo/q0s5h9OvhmE= + + + Headers/SDL_shape.h + + hash + + Hv8O7XLnXLIVAOf6cjF56yyrRkg= + + hash2 + + XFA3qPWL1vJ3EQtae2baJlOZ9ESEmhB1FMYI3fITLZY= + + + Headers/SDL_stdinc.h + + hash + + iliyExriwpoxEAgG8CI8CG8go54= + + hash2 + + I4aI+ExJq+16kZfDjF++Uaa2lHZjUWmuFc83IUDfuIk= + + + Headers/SDL_surface.h + + hash + + Toy3u0xKUfSMmknlIToaUmf5vwE= + + hash2 + + CDctL0QJDSDvlB+uXO69kLW2uA0Xdc0xiJBN8h3pX74= + + + Headers/SDL_system.h + + hash + + I1i3X5zfVBg7YFzag2Dj43RzuUI= + + hash2 + + mt328KSVoSMSjZ4Wy268tC04JQmyCAsDM60TWeG3K4s= + + + Headers/SDL_syswm.h + + hash + + 7sdDIYSuCZbE13gdwZ+rmiqUBEk= + + hash2 + + 6QWGeehhVCpiwN9fQv1by5vpdNg8JqxY1XgR48Fxpdc= + + + Headers/SDL_thread.h + + hash + + rdWafQMEiS2pSqeEGdRXDjaU96Q= + + hash2 + + pVkN+av2tjneOX9IafFyXjDRaWe/ROSrLwUQRfCrYYA= + + + Headers/SDL_timer.h + + hash + + Nstsm7GCSSnoH66923lImFIE0fY= + + hash2 + + 6jmEztIQClT68gsMRHHP9tVPF5TxqLfBgmkTqOA00fs= + + + Headers/SDL_touch.h + + hash + + LWDPymUVgQxlg3DwBCJ8klXPq6U= + + hash2 + + y/Kqn35XtKznNX9foqsPjC+jlnbRvBuF8A1MzKIjBmY= + + + Headers/SDL_types.h + + hash + + 8xeioL5fy1QauaS4i9g5UdMotoM= + + hash2 + + Em64WSsB0scWcgjtDOAhVyy4XoRBRciw+YaG3vyn6hM= + + + Headers/SDL_version.h + + hash + + uQu/n7fxrWWekVzFRLxJgncZHTA= + + hash2 + + DSeMgtt/ULGqpA7hISV4OMHyIDRvvY5Cr6a8loDxcVY= + + + Headers/SDL_video.h + + hash + + oDSfm7hvyakVAn3MJ/vPYpDiTi8= + + hash2 + + 4kgMp+1L702uCbe5U3mPNYx/zonCSDmAoqKxZGMWlC0= + + + Headers/SDL_vulkan.h + + hash + + k22upiGXgz0TzSKkWtDwaKrV2fw= + + hash2 + + kg2f48mMRh4+Ev5cnsEDDyQqf6YbP7YqWNhykRYzgDo= + + + Headers/begin_code.h + + hash + + BXr58UQDjOvu3YEpLqbL6MzdnEw= + + hash2 + + lZjnBGKuQiSupwtm3kZTliIMMPlHVmUsVTRtQ7E0WMU= + + + Headers/close_code.h + + hash + + b9BWGnHVTllZJNggBlv8S0bczLA= + + hash2 + + /x8Gxc1GaIoziXOz/sebI7d0PytDiEWi8kWZfjkp0Ww= + + + Resources/CMake/sdl2-config-version.cmake + + hash + + GOmfPsl6+zUzjRroR1OeRUu1Do0= + + hash2 + + YeQ8SoXGqMam3mk/39htvQ5fF5Twd16X5JPfl7/hSuk= + + + Resources/CMake/sdl2-config.cmake + + hash + + s2hXhDxzy/ilC+gLamGy/Kq13jo= + + hash2 + + DuTUW8idzRp7WT1FT5x/m1C1SbVH0FKvKRKOgVlRVhU= + + + Resources/Info.plist + + hash + + E/exzjLmO25/xe18BS765cbGzWY= + + hash2 + + lMA4Mg67jCQrkxVHL0vBdN74dU3iomW7AggH3QYKJ44= + + + Resources/License.txt + + hash + + fCUUBjJ4JuUAC8MRSCszNcY21v8= + + hash2 + + d+3CuMuNTuvjYs+HODz44b3nsOHwwJqlcyQOq7qhAPc= + + + Resources/ReadMe.txt + + hash + + 04Gl3MPa3Etx4qtkaftLHaPqBVU= + + hash2 + + OjTqSEaeNJpJyrrZIzKimvTn011CW6ucNulPPxUwgL0= + + + Resources/default.metallib + + hash + + 07w7GQmm31+NEK8ne4mSo7m70Do= + + hash2 + + vmrmeHQ4l7Q4flA5dILQw27M4T0Sc70MQIfP+lFY/do= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/.DS_Store b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..d42e5504273a9b7f27dd265b78a65a43d6e44fe5 GIT binary patch literal 8196 zcmeHMU2GIp6u#fI&^vUXQz$U}?qXG9S)o5ri$K`^0hOONw52T|%kIty6Q(m|XLpNM zw91nb;$Jkzs4qS!L47d(5HQ1rnEtv?uJBJn|E6kknz@Z7nx1X}v!gPP7w?mctQ zx#!HBbH8&ZXNEC`wu0Hfn86t1)CJWmX}CcXa?z(WCFGP71?e+pu^jU=qy9+7nX)=! zL=lK05Je!0Koo%}0{?{w&^uc+KFxbyN~1A~Koo%)83A!V#HkCK4C%O}!O=lOPy!GY zB|y;Vn(BZ+CmzydNXI1&RLQ2S9uTS`EHNO}Ngfx=i6%ojE~!*!km?NKoe@?j2<}dL z@nAVaQqpLQA`nGjY6L|3RInXXxu=W%j1)A@qmmd+gzvp&yrGNtQuW}j`1ru3S2&&{W8*UAM7wrSClg9El}dZTS#!8QFr zw^s_d%GH!^jE%LlG$rB%W6rSaJt`eRco?v` zlN>ue)hov@wr3pSRasrhtM5u)sdFl|xkg`q-#%?HrOz+Y<9CnbZO`@hSvj9*O0V+C z&91EH_T(%fAIN%6Vc7LkdUZDKWD8C@Z?!s3uYI3IyedDN^Bkwg^KD^fXfSV`$P3vN z(cpgH%jMexV<}xP_|{&FY}rMtgDm=kHr-Mv)=Y8{>g)3sFJE;_-MaM~x3q1$YtKZL zUOj(7ji&9Vc)EG}9^12)>^o}QynPESW9M&wwbGgS#Nllobe@Z ztI^8!i~Nwd@vgL=?;f$-(j#p(Iyv9(A5G`1?oonVNu!JNVDpGCR60#N?}fsZ#%|7s zgt1oBBs(I2-93gu+hDszn*dH*CvmQS!8xxjZ9#3aPF@CaRBMyaYg4V=XqJ1D)80y*Pk_ zID`~T48z3;j-!YNF^-3E3XkAPJcXz63|_>`cm-$i2HwN__y8Z`b9{quaS1=+H~fw( z3Y0lYrJ^Z|l$g?}tXDQD&B`50Qt49mDBbe8l~NuJl{^gjgG48t4wOgqbx-7x^3sj- zD7Jma_AYJb|0a(v&6An4aM9wpNT-%9tygg;VOm1wwTKTueqCw=AP*2R8KB0JrOTGD z&|>|R1=fk_l2We_8ObNa>Qy&sF?|;0iJacLnx?ZUN91%(A{NsXN=-SfZ-{An86}}U1|`-`AG4+{v; zt5J_;Y$hP@K@WP-hkgR{VPudE0PPW+bMSFL9w10RM4Gk6S-;|V;6=kY=S?6WwB zSMeI&#ydEVckvM};1gWLr}zwC;(Ppv%aZ`S>v{m=*Qo$5_U2s2bB~au1pDiiX3VTi zdTNOJzjONU|1%~Yk)u%rW?}?T-qG99MxIZ19x5b@Q$I{yG_h`6(m;g + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL.h new file mode 100644 index 0000000..0b81a21 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL.h @@ -0,0 +1,233 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL.h + * + * Main include header for the SDL library + */ + + +#ifndef SDL_h_ +#define SDL_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* As of version 0.5, SDL is loaded dynamically into the application */ + +/** + * \name SDL_INIT_* + * + * These are the flags which may be passed to SDL_Init(). You should + * specify the subsystems which you will be using in your application. + */ +/* @{ */ +#define SDL_INIT_TIMER 0x00000001u +#define SDL_INIT_AUDIO 0x00000010u +#define SDL_INIT_VIDEO 0x00000020u /**< SDL_INIT_VIDEO implies SDL_INIT_EVENTS */ +#define SDL_INIT_JOYSTICK 0x00000200u /**< SDL_INIT_JOYSTICK implies SDL_INIT_EVENTS */ +#define SDL_INIT_HAPTIC 0x00001000u +#define SDL_INIT_GAMECONTROLLER 0x00002000u /**< SDL_INIT_GAMECONTROLLER implies SDL_INIT_JOYSTICK */ +#define SDL_INIT_EVENTS 0x00004000u +#define SDL_INIT_SENSOR 0x00008000u +#define SDL_INIT_NOPARACHUTE 0x00100000u /**< compatibility; this flag is ignored. */ +#define SDL_INIT_EVERYTHING ( \ + SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_EVENTS | \ + SDL_INIT_JOYSTICK | SDL_INIT_HAPTIC | SDL_INIT_GAMECONTROLLER | SDL_INIT_SENSOR \ + ) +/* @} */ + +/** + * Initialize the SDL library. + * + * SDL_Init() simply forwards to calling SDL_InitSubSystem(). Therefore, the + * two may be used interchangeably. Though for readability of your code + * SDL_InitSubSystem() might be preferred. + * + * The file I/O (for example: SDL_RWFromFile) and threading (SDL_CreateThread) + * subsystems are initialized by default. Message boxes + * (SDL_ShowSimpleMessageBox) also attempt to work without initializing the + * video subsystem, in hopes of being useful in showing an error dialog when + * SDL_Init fails. You must specifically initialize other subsystems if you + * use them in your application. + * + * Logging (such as SDL_Log) works without initialization, too. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_INIT_TIMER`: timer subsystem + * - `SDL_INIT_AUDIO`: audio subsystem + * - `SDL_INIT_VIDEO`: video subsystem; automatically initializes the events + * subsystem + * - `SDL_INIT_JOYSTICK`: joystick subsystem; automatically initializes the + * events subsystem + * - `SDL_INIT_HAPTIC`: haptic (force feedback) subsystem + * - `SDL_INIT_GAMECONTROLLER`: controller subsystem; automatically + * initializes the joystick subsystem + * - `SDL_INIT_EVENTS`: events subsystem + * - `SDL_INIT_EVERYTHING`: all of the above subsystems + * - `SDL_INIT_NOPARACHUTE`: compatibility; this flag is ignored + * + * Subsystem initialization is ref-counted, you must call SDL_QuitSubSystem() + * for each SDL_InitSubSystem() to correctly shutdown a subsystem manually (or + * call SDL_Quit() to force shutdown). If a subsystem is already loaded then + * this call will increase the ref-count and return. + * + * \param flags subsystem initialization flags + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + * \sa SDL_SetMainReady + * \sa SDL_WasInit + */ +extern DECLSPEC int SDLCALL SDL_Init(Uint32 flags); + +/** + * Compatibility function to initialize the SDL library. + * + * In SDL2, this function and SDL_Init() are interchangeable. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_Quit + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC int SDLCALL SDL_InitSubSystem(Uint32 flags); + +/** + * Shut down specific SDL subsystems. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * SDL_QuitSubSystem() and SDL_WasInit() will not work. You will need to use + * that subsystem's quit function (SDL_VideoQuit()) directly instead. But + * generally, you should not be using those functions directly anyhow; use + * SDL_Init() instead. + * + * You still need to call SDL_Quit() even if you close all open subsystems + * with SDL_QuitSubSystem(). + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_InitSubSystem + * \sa SDL_Quit + */ +extern DECLSPEC void SDLCALL SDL_QuitSubSystem(Uint32 flags); + +/** + * Get a mask of the specified subsystems which are currently initialized. + * + * \param flags any of the flags used by SDL_Init(); see SDL_Init for details. + * \returns a mask of all initialized subsystems if `flags` is 0, otherwise it + * returns the initialization status of the specified subsystems. + * + * The return value does not include SDL_INIT_NOPARACHUTE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_InitSubSystem + */ +extern DECLSPEC Uint32 SDLCALL SDL_WasInit(Uint32 flags); + +/** + * Clean up all initialized subsystems. + * + * You should call this function even if you have already shutdown each + * initialized subsystem with SDL_QuitSubSystem(). It is safe to call this + * function even in the case of errors in initialization. + * + * If you start a subsystem using a call to that subsystem's init function + * (for example SDL_VideoInit()) instead of SDL_Init() or SDL_InitSubSystem(), + * then you must use that subsystem's quit function (SDL_VideoQuit()) to shut + * it down before calling SDL_Quit(). But generally, you should not be using + * those functions directly anyhow; use SDL_Init() instead. + * + * You can use this function with atexit() to ensure that it is run when your + * application is shutdown, but it is not wise to do this from a library or + * other dynamically loaded code. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + * \sa SDL_QuitSubSystem + */ +extern DECLSPEC void SDLCALL SDL_Quit(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL2/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_assert.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_assert.h new file mode 100644 index 0000000..80cf75a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_assert.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_assert_h_ +#define SDL_assert_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifndef SDL_ASSERT_LEVEL +#ifdef SDL_DEFAULT_ASSERT_LEVEL +#define SDL_ASSERT_LEVEL SDL_DEFAULT_ASSERT_LEVEL +#elif defined(_DEBUG) || defined(DEBUG) || \ + (defined(__GNUC__) && !defined(__OPTIMIZE__)) +#define SDL_ASSERT_LEVEL 2 +#else +#define SDL_ASSERT_LEVEL 1 +#endif +#endif /* SDL_ASSERT_LEVEL */ + +/* +These are macros and not first class functions so that the debugger breaks +on the assertion line and not in some random guts of SDL, and so each +assert can have unique static variables associated with it. +*/ + +#if defined(_MSC_VER) +/* Don't include intrin.h here because it contains C++ code */ + extern void __cdecl __debugbreak(void); + #define SDL_TriggerBreakpoint() __debugbreak() +#elif _SDL_HAS_BUILTIN(__builtin_debugtrap) + #define SDL_TriggerBreakpoint() __builtin_debugtrap() +#elif ( (!defined(__NACL__)) && ((defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__))) ) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "int $3\n\t" ) +#elif (defined(__GNUC__) || defined(__clang__)) && defined(__riscv) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "ebreak\n\t" ) +#elif ( defined(__APPLE__) && (defined(__arm64__) || defined(__aarch64__)) ) /* this might work on other ARM targets, but this is a known quantity... */ + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "brk #22\n\t" ) +#elif defined(__APPLE__) && defined(__arm__) + #define SDL_TriggerBreakpoint() __asm__ __volatile__ ( "bkpt #22\n\t" ) +#elif defined(__386__) && defined(__WATCOMC__) + #define SDL_TriggerBreakpoint() { _asm { int 0x03 } } +#elif defined(HAVE_SIGNAL_H) && !defined(__WATCOMC__) + #include + #define SDL_TriggerBreakpoint() raise(SIGTRAP) +#else + /* How do we trigger breakpoints on this platform? */ + #define SDL_TriggerBreakpoint() +#endif + +#if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 supports __func__ as a standard. */ +# define SDL_FUNCTION __func__ +#elif ((defined(__GNUC__) && (__GNUC__ >= 2)) || defined(_MSC_VER) || defined (__WATCOMC__)) +# define SDL_FUNCTION __FUNCTION__ +#else +# define SDL_FUNCTION "???" +#endif +#define SDL_FILE __FILE__ +#define SDL_LINE __LINE__ + +/* +sizeof (x) makes the compiler still parse the expression even without +assertions enabled, so the code is always checked at compile time, but +doesn't actually generate code for it, so there are no side effects or +expensive checks at run time, just the constant size of what x WOULD be, +which presumably gets optimized out as unused. +This also solves the problem of... + + int somevalue = blah(); + SDL_assert(somevalue == 1); + +...which would cause compiles to complain that somevalue is unused if we +disable assertions. +*/ + +/* "while (0,0)" fools Microsoft's compiler's /W4 warning level into thinking + this condition isn't constant. And looks like an owl's face! */ +#ifdef _MSC_VER /* stupid /W4 warnings. */ +#define SDL_NULL_WHILE_LOOP_CONDITION (0,0) +#else +#define SDL_NULL_WHILE_LOOP_CONDITION (0) +#endif + +#define SDL_disabled_assert(condition) \ + do { (void) sizeof ((condition)); } while (SDL_NULL_WHILE_LOOP_CONDITION) + +typedef enum +{ + SDL_ASSERTION_RETRY, /**< Retry the assert immediately. */ + SDL_ASSERTION_BREAK, /**< Make the debugger trigger a breakpoint. */ + SDL_ASSERTION_ABORT, /**< Terminate the program. */ + SDL_ASSERTION_IGNORE, /**< Ignore the assert. */ + SDL_ASSERTION_ALWAYS_IGNORE /**< Ignore the assert from now on. */ +} SDL_AssertState; + +typedef struct SDL_AssertData +{ + int always_ignore; + unsigned int trigger_count; + const char *condition; + const char *filename; + int linenum; + const char *function; + const struct SDL_AssertData *next; +} SDL_AssertData; + +/* Never call this directly. Use the SDL_assert* macros. */ +extern DECLSPEC SDL_AssertState SDLCALL SDL_ReportAssertion(SDL_AssertData *, + const char *, + const char *, int) +#if defined(__clang__) +#if __has_feature(attribute_analyzer_noreturn) +/* this tells Clang's static analysis that we're a custom assert function, + and that the analyzer should assume the condition was always true past this + SDL_assert test. */ + __attribute__((analyzer_noreturn)) +#endif +#endif +; + +/* the do {} while(0) avoids dangling else problems: + if (x) SDL_assert(y); else blah(); + ... without the do/while, the "else" could attach to this macro's "if". + We try to handle just the minimum we need here in a macro...the loop, + the static vars, and break points. The heavy lifting is handled in + SDL_ReportAssertion(), in SDL_assert.c. +*/ +#define SDL_enabled_assert(condition) \ + do { \ + while ( !(condition) ) { \ + static struct SDL_AssertData sdl_assert_data = { 0, 0, #condition, 0, 0, 0, 0 }; \ + const SDL_AssertState sdl_assert_state = SDL_ReportAssertion(&sdl_assert_data, SDL_FUNCTION, SDL_FILE, SDL_LINE); \ + if (sdl_assert_state == SDL_ASSERTION_RETRY) { \ + continue; /* go again. */ \ + } else if (sdl_assert_state == SDL_ASSERTION_BREAK) { \ + SDL_TriggerBreakpoint(); \ + } \ + break; /* not retrying. */ \ + } \ + } while (SDL_NULL_WHILE_LOOP_CONDITION) + +/* Enable various levels of assertions. */ +#if SDL_ASSERT_LEVEL == 0 /* assertions disabled */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_disabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 1 /* release settings. */ +# define SDL_assert(condition) SDL_disabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 2 /* normal settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_disabled_assert(condition) +#elif SDL_ASSERT_LEVEL == 3 /* paranoid settings. */ +# define SDL_assert(condition) SDL_enabled_assert(condition) +# define SDL_assert_release(condition) SDL_enabled_assert(condition) +# define SDL_assert_paranoid(condition) SDL_enabled_assert(condition) +#else +# error Unknown assertion level. +#endif + +/* this assertion is never disabled at any level. */ +#define SDL_assert_always(condition) SDL_enabled_assert(condition) + + +/** + * A callback that fires when an SDL assertion fails. + * + * \param data a pointer to the SDL_AssertData structure corresponding to the + * current assertion + * \param userdata what was passed as `userdata` to SDL_SetAssertionHandler() + * \returns an SDL_AssertState value indicating how to handle the failure. + */ +typedef SDL_AssertState (SDLCALL *SDL_AssertionHandler)( + const SDL_AssertData* data, void* userdata); + +/** + * Set an application-defined assertion handler. + * + * This function allows an application to show its own assertion UI and/or + * force the response to an assertion failure. If the application doesn't + * provide this, SDL will try to do the right thing, popping up a + * system-specific GUI dialog, and probably minimizing any fullscreen windows. + * + * This callback may fire from any thread, but it runs wrapped in a mutex, so + * it will only fire from one thread at a time. + * + * This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + * + * \param handler the SDL_AssertionHandler function to call when an assertion + * fails or NULL for the default handler + * \param userdata a pointer that is passed to `handler` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC void SDLCALL SDL_SetAssertionHandler( + SDL_AssertionHandler handler, + void *userdata); + +/** + * Get the default assertion handler. + * + * This returns the function pointer that is called by default when an + * assertion is triggered. This is an internal function provided by SDL, that + * is used for assertions when SDL_SetAssertionHandler() hasn't been used to + * provide a different function. + * + * \returns the default SDL_AssertionHandler that is called when an assert + * triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetDefaultAssertionHandler(void); + +/** + * Get the current assertion handler. + * + * This returns the function pointer that is called when an assertion is + * triggered. This is either the value last passed to + * SDL_SetAssertionHandler(), or if no application-specified function is set, + * is equivalent to calling SDL_GetDefaultAssertionHandler(). + * + * The parameter `puserdata` is a pointer to a void*, which will store the + * "userdata" pointer that was passed to SDL_SetAssertionHandler(). This value + * will always be NULL for the default handler. If you don't care about this + * data, it is safe to pass a NULL pointer to this function to ignore it. + * + * \param puserdata pointer which is filled with the "userdata" pointer that + * was passed to SDL_SetAssertionHandler() + * \returns the SDL_AssertionHandler that is called when an assert triggers. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_SetAssertionHandler + */ +extern DECLSPEC SDL_AssertionHandler SDLCALL SDL_GetAssertionHandler(void **puserdata); + +/** + * Get a list of all assertion failures. + * + * This function gets all assertions triggered since the last call to + * SDL_ResetAssertionReport(), or the start of the program. + * + * The proper way to examine this data looks something like this: + * + * ```c + * const SDL_AssertData *item = SDL_GetAssertionReport(); + * while (item) { + * printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + * item->condition, item->function, item->filename, + * item->linenum, item->trigger_count, + * item->always_ignore ? "yes" : "no"); + * item = item->next; + * } + * ``` + * + * \returns a list of all failed assertions or NULL if the list is empty. This + * memory should not be modified or freed by the application. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetAssertionReport + */ +extern DECLSPEC const SDL_AssertData * SDLCALL SDL_GetAssertionReport(void); + +/** + * Clear the list of all assertion failures. + * + * This function will clear the list of all assertions triggered up to that + * point. Immediately following this call, SDL_GetAssertionReport will return + * no items. In addition, any previously-triggered assertions will be reset to + * a trigger_count of zero, and their always_ignore state will be false. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAssertionReport + */ +extern DECLSPEC void SDLCALL SDL_ResetAssertionReport(void); + + +/* these had wrong naming conventions until 2.0.4. Please update your app! */ +#define SDL_assert_state SDL_AssertState +#define SDL_assert_data SDL_AssertData + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_assert_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_atomic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_atomic.h new file mode 100644 index 0000000..7c12b48 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_atomic.h @@ -0,0 +1,414 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_atomic.h + * + * Atomic operations. + * + * IMPORTANT: + * If you are not an expert in concurrent lockless programming, you should + * only be using the atomic lock and reference counting functions in this + * file. In all other cases you should be protecting your data structures + * with full mutexes. + * + * The list of "safe" functions to use are: + * SDL_AtomicLock() + * SDL_AtomicUnlock() + * SDL_AtomicIncRef() + * SDL_AtomicDecRef() + * + * Seriously, here be dragons! + * ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + * + * You can find out a little more about lockless programming and the + * subtle issues that can arise here: + * http://msdn.microsoft.com/en-us/library/ee418650%28v=vs.85%29.aspx + * + * There's also lots of good information here: + * http://www.1024cores.net/home/lock-free-algorithms + * http://preshing.com/ + * + * These operations may or may not actually be implemented using + * processor specific atomic operations. When possible they are + * implemented as true processor specific atomic operations. When that + * is not possible the are implemented using locks that *do* use the + * available atomic operations. + * + * All of the atomic operations that modify memory are full memory barriers. + */ + +#ifndef SDL_atomic_h_ +#define SDL_atomic_h_ + +#include +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name SDL AtomicLock + * + * The atomic locks are efficient spinlocks using CPU instructions, + * but are vulnerable to starvation and can spin forever if a thread + * holding a lock has been terminated. For this reason you should + * minimize the code executed inside an atomic lock and never do + * expensive things like API or system calls while holding them. + * + * The atomic locks are not safe to lock recursively. + * + * Porting Note: + * The spin lock functions and type are required and can not be + * emulated because they are used in the atomic emulation code. + */ +/* @{ */ + +typedef int SDL_SpinLock; + +/** + * Try to lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * \returns SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already + * held. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicTryLock(SDL_SpinLock *lock); + +/** + * Lock a spin lock by setting it to a non-zero value. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicTryLock + * \sa SDL_AtomicUnlock + */ +extern DECLSPEC void SDLCALL SDL_AtomicLock(SDL_SpinLock *lock); + +/** + * Unlock a spin lock by setting it to 0. + * + * Always returns immediately. + * + * ***Please note that spinlocks are dangerous if you don't know what you're + * doing. Please be careful using any sort of spinlock!*** + * + * \param lock a pointer to a lock variable + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicLock + * \sa SDL_AtomicTryLock + */ +extern DECLSPEC void SDLCALL SDL_AtomicUnlock(SDL_SpinLock *lock); + +/* @} *//* SDL AtomicLock */ + + +/** + * The compiler barrier prevents the compiler from reordering + * reads and writes to globally visible variables across the call. + */ +#if defined(_MSC_VER) && (_MSC_VER > 1200) && !defined(__clang__) +void _ReadWriteBarrier(void); +#pragma intrinsic(_ReadWriteBarrier) +#define SDL_CompilerBarrier() _ReadWriteBarrier() +#elif (defined(__GNUC__) && !defined(__EMSCRIPTEN__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs when using GCC or Solaris Studio 12.1+. */ +#define SDL_CompilerBarrier() __asm__ __volatile__ ("" : : : "memory") +#elif defined(__WATCOMC__) +extern __inline void SDL_CompilerBarrier(void); +#pragma aux SDL_CompilerBarrier = "" parm [] modify exact []; +#else +#define SDL_CompilerBarrier() \ +{ SDL_SpinLock _tmp = 0; SDL_AtomicLock(&_tmp); SDL_AtomicUnlock(&_tmp); } +#endif + +/** + * Memory barriers are designed to prevent reads and writes from being + * reordered by the compiler and being seen out of order on multi-core CPUs. + * + * A typical pattern would be for thread A to write some data and a flag, and + * for thread B to read the flag and get the data. In this case you would + * insert a release barrier between writing the data and the flag, + * guaranteeing that the data write completes no later than the flag is + * written, and you would insert an acquire barrier between reading the flag + * and reading the data, to ensure that all the reads associated with the flag + * have completed. + * + * In this pattern you should always see a release barrier paired with an + * acquire barrier and you should gate the data reads/writes with a single + * flag variable. + * + * For more information on these semantics, take a look at the blog post: + * http://preshing.com/20120913/acquire-and-release-semantics + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void SDLCALL SDL_MemoryBarrierReleaseFunction(void); +extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); + +#if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__GNUC__) && defined(__arm__) +#if 0 /* defined(__LINUX__) || defined(__ANDROID__) */ +/* Information from: + https://chromium.googlesource.com/chromium/chromium/+/trunk/base/atomicops_internals_arm_gcc.h#19 + + The Linux kernel provides a helper function which provides the right code for a memory barrier, + hard-coded at address 0xffff0fa0 +*/ +typedef void (*SDL_KernelMemoryBarrierFunc)(); +#define SDL_MemoryBarrierRelease() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#define SDL_MemoryBarrierAcquire() ((SDL_KernelMemoryBarrierFunc)0xffff0fa0)() +#elif 0 /* defined(__QNXNTO__) */ +#include + +#define SDL_MemoryBarrierRelease() __cpu_membarrier() +#define SDL_MemoryBarrierAcquire() __cpu_membarrier() +#else +#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) || defined(__ARM_ARCH_8A__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") +#elif defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6T2__) || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_5TE__) +#ifdef __thumb__ +/* The mcr instruction isn't available in thumb mode, use real functions */ +#define SDL_MEMORY_BARRIER_USES_FUNCTION +#define SDL_MemoryBarrierRelease() SDL_MemoryBarrierReleaseFunction() +#define SDL_MemoryBarrierAcquire() SDL_MemoryBarrierAcquireFunction() +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" : : "r"(0) : "memory") +#endif /* __thumb__ */ +#else +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("" : : : "memory") +#endif /* __LINUX__ || __ANDROID__ */ +#endif /* __GNUC__ && __arm__ */ +#else +#if (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x5120)) +/* This is correct for all CPUs on Solaris when using Solaris Studio 12.1+. */ +#include +#define SDL_MemoryBarrierRelease() __machine_rel_barrier() +#define SDL_MemoryBarrierAcquire() __machine_acq_barrier() +#else +/* This is correct for the x86 and x64 CPUs, and we'll expand this over time. */ +#define SDL_MemoryBarrierRelease() SDL_CompilerBarrier() +#define SDL_MemoryBarrierAcquire() SDL_CompilerBarrier() +#endif +#endif + +/* "REP NOP" is PAUSE, coded for tools that don't know it by that name. */ +#if (defined(__GNUC__) || defined(__clang__)) && (defined(__i386__) || defined(__x86_64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("pause\n") /* Some assemblers can't do REP NOP, so go with PAUSE. */ +#elif (defined(__arm__) && defined(__ARM_ARCH) && __ARM_ARCH >= 7) || defined(__aarch64__) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("yield" ::: "memory") +#elif (defined(__powerpc__) || defined(__powerpc64__)) + #define SDL_CPUPauseInstruction() __asm__ __volatile__("or 27,27,27"); +#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_X64)) + #define SDL_CPUPauseInstruction() _mm_pause() /* this is actually "rep nop" and not a SIMD instruction. No inline asm in MSVC x86-64! */ +#elif defined(_MSC_VER) && (defined(_M_ARM) || defined(_M_ARM64)) + #define SDL_CPUPauseInstruction() __yield() +#elif defined(__WATCOMC__) && defined(__386__) + extern __inline void SDL_CPUPauseInstruction(void); + #pragma aux SDL_CPUPauseInstruction = ".686p" ".xmm2" "pause" +#else + #define SDL_CPUPauseInstruction() +#endif + + +/** + * \brief A type representing an atomic integer value. It is a struct + * so people don't accidentally use numeric operations on it. + */ +typedef struct { int value; } SDL_atomic_t; + +/** + * Set an atomic variable to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param oldval the old value + * \param newval the new value + * \returns SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGet + * \sa SDL_AtomicSet + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCAS(SDL_atomic_t *a, int oldval, int newval); + +/** + * Set an atomic variable to a value. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicGet + */ +extern DECLSPEC int SDLCALL SDL_AtomicSet(SDL_atomic_t *a, int v); + +/** + * Get the value of an atomic variable. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable + * \returns the current value of an atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicSet + */ +extern DECLSPEC int SDLCALL SDL_AtomicGet(SDL_atomic_t *a); + +/** + * Add to an atomic variable. + * + * This function also acts as a full memory barrier. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to an SDL_atomic_t variable to be modified + * \param v the desired value to add + * \returns the previous value of the atomic variable. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicDecRef + * \sa SDL_AtomicIncRef + */ +extern DECLSPEC int SDLCALL SDL_AtomicAdd(SDL_atomic_t *a, int v); + +/** + * \brief Increment an atomic variable used as a reference count. + */ +#ifndef SDL_AtomicIncRef +#define SDL_AtomicIncRef(a) SDL_AtomicAdd(a, 1) +#endif + +/** + * \brief Decrement an atomic variable used as a reference count. + * + * \return SDL_TRUE if the variable reached zero after decrementing, + * SDL_FALSE otherwise + */ +#ifndef SDL_AtomicDecRef +#define SDL_AtomicDecRef(a) (SDL_AtomicAdd(a, -1) == 1) +#endif + +/** + * Set a pointer to a new value if it is currently an old value. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param oldval the old pointer value + * \param newval the new pointer value + * \returns SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AtomicCAS + * \sa SDL_AtomicGetPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AtomicCASPtr(void **a, void *oldval, void *newval); + +/** + * Set a pointer to a value atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \param v the desired pointer value + * \returns the previous value of the pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicGetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicSetPtr(void **a, void* v); + +/** + * Get the value of a pointer atomically. + * + * ***Note: If you don't know what this function is for, you shouldn't use + * it!*** + * + * \param a a pointer to a pointer + * \returns the current value of a pointer. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_AtomicCASPtr + * \sa SDL_AtomicSetPtr + */ +extern DECLSPEC void* SDLCALL SDL_AtomicGetPtr(void **a); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif + +#include + +#endif /* SDL_atomic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_audio.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_audio.h new file mode 100644 index 0000000..2eeb542 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_audio.h @@ -0,0 +1,1500 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/* !!! FIXME: several functions in here need Doxygen comments. */ + +/** + * \file SDL_audio.h + * + * Access to the raw audio mixing buffer for the SDL library. + */ + +#ifndef SDL_audio_h_ +#define SDL_audio_h_ + +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief Audio format flags. + * + * These are what the 16 bits in SDL_AudioFormat currently mean... + * (Unspecified bits are always zero). + * + * \verbatim + ++-----------------------sample is signed if set + || + || ++-----------sample is bigendian if set + || || + || || ++---sample is float if set + || || || + || || || +---sample bit size---+ + || || || | | + 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 + \endverbatim + * + * There are macros in SDL 2.0 and later to query these bits. + */ +typedef Uint16 SDL_AudioFormat; + +/** + * \name Audio flags + */ +/* @{ */ + +#define SDL_AUDIO_MASK_BITSIZE (0xFF) +#define SDL_AUDIO_MASK_DATATYPE (1<<8) +#define SDL_AUDIO_MASK_ENDIAN (1<<12) +#define SDL_AUDIO_MASK_SIGNED (1<<15) +#define SDL_AUDIO_BITSIZE(x) (x & SDL_AUDIO_MASK_BITSIZE) +#define SDL_AUDIO_ISFLOAT(x) (x & SDL_AUDIO_MASK_DATATYPE) +#define SDL_AUDIO_ISBIGENDIAN(x) (x & SDL_AUDIO_MASK_ENDIAN) +#define SDL_AUDIO_ISSIGNED(x) (x & SDL_AUDIO_MASK_SIGNED) +#define SDL_AUDIO_ISINT(x) (!SDL_AUDIO_ISFLOAT(x)) +#define SDL_AUDIO_ISLITTLEENDIAN(x) (!SDL_AUDIO_ISBIGENDIAN(x)) +#define SDL_AUDIO_ISUNSIGNED(x) (!SDL_AUDIO_ISSIGNED(x)) + +/** + * \name Audio format flags + * + * Defaults to LSB byte order. + */ +/* @{ */ +#define AUDIO_U8 0x0008 /**< Unsigned 8-bit samples */ +#define AUDIO_S8 0x8008 /**< Signed 8-bit samples */ +#define AUDIO_U16LSB 0x0010 /**< Unsigned 16-bit samples */ +#define AUDIO_S16LSB 0x8010 /**< Signed 16-bit samples */ +#define AUDIO_U16MSB 0x1010 /**< As above, but big-endian byte order */ +#define AUDIO_S16MSB 0x9010 /**< As above, but big-endian byte order */ +#define AUDIO_U16 AUDIO_U16LSB +#define AUDIO_S16 AUDIO_S16LSB +/* @} */ + +/** + * \name int32 support + */ +/* @{ */ +#define AUDIO_S32LSB 0x8020 /**< 32-bit integer samples */ +#define AUDIO_S32MSB 0x9020 /**< As above, but big-endian byte order */ +#define AUDIO_S32 AUDIO_S32LSB +/* @} */ + +/** + * \name float32 support + */ +/* @{ */ +#define AUDIO_F32LSB 0x8120 /**< 32-bit floating point samples */ +#define AUDIO_F32MSB 0x9120 /**< As above, but big-endian byte order */ +#define AUDIO_F32 AUDIO_F32LSB +/* @} */ + +/** + * \name Native audio byte ordering + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define AUDIO_U16SYS AUDIO_U16LSB +#define AUDIO_S16SYS AUDIO_S16LSB +#define AUDIO_S32SYS AUDIO_S32LSB +#define AUDIO_F32SYS AUDIO_F32LSB +#else +#define AUDIO_U16SYS AUDIO_U16MSB +#define AUDIO_S16SYS AUDIO_S16MSB +#define AUDIO_S32SYS AUDIO_S32MSB +#define AUDIO_F32SYS AUDIO_F32MSB +#endif +/* @} */ + +/** + * \name Allow change flags + * + * Which audio format changes are allowed when opening a device. + */ +/* @{ */ +#define SDL_AUDIO_ALLOW_FREQUENCY_CHANGE 0x00000001 +#define SDL_AUDIO_ALLOW_FORMAT_CHANGE 0x00000002 +#define SDL_AUDIO_ALLOW_CHANNELS_CHANGE 0x00000004 +#define SDL_AUDIO_ALLOW_SAMPLES_CHANGE 0x00000008 +#define SDL_AUDIO_ALLOW_ANY_CHANGE (SDL_AUDIO_ALLOW_FREQUENCY_CHANGE|SDL_AUDIO_ALLOW_FORMAT_CHANGE|SDL_AUDIO_ALLOW_CHANNELS_CHANGE|SDL_AUDIO_ALLOW_SAMPLES_CHANGE) +/* @} */ + +/* @} *//* Audio flags */ + +/** + * This function is called when the audio device needs more data. + * + * \param userdata An application-specific parameter saved in + * the SDL_AudioSpec structure + * \param stream A pointer to the audio data buffer. + * \param len The length of that buffer in bytes. + * + * Once the callback returns, the buffer will no longer be valid. + * Stereo samples are stored in a LRLRLR ordering. + * + * You can choose to avoid callbacks and use SDL_QueueAudio() instead, if + * you like. Just open your audio device with a NULL callback. + */ +typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, + int len); + +/** + * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR LFE BL BR (4.1 surround) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) + */ +typedef struct SDL_AudioSpec +{ + int freq; /**< DSP frequency -- samples per second */ + SDL_AudioFormat format; /**< Audio data format */ + Uint8 channels; /**< Number of channels: 1 mono, 2 stereo */ + Uint8 silence; /**< Audio buffer silence value (calculated) */ + Uint16 samples; /**< Audio buffer size in sample FRAMES (total samples divided by channel count) */ + Uint16 padding; /**< Necessary for some compile environments */ + Uint32 size; /**< Audio buffer size in bytes (calculated) */ + SDL_AudioCallback callback; /**< Callback that feeds the audio device (NULL to use SDL_QueueAudio()). */ + void *userdata; /**< Userdata passed to callback (ignored for NULL callbacks). */ +} SDL_AudioSpec; + + +struct SDL_AudioCVT; +typedef void (SDLCALL * SDL_AudioFilter) (struct SDL_AudioCVT * cvt, + SDL_AudioFormat format); + +/** + * \brief Upper limit of filters in SDL_AudioCVT + * + * The maximum number of SDL_AudioFilter functions in SDL_AudioCVT is + * currently limited to 9. The SDL_AudioCVT.filters array has 10 pointers, + * one of which is the terminating NULL pointer. + */ +#define SDL_AUDIOCVT_MAX_FILTERS 9 + +/** + * \struct SDL_AudioCVT + * \brief A structure to hold a set of audio conversion filters and buffers. + * + * Note that various parts of the conversion pipeline can take advantage + * of SIMD operations (like SSE2, for example). SDL_AudioCVT doesn't require + * you to pass it aligned data, but can possibly run much faster if you + * set both its (buf) field to a pointer that is aligned to 16 bytes, and its + * (len) field to something that's a multiple of 16, if possible. + */ +#if defined(__GNUC__) && !defined(__CHERI_PURE_CAPABILITY__) +/* This structure is 84 bytes on 32-bit architectures, make sure GCC doesn't + pad it out to 88 bytes to guarantee ABI compatibility between compilers. + This is not a concern on CHERI architectures, where pointers must be stored + at aligned locations otherwise they will become invalid, and thus structs + containing pointers cannot be packed without giving a warning or error. + vvv + The next time we rev the ABI, make sure to size the ints and add padding. +*/ +#define SDL_AUDIOCVT_PACKED __attribute__((packed)) +#else +#define SDL_AUDIOCVT_PACKED +#endif +/* */ +typedef struct SDL_AudioCVT +{ + int needed; /**< Set to 1 if conversion possible */ + SDL_AudioFormat src_format; /**< Source audio format */ + SDL_AudioFormat dst_format; /**< Target audio format */ + double rate_incr; /**< Rate conversion increment */ + Uint8 *buf; /**< Buffer to hold entire audio data */ + int len; /**< Length of original audio buffer */ + int len_cvt; /**< Length of converted audio buffer */ + int len_mult; /**< buffer must be len*len_mult big */ + double len_ratio; /**< Given len, final size is len*len_ratio */ + SDL_AudioFilter filters[SDL_AUDIOCVT_MAX_FILTERS + 1]; /**< NULL-terminated list of filter functions */ + int filter_index; /**< Current audio conversion function */ +} SDL_AUDIOCVT_PACKED SDL_AudioCVT; + + +/* Function prototypes */ + +/** + * \name Driver discovery functions + * + * These functions return the list of built in audio drivers, in the + * order that they are normally initialized by default. + */ +/* @{ */ + +/** + * Use this function to get the number of built-in audio drivers. + * + * This function returns a hardcoded number. This never returns a negative + * value; if there are no drivers compiled into this build of SDL, this + * function returns zero. The presence of a driver in this list does not mean + * it will function, it just means SDL is capable of interacting with that + * interface. For example, a build of SDL might have esound support, but if + * there's no esound server available, SDL's esound driver would fail if used. + * + * By default, SDL tries all drivers, in its preferred order, until one is + * found to be usable. + * + * \returns the number of built-in audio drivers. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDrivers(void); + +/** + * Use this function to get the name of a built in audio driver. + * + * The list of audio drivers is given in the order that they are normally + * initialized by default; the drivers that seem more reasonable to choose + * first (as far as the SDL developers believe) are earlier in the list. + * + * The names of drivers are all simple, low-ASCII identifiers, like "alsa", + * "coreaudio" or "xaudio2". These never have Unicode characters, and are not + * meant to be proper names. + * + * \param index the index of the audio driver; the value ranges from 0 to + * SDL_GetNumAudioDrivers() - 1 + * \returns the name of the audio driver at the requested index, or NULL if an + * invalid index was specified. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDriver(int index); +/* @} */ + +/** + * \name Initialization and cleanup + * + * \internal These functions are used internally, and should not be used unless + * you have a specific need to specify the audio driver you want to + * use. You should normally use SDL_Init() or SDL_InitSubSystem(). + */ +/* @{ */ + +/** + * Use this function to initialize a particular audio driver. + * + * This function is used internally, and should not be used unless you have a + * specific need to designate the audio driver you want to use. You should + * normally use SDL_Init() or SDL_InitSubSystem(). + * + * \param driver_name the name of the desired audio driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioQuit + */ +extern DECLSPEC int SDLCALL SDL_AudioInit(const char *driver_name); + +/** + * Use this function to shut down audio if you initialized it with + * SDL_AudioInit(). + * + * This function is used internally, and should not be used unless you have a + * specific need to specify the audio driver you want to use. You should + * normally use SDL_Quit() or SDL_QuitSubSystem(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC void SDLCALL SDL_AudioQuit(void); +/* @} */ + +/** + * Get the name of the current audio driver. + * + * The returned string points to internal static memory and thus never becomes + * invalid, even if you quit the audio subsystem and initialize a new driver + * (although such a case would return a different static string from another + * call to this function, of course). As such, you should not modify or free + * the returned string. + * + * \returns the name of the current audio driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AudioInit + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentAudioDriver(void); + +/** + * This function is a legacy means of opening the audio device. + * + * This function remains for compatibility with SDL 1.2, but also because it's + * slightly easier to use than the new functions in SDL 2.0. The new, more + * powerful, and preferred way to do this is SDL_OpenAudioDevice(). + * + * This function is roughly equivalent to: + * + * ```c + * SDL_OpenAudioDevice(NULL, 0, desired, obtained, SDL_AUDIO_ALLOW_ANY_CHANGE); + * ``` + * + * With two notable exceptions: + * + * - If `obtained` is NULL, we use `desired` (and allow no changes), which + * means desired will be modified to have the correct values for silence, + * etc, and SDL will convert any differences between your app's specific + * request and the hardware behind the scenes. + * - The return value is always success or failure, and not a device ID, which + * means you can only have one device open at a time with this function. + * + * \param desired an SDL_AudioSpec structure representing the desired output + * format. Please refer to the SDL_OpenAudioDevice + * documentation for details on how to prepare this structure. + * \param obtained an SDL_AudioSpec structure filled in with the actual + * parameters, or NULL. + * \returns 0 if successful, placing the actual hardware parameters in the + * structure pointed to by `obtained`. + * + * If `obtained` is NULL, the audio data passed to the callback + * function will be guaranteed to be in the requested format, and + * will be automatically converted to the actual hardware audio + * format if necessary. If `obtained` is NULL, `desired` will have + * fields modified. + * + * This function returns a negative error code on failure to open the + * audio device or failure to set up the audio thread; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudio + * \sa SDL_LockAudio + * \sa SDL_PauseAudio + * \sa SDL_UnlockAudio + */ +extern DECLSPEC int SDLCALL SDL_OpenAudio(SDL_AudioSpec * desired, + SDL_AudioSpec * obtained); + +/** + * SDL Audio Device IDs. + * + * A successful call to SDL_OpenAudio() is always device id 1, and legacy + * SDL audio APIs assume you want this device ID. SDL_OpenAudioDevice() calls + * always returns devices >= 2 on success. The legacy calls are good both + * for backwards compatibility and when you don't care about multiple, + * specific, or capture devices. + */ +typedef Uint32 SDL_AudioDeviceID; + +/** + * Get the number of built-in audio devices. + * + * This function is only valid after successfully initializing the audio + * subsystem. + * + * Note that audio capture support is not implemented as of SDL 2.0.4, so the + * `iscapture` parameter is for future expansion and should always be zero for + * now. + * + * This function will return -1 if an explicit list of devices can't be + * determined. Returning -1 is not an error. For example, if SDL is set up to + * talk to a remote audio server, it can't list every one available on the + * Internet, but it will still allow a specific host to be specified in + * SDL_OpenAudioDevice(). + * + * In many common cases, when this function returns a value <= 0, it can still + * successfully open the default device (NULL for first argument of + * SDL_OpenAudioDevice()). + * + * This function may trigger a complete redetect of available hardware. It + * should not be called for each iteration of a loop, but rather once at the + * start of a loop: + * + * ```c + * // Don't do this: + * for (int i = 0; i < SDL_GetNumAudioDevices(0); i++) + * + * // do this instead: + * const int count = SDL_GetNumAudioDevices(0); + * for (int i = 0; i < count; ++i) { do_something_here(); } + * ``` + * + * \param iscapture zero to request playback devices, non-zero to request + * recording devices + * \returns the number of available devices exposed by the current driver or + * -1 if an explicit list of devices can't be determined. A return + * value of -1 does not necessarily mean an error condition. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumAudioDevices(int iscapture); + +/** + * Get the human-readable name of a specific audio device. + * + * This function is only valid after successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * The string returned by this function is UTF-8 encoded, read-only, and + * managed internally. You are not to free it. If you need to keep the string + * for any length of time, you should make your own copy of it, as it will be + * invalid next time any of several other SDL functions are called. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \returns the name of the audio device at the requested index, or NULL on + * error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC const char *SDLCALL SDL_GetAudioDeviceName(int index, + int iscapture); + +/** + * Get the preferred audio format of a specific audio device. + * + * This function is only valid after a successfully initializing the audio + * subsystem. The values returned by this function reflect the latest call to + * SDL_GetNumAudioDevices(); re-call that function to redetect available + * hardware. + * + * `spec` will be filled with the sample rate, sample format, and channel + * count. + * + * \param index the index of the audio device; valid values range from 0 to + * SDL_GetNumAudioDevices() - 1 + * \param iscapture non-zero to query the list of recording devices, zero to + * query the list of output devices. + * \param spec The SDL_AudioSpec to be initialized by this function. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetNumAudioDevices + * \sa SDL_GetDefaultAudioInfo + */ +extern DECLSPEC int SDLCALL SDL_GetAudioDeviceSpec(int index, + int iscapture, + SDL_AudioSpec *spec); + + +/** + * Get the name and preferred format of the default audio device. + * + * Some (but not all!) platforms have an isolated mechanism to get information + * about the "default" device. This can actually be a completely different + * device that's not in the list you get from SDL_GetAudioDeviceSpec(). It can + * even be a network address! (This is discussed in SDL_OpenAudioDevice().) + * + * As a result, this call is not guaranteed to be performant, as it can query + * the sound server directly every time, unlike the other query functions. You + * should call this function sparingly! + * + * `spec` will be filled with the sample rate, sample format, and channel + * count, if a default device exists on the system. If `name` is provided, + * will be filled with either a dynamically-allocated UTF-8 string or NULL. + * + * \param name A pointer to be filled with the name of the default device (can + * be NULL). Please call SDL_free() when you are done with this + * pointer! + * \param spec The SDL_AudioSpec to be initialized by this function. + * \param iscapture non-zero to query the default recording device, zero to + * query the default output device. + * \returns 0 on success, nonzero on error + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetAudioDeviceName + * \sa SDL_GetAudioDeviceSpec + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC int SDLCALL SDL_GetDefaultAudioInfo(char **name, + SDL_AudioSpec *spec, + int iscapture); + + +/** + * Open a specific audio device. + * + * SDL_OpenAudio(), unlike this function, always acts on device ID 1. As such, + * this function will never return a 1 so as not to conflict with the legacy + * function. + * + * Please note that SDL 2.0 before 2.0.5 did not support recording; as such, + * this function would fail if `iscapture` was not zero. Starting with SDL + * 2.0.5, recording is implemented and this value can be non-zero. + * + * Passing in a `device` name of NULL requests the most reasonable default + * (and is equivalent to what SDL_OpenAudio() does to choose a device). The + * `device` name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + * some drivers allow arbitrary and driver-specific strings, such as a + * hostname/IP address for a remote audio server, or a filename in the + * diskaudio driver. + * + * An opened audio device starts out paused, and should be enabled for playing + * by calling SDL_PauseAudioDevice(devid, 0) when you are ready for your audio + * callback function to be called. Since the audio driver may modify the + * requested size of the audio buffer, you should allocate any local mixing + * buffers after you open the audio device. + * + * The audio callback runs in a separate thread in most cases; you can prevent + * race conditions between your callback and other threads without fully + * pausing playback with SDL_LockAudioDevice(). For more information about the + * callback, see SDL_AudioSpec. + * + * Managing the audio spec via 'desired' and 'obtained': + * + * When filling in the desired audio spec structure: + * + * - `desired->freq` should be the frequency in sample-frames-per-second (Hz). + * - `desired->format` should be the audio format (`AUDIO_S16SYS`, etc). + * - `desired->samples` is the desired size of the audio buffer, in _sample + * frames_ (with stereo output, two samples--left and right--would make a + * single sample frame). This number should be a power of two, and may be + * adjusted by the audio driver to a value more suitable for the hardware. + * Good values seem to range between 512 and 8096 inclusive, depending on + * the application and CPU speed. Smaller values reduce latency, but can + * lead to underflow if the application is doing heavy processing and cannot + * fill the audio buffer in time. Note that the number of sample frames is + * directly related to time by the following formula: `ms = + * (sampleframes*1000)/freq` + * - `desired->size` is the size in _bytes_ of the audio buffer, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->silence` is the value used to set the buffer to silence, and is + * calculated by SDL_OpenAudioDevice(). You don't initialize this. + * - `desired->callback` should be set to a function that will be called when + * the audio device is ready for more data. It is passed a pointer to the + * audio buffer, and the length in bytes of the audio buffer. This function + * usually runs in a separate thread, and so you should protect data + * structures that it accesses by calling SDL_LockAudioDevice() and + * SDL_UnlockAudioDevice() in your code. Alternately, you may pass a NULL + * pointer here, and call SDL_QueueAudio() with some frequency, to queue + * more audio samples to be played (or for capture devices, call + * SDL_DequeueAudio() with some frequency, to obtain audio samples). + * - `desired->userdata` is passed as the first parameter to your callback + * function. If you passed a NULL callback, this value is ignored. + * + * `allowed_changes` can have the following flags OR'd together: + * + * - `SDL_AUDIO_ALLOW_FREQUENCY_CHANGE` + * - `SDL_AUDIO_ALLOW_FORMAT_CHANGE` + * - `SDL_AUDIO_ALLOW_CHANNELS_CHANGE` + * - `SDL_AUDIO_ALLOW_SAMPLES_CHANGE` + * - `SDL_AUDIO_ALLOW_ANY_CHANGE` + * + * These flags specify how SDL should behave when a device cannot offer a + * specific feature. If the application requests a feature that the hardware + * doesn't offer, SDL will always try to get the closest equivalent. + * + * For example, if you ask for float32 audio format, but the sound card only + * supports int16, SDL will set the hardware to int16. If you had set + * SDL_AUDIO_ALLOW_FORMAT_CHANGE, SDL will change the format in the `obtained` + * structure. If that flag was *not* set, SDL will prepare to convert your + * callback's float32 audio to int16 before feeding it to the hardware and + * will keep the originally requested format in the `obtained` structure. + * + * The resulting audio specs, varying depending on hardware and on what + * changes were allowed, will then be written back to `obtained`. + * + * If your application can only handle one specific data format, pass a zero + * for `allowed_changes` and let SDL transparently handle any differences. + * + * \param device a UTF-8 string reported by SDL_GetAudioDeviceName() or a + * driver-specific name as appropriate. NULL requests the most + * reasonable default device. + * \param iscapture non-zero to specify a device should be opened for + * recording, not playback + * \param desired an SDL_AudioSpec structure representing the desired output + * format; see SDL_OpenAudio() for more information + * \param obtained an SDL_AudioSpec structure filled in with the actual output + * format; see SDL_OpenAudio() for more information + * \param allowed_changes 0, or one or more flags OR'd together + * \returns a valid device ID that is > 0 on success or 0 on failure; call + * SDL_GetError() for more information. + * + * For compatibility with SDL 1.2, this will never return 1, since + * SDL reserves that ID for the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CloseAudioDevice + * \sa SDL_GetAudioDeviceName + * \sa SDL_LockAudioDevice + * \sa SDL_OpenAudio + * \sa SDL_PauseAudioDevice + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC SDL_AudioDeviceID SDLCALL SDL_OpenAudioDevice( + const char *device, + int iscapture, + const SDL_AudioSpec *desired, + SDL_AudioSpec *obtained, + int allowed_changes); + + + +/** + * \name Audio state + * + * Get the current audio state. + */ +/* @{ */ +typedef enum +{ + SDL_AUDIO_STOPPED = 0, + SDL_AUDIO_PLAYING, + SDL_AUDIO_PAUSED +} SDL_AudioStatus; + +/** + * This function is a legacy means of querying the audio device. + * + * New programs might want to use SDL_GetAudioDeviceStatus() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_GetAudioDeviceStatus(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \returns the SDL_AudioStatus of the audio device opened by SDL_OpenAudio(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioDeviceStatus + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioStatus(void); + +/** + * Use this function to get the current audio state of an audio device. + * + * \param dev the ID of an audio device previously opened with + * SDL_OpenAudioDevice() + * \returns the SDL_AudioStatus of the specified audio device. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC SDL_AudioStatus SDLCALL SDL_GetAudioDeviceStatus(SDL_AudioDeviceID dev); +/* @} *//* Audio State */ + +/** + * \name Pause audio functions + * + * These functions pause and unpause the audio callback processing. + * They should be called with a parameter of 0 after opening the audio + * device to start playing sound. This is so you can safely initialize + * data for your callback function after opening the audio device. + * Silence will be written to the audio device during the pause. + */ +/* @{ */ + +/** + * This function is a legacy means of pausing the audio device. + * + * New programs might want to use SDL_PauseAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_PauseAudioDevice(1, pause_on); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetAudioStatus + * \sa SDL_PauseAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudio(int pause_on); + +/** + * Use this function to pause and unpause audio playback on a specified + * device. + * + * This function pauses and unpauses the audio callback processing for a given + * device. Newly-opened audio devices start in the paused state, so you must + * call this function with **pause_on**=0 after opening the specified audio + * device to start playing sound. This allows you to safely initialize data + * for your callback function after opening the audio device. Silence will be + * written to the audio device while paused, and the audio callback is + * guaranteed to not be called. Pausing one device does not prevent other + * unpaused devices from running their callbacks. + * + * Pausing state does not stack; even if you pause a device several times, a + * single unpause will start the device playing again, and vice versa. This is + * different from how SDL_LockAudioDevice() works. + * + * If you just need to protect a few variables from race conditions vs your + * callback, you shouldn't pause the audio device, as it will lead to dropouts + * in the audio playback. Instead, you should use SDL_LockAudioDevice(). + * + * \param dev a device opened by SDL_OpenAudioDevice() + * \param pause_on non-zero to pause, 0 to unpause + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_PauseAudioDevice(SDL_AudioDeviceID dev, + int pause_on); +/* @} *//* Pause audio functions */ + +/** + * Load the audio data of a WAVE file into memory. + * + * Loading a WAVE file requires `src`, `spec`, `audio_buf` and `audio_len` to + * be valid pointers. The entire data portion of the file is then loaded into + * memory and decoded if necessary. + * + * If `freesrc` is non-zero, the data source gets automatically closed and + * freed before the function returns. + * + * Supported formats are RIFF WAVE files with the formats PCM (8, 16, 24, and + * 32 bits), IEEE Float (32 bits), Microsoft ADPCM and IMA ADPCM (4 bits), and + * A-law and mu-law (8 bits). Other formats are currently unsupported and + * cause an error. + * + * If this function succeeds, the pointer returned by it is equal to `spec` + * and the pointer to the audio data allocated by the function is written to + * `audio_buf` and its length in bytes to `audio_len`. The SDL_AudioSpec + * members `freq`, `channels`, and `format` are set to the values of the audio + * data in the buffer. The `samples` member is set to a sane default and all + * others are set to zero. + * + * It's necessary to use SDL_FreeWAV() to free the audio data returned in + * `audio_buf` when it is no longer used. + * + * Because of the underspecification of the .WAV format, there are many + * problematic files in the wild that cause issues with strict decoders. To + * provide compatibility with these files, this decoder is lenient in regards + * to the truncation of the file, the fact chunk, and the size of the RIFF + * chunk. The hints `SDL_HINT_WAVE_RIFF_CHUNK_SIZE`, + * `SDL_HINT_WAVE_TRUNCATION`, and `SDL_HINT_WAVE_FACT_CHUNK` can be used to + * tune the behavior of the loading process. + * + * Any file that is invalid (due to truncation, corruption, or wrong values in + * the headers), too big, or unsupported causes an error. Additionally, any + * critical I/O error from the data source will terminate the loading process + * with an error. The function returns NULL on error and in all cases (with + * the exception of `src` being NULL), an appropriate error message will be + * set. + * + * It is required that the data source supports seeking. + * + * Example: + * + * ```c + * SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, &spec, &buf, &len); + * ``` + * + * Note that the SDL_LoadWAV macro does this same thing for you, but in a less + * messy way: + * + * ```c + * SDL_LoadWAV("sample.wav", &spec, &buf, &len); + * ``` + * + * \param src The data source for the WAVE data + * \param freesrc If non-zero, SDL will _always_ free the data source + * \param spec An SDL_AudioSpec that will be filled in with the wave file's + * format details + * \param audio_buf A pointer filled with the audio data, allocated by the + * function. + * \param audio_len A pointer filled with the length of the audio data buffer + * in bytes + * \returns This function, if successfully called, returns `spec`, which will + * be filled with the audio data format of the wave source data. + * `audio_buf` will be filled with a pointer to an allocated buffer + * containing the audio data, and `audio_len` is filled with the + * length of that audio buffer in bytes. + * + * This function returns NULL if the .WAV file cannot be opened, uses + * an unknown data format, or is corrupt; call SDL_GetError() for + * more information. + * + * When the application is done with the data returned in + * `audio_buf`, it should call SDL_FreeWAV() to dispose of it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeWAV + * \sa SDL_LoadWAV + */ +extern DECLSPEC SDL_AudioSpec *SDLCALL SDL_LoadWAV_RW(SDL_RWops * src, + int freesrc, + SDL_AudioSpec * spec, + Uint8 ** audio_buf, + Uint32 * audio_len); + +/** + * Loads a WAV from a file. + * Compatibility convenience function. + */ +#define SDL_LoadWAV(file, spec, audio_buf, audio_len) \ + SDL_LoadWAV_RW(SDL_RWFromFile(file, "rb"),1, spec,audio_buf,audio_len) + +/** + * Free data previously allocated with SDL_LoadWAV() or SDL_LoadWAV_RW(). + * + * After a WAVE file has been opened with SDL_LoadWAV() or SDL_LoadWAV_RW() + * its data can eventually be freed with SDL_FreeWAV(). It is safe to call + * this function with a NULL pointer. + * + * \param audio_buf a pointer to the buffer created by SDL_LoadWAV() or + * SDL_LoadWAV_RW() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadWAV + * \sa SDL_LoadWAV_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeWAV(Uint8 * audio_buf); + +/** + * Initialize an SDL_AudioCVT structure for conversion. + * + * Before an SDL_AudioCVT structure can be used to convert audio data it must + * be initialized with source and destination information. + * + * This function will zero out every field of the SDL_AudioCVT, so it must be + * called before the application fills in the final buffer information. + * + * Once this function has returned successfully, and reported that a + * conversion is necessary, the application fills in the rest of the fields in + * SDL_AudioCVT, now that it knows how large a buffer it needs to allocate, + * and then can call SDL_ConvertAudio() to complete the conversion. + * + * \param cvt an SDL_AudioCVT structure filled in with audio conversion + * information + * \param src_format the source format of the audio data; for more info see + * SDL_AudioFormat + * \param src_channels the number of channels in the source + * \param src_rate the frequency (sample-frames-per-second) of the source + * \param dst_format the destination format of the audio data; for more info + * see SDL_AudioFormat + * \param dst_channels the number of channels in the destination + * \param dst_rate the frequency (sample-frames-per-second) of the destination + * \returns 1 if the audio filter is prepared, 0 if no conversion is needed, + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ConvertAudio + */ +extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, + SDL_AudioFormat src_format, + Uint8 src_channels, + int src_rate, + SDL_AudioFormat dst_format, + Uint8 dst_channels, + int dst_rate); + +/** + * Convert audio data to a desired audio format. + * + * This function does the actual audio data conversion, after the application + * has called SDL_BuildAudioCVT() to prepare the conversion information and + * then filled in the buffer details. + * + * Once the application has initialized the `cvt` structure using + * SDL_BuildAudioCVT(), allocated an audio buffer and filled it with audio + * data in the source format, this function will convert the buffer, in-place, + * to the desired format. + * + * The data conversion may go through several passes; any given pass may + * possibly temporarily increase the size of the data. For example, SDL might + * expand 16-bit data to 32 bits before resampling to a lower frequency, + * shrinking the data size after having grown it briefly. Since the supplied + * buffer will be both the source and destination, converting as necessary + * in-place, the application must allocate a buffer that will fully contain + * the data during its largest conversion pass. After SDL_BuildAudioCVT() + * returns, the application should set the `cvt->len` field to the size, in + * bytes, of the source data, and allocate a buffer that is `cvt->len * + * cvt->len_mult` bytes long for the `buf` field. + * + * The source data should be copied into this buffer before the call to + * SDL_ConvertAudio(). Upon successful return, this buffer will contain the + * converted audio, and `cvt->len_cvt` will be the size of the converted data, + * in bytes. Any bytes in the buffer past `cvt->len_cvt` are undefined once + * this function returns. + * + * \param cvt an SDL_AudioCVT structure that was previously set up by + * SDL_BuildAudioCVT(). + * \returns 0 if the conversion was completed successfully or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BuildAudioCVT + */ +extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); + +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream. + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream. + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \returns the number of bytes read from the stream, or -1 on error + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. + * + * The stream may be buffering data behind the scenes until it has enough to + * resample correctly, so this number might be lower than what you expect, or + * even be zero. Add more data or flush the stream if you need the data now. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will be + * audio gaps in the output. Generally this is intended to signal the end of + * input, so the complete output becomes available. + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \since This function is available since SDL 2.0.7. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + +#define SDL_MIX_MAXVOLUME 128 + +/** + * This function is a legacy means of mixing audio. + * + * This function is equivalent to calling... + * + * ```c + * SDL_MixAudioFormat(dst, src, format, len, volume); + * ``` + * + * ...where `format` is the obtained format of the audio device from the + * legacy SDL_OpenAudio() function. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MixAudioFormat + */ +extern DECLSPEC void SDLCALL SDL_MixAudio(Uint8 * dst, const Uint8 * src, + Uint32 len, int volume); + +/** + * Mix audio data in a specified format. + * + * This takes an audio buffer `src` of `len` bytes of `format` data and mixes + * it into `dst`, performing addition, volume adjustment, and overflow + * clipping. The buffer pointed to by `dst` must also be `len` bytes of + * `format` data. + * + * This is provided for convenience -- you can mix your own audio data. + * + * Do not use this function for mixing together more than two streams of + * sample data. The output from repeated application of this function may be + * distorted by clipping, because there is no accumulator with greater range + * than the input (not to mention this being an inefficient way of doing it). + * + * It is a common misconception that this function is required to write audio + * data to an output stream in an audio callback. While you can do that, + * SDL_MixAudioFormat() is really only needed when you're mixing a single + * audio stream with a volume adjustment. + * + * \param dst the destination for the mixed audio + * \param src the source audio buffer to be mixed + * \param format the SDL_AudioFormat structure representing the desired audio + * format + * \param len the length of the audio buffer in bytes + * \param volume ranges from 0 - 128, and should be set to SDL_MIX_MAXVOLUME + * for full audio volume + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, + const Uint8 * src, + SDL_AudioFormat format, + Uint32 len, int volume); + +/** + * Queue more audio on non-callback devices. + * + * If you are looking to retrieve queued audio from a non-callback capture + * device, you want SDL_DequeueAudio() instead. SDL_QueueAudio() will return + * -1 to signify an error if you use it with capture devices. + * + * SDL offers two ways to feed audio to the device: you can either supply a + * callback that SDL triggers with some frequency to obtain more audio (pull + * method), or you can supply no callback, and then SDL will expect you to + * supply data at regular intervals (push method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Queued data will drain to the device as + * necessary without further intervention from you. If the device needs audio + * but there is not enough queued, it will play silence to make up the + * difference. This means you will have skips in your audio playback if you + * aren't routinely queueing sufficient data. + * + * This function copies the supplied data, so you are safe to free it when the + * function returns. This function is thread-safe, but queueing to the same + * device from two threads at once does not promise which buffer will be + * queued first. + * + * You may not queue audio on a device that is using an application-supplied + * callback; doing so returns an error. You have to use the audio callback or + * queue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before queueing; SDL + * handles locking internally for this function. + * + * Note that SDL2 does not support planar audio. You will need to resample + * from planar audio formats into a non-planar one (see SDL_AudioFormat) + * before queuing audio. + * + * \param dev the device ID to which we will queue audio + * \param data the data to queue to the device for later playback + * \param len the number of bytes (not samples!) to which `data` points + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC int SDLCALL SDL_QueueAudio(SDL_AudioDeviceID dev, const void *data, Uint32 len); + +/** + * Dequeue more audio on non-callback devices. + * + * If you are looking to queue audio for output on a non-callback playback + * device, you want SDL_QueueAudio() instead. SDL_DequeueAudio() will always + * return 0 if you use it with playback devices. + * + * SDL offers two ways to retrieve audio from a capture device: you can either + * supply a callback that SDL triggers with some frequency as the device + * records more audio data, (push method), or you can supply no callback, and + * then SDL will expect you to retrieve data at regular intervals (pull + * method) with this function. + * + * There are no limits on the amount of data you can queue, short of + * exhaustion of address space. Data from the device will keep queuing as + * necessary without further intervention from you. This means you will + * eventually run out of memory if you aren't routinely dequeueing data. + * + * Capture devices will not queue data when paused; if you are expecting to + * not need captured audio for some length of time, use SDL_PauseAudioDevice() + * to stop the capture device from queueing more data. This can be useful + * during, say, level loading times. When unpaused, capture devices will start + * queueing data from that point, having flushed any capturable data available + * while paused. + * + * This function is thread-safe, but dequeueing from the same device from two + * threads at once does not promise which thread will dequeue data first. + * + * You may not dequeue audio from a device that is using an + * application-supplied callback; doing so returns an error. You have to use + * the audio callback, or dequeue audio with this function, but not both. + * + * You should not call SDL_LockAudio() on the device before dequeueing; SDL + * handles locking internally for this function. + * + * \param dev the device ID from which we will dequeue audio + * \param data a pointer into where audio data should be copied + * \param len the number of bytes (not samples!) to which (data) points + * \returns the number of bytes dequeued, which could be less than requested; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_GetQueuedAudioSize + */ +extern DECLSPEC Uint32 SDLCALL SDL_DequeueAudio(SDL_AudioDeviceID dev, void *data, Uint32 len); + +/** + * Get the number of bytes of still-queued audio. + * + * For playback devices: this is the number of bytes that have been queued for + * playback with SDL_QueueAudio(), but have not yet been sent to the hardware. + * + * Once we've sent it to the hardware, this function can not decide the exact + * byte boundary of what has been played. It's possible that we just gave the + * hardware several kilobytes right before you called this function, but it + * hasn't played any of it yet, or maybe half of it, etc. + * + * For capture devices, this is the number of bytes that have been captured by + * the device and are waiting for you to dequeue. This number may grow at any + * time, so this only informs of the lower-bound of available data. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before querying; SDL + * handles locking internally for this function. + * + * \param dev the device ID of which we will query queued audio size + * \returns the number of bytes (not samples!) of queued audio. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_ClearQueuedAudio + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetQueuedAudioSize(SDL_AudioDeviceID dev); + +/** + * Drop any queued audio data waiting to be sent to the hardware. + * + * Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + * output devices, the hardware will start playing silence if more audio isn't + * queued. For capture devices, the hardware will start filling the empty + * queue with new data if the capture device isn't paused. + * + * This will not prevent playback of queued audio that's already been sent to + * the hardware, as we can not undo that, so expect there to be some fraction + * of a second of audio that might still be heard. This can be useful if you + * want to, say, drop any pending music or any unprocessed microphone input + * during a level change in your game. + * + * You may not queue or dequeue audio on a device that is using an + * application-supplied callback; calling this function on such a device + * always returns 0. You have to use the audio callback or queue audio, but + * not both. + * + * You should not call SDL_LockAudio() on the device before clearing the + * queue; SDL handles locking internally for this function. + * + * This function always succeeds and thus returns void. + * + * \param dev the device ID of which to clear the audio queue + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetQueuedAudioSize + * \sa SDL_QueueAudio + * \sa SDL_DequeueAudio + */ +extern DECLSPEC void SDLCALL SDL_ClearQueuedAudio(SDL_AudioDeviceID dev); + + +/** + * \name Audio lock functions + * + * The lock manipulated by these functions protects the callback function. + * During a SDL_LockAudio()/SDL_UnlockAudio() pair, you can be guaranteed that + * the callback function is not running. Do not call these from the callback + * function or you will cause deadlock. + */ +/* @{ */ + +/** + * This function is a legacy means of locking the audio device. + * + * New programs might want to use SDL_LockAudioDevice() instead. This function + * is equivalent to calling... + * + * ```c + * SDL_LockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + * \sa SDL_UnlockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudio(void); + +/** + * Use this function to lock out the audio callback function for a specified + * device. + * + * The lock manipulated by these functions protects the audio callback + * function specified in SDL_OpenAudioDevice(). During a + * SDL_LockAudioDevice()/SDL_UnlockAudioDevice() pair, you can be guaranteed + * that the callback function for that device is not running, even if the + * device is not paused. While a device is locked, any other unpaused, + * unlocked devices may still run their callbacks. + * + * Calling this function from inside your audio callback is unnecessary. SDL + * obtains this lock before calling your function, and releases it when the + * function returns. + * + * You should not hold the lock longer than absolutely necessary. If you hold + * it too long, you'll experience dropouts in your audio playback. Ideally, + * your application locks the device, sets a few variables and unlocks again. + * Do not do heavy work while holding the lock for a device. + * + * It is safe to lock the audio device multiple times, as long as you unlock + * it an equivalent number of times. The callback will not run until the + * device has been unlocked completely in this way. If your application fails + * to unlock the device appropriately, your callback will never run, you might + * hear repeating bursts of audio, and SDL_CloseAudioDevice() will probably + * deadlock. + * + * Internally, the audio device lock is a mutex; if you lock from two threads + * at once, not only will you block the audio callback, you'll block the other + * thread. + * + * \param dev the ID of the device to be locked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_LockAudioDevice(SDL_AudioDeviceID dev); + +/** + * This function is a legacy means of unlocking the audio device. + * + * New programs might want to use SDL_UnlockAudioDevice() instead. This + * function is equivalent to calling... + * + * ```c + * SDL_UnlockAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudio + * \sa SDL_UnlockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudio(void); + +/** + * Use this function to unlock the audio callback function for a specified + * device. + * + * This function should be paired with a previous SDL_LockAudioDevice() call. + * + * \param dev the ID of the device to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_UnlockAudioDevice(SDL_AudioDeviceID dev); +/* @} *//* Audio lock functions */ + +/** + * This function is a legacy means of closing the audio device. + * + * This function is equivalent to calling... + * + * ```c + * SDL_CloseAudioDevice(1); + * ``` + * + * ...and is only useful if you used the legacy SDL_OpenAudio() function. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudio + */ +extern DECLSPEC void SDLCALL SDL_CloseAudio(void); + +/** + * Use this function to shut down audio processing and close the audio device. + * + * The application should close open audio devices once they are no longer + * needed. Calling this function will wait until the device's audio callback + * is not running, release the audio hardware and then clean up internal + * state. No further audio will play from this device once this function + * returns. + * + * This function may block briefly while pending audio data is played by the + * hardware, so that applications don't drop the last buffer of data they + * supplied. + * + * The device ID is invalid as soon as the device is closed, and is eligible + * for reuse in a new SDL_OpenAudioDevice() call immediately. + * + * \param dev an audio device previously opened with SDL_OpenAudioDevice() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_OpenAudioDevice + */ +extern DECLSPEC void SDLCALL SDL_CloseAudioDevice(SDL_AudioDeviceID dev); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_audio_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_bits.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_bits.h new file mode 100644 index 0000000..ce32dc1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_bits.h @@ -0,0 +1,126 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_bits.h + * + * Functions for fiddling with bits and bitmasks. + */ + +#ifndef SDL_bits_h_ +#define SDL_bits_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_bits.h + */ + +/** + * Get the index of the most significant bit. Result is undefined when called + * with 0. This operation can also be stated as "count leading zeroes" and + * "log base 2". + * + * \return the index of the most significant bit, or -1 if the value is 0. + */ +#if defined(__WATCOMC__) && defined(__386__) +extern __inline int _SDL_bsr_watcom(Uint32); +#pragma aux _SDL_bsr_watcom = \ + "bsr eax, eax" \ + parm [eax] nomemory \ + value [eax] \ + modify exact [eax] nomemory; +#endif + +SDL_FORCE_INLINE int +SDL_MostSignificantBitIndex32(Uint32 x) +{ +#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)) + /* Count Leading Zeroes builtin in GCC. + * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html + */ + if (x == 0) { + return -1; + } + return 31 - __builtin_clz(x); +#elif defined(__WATCOMC__) && defined(__386__) + if (x == 0) { + return -1; + } + return _SDL_bsr_watcom(x); +#elif defined(_MSC_VER) + unsigned long index; + if (_BitScanReverse(&index, x)) { + return index; + } + return -1; +#else + /* Based off of Bit Twiddling Hacks by Sean Eron Anderson + * , released in the public domain. + * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog + */ + const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000}; + const int S[] = {1, 2, 4, 8, 16}; + + int msbIndex = 0; + int i; + + if (x == 0) { + return -1; + } + + for (i = 4; i >= 0; i--) + { + if (x & b[i]) + { + x >>= S[i]; + msbIndex |= S[i]; + } + } + + return msbIndex; +#endif +} + +SDL_FORCE_INLINE SDL_bool +SDL_HasExactlyOneBitSet32(Uint32 x) +{ + if (x && !(x & (x - 1))) { + return SDL_TRUE; + } + return SDL_FALSE; +} + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_bits_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h new file mode 100644 index 0000000..cdd84e7 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_blendmode.h @@ -0,0 +1,198 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_blendmode.h + * + * Header file declaring the SDL_BlendMode enumeration + */ + +#ifndef SDL_blendmode_h_ +#define SDL_blendmode_h_ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The blend mode used in SDL_RenderCopy() and drawing operations. + */ +typedef enum +{ + SDL_BLENDMODE_NONE = 0x00000000, /**< no blending + dstRGBA = srcRGBA */ + SDL_BLENDMODE_BLEND = 0x00000001, /**< alpha blending + dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + dstA = srcA + (dstA * (1-srcA)) */ + SDL_BLENDMODE_ADD = 0x00000002, /**< additive blending + dstRGB = (srcRGB * srcA) + dstRGB + dstA = dstA */ + SDL_BLENDMODE_MOD = 0x00000004, /**< color modulate + dstRGB = srcRGB * dstRGB + dstA = dstA */ + SDL_BLENDMODE_MUL = 0x00000008, /**< color multiply + dstRGB = (srcRGB * dstRGB) + (dstRGB * (1-srcA)) + dstA = dstA */ + SDL_BLENDMODE_INVALID = 0x7FFFFFFF + + /* Additional custom blend modes can be returned by SDL_ComposeCustomBlendMode() */ + +} SDL_BlendMode; + +/** + * \brief The blend operation used when combining source and destination pixel components + */ +typedef enum +{ + SDL_BLENDOPERATION_ADD = 0x1, /**< dst + src: supported by all renderers */ + SDL_BLENDOPERATION_SUBTRACT = 0x2, /**< dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_REV_SUBTRACT = 0x3, /**< src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES */ + SDL_BLENDOPERATION_MINIMUM = 0x4, /**< min(dst, src) : supported by D3D9, D3D11 */ + SDL_BLENDOPERATION_MAXIMUM = 0x5 /**< max(dst, src) : supported by D3D9, D3D11 */ +} SDL_BlendOperation; + +/** + * \brief The normalized factor used to multiply pixel components + */ +typedef enum +{ + SDL_BLENDFACTOR_ZERO = 0x1, /**< 0, 0, 0, 0 */ + SDL_BLENDFACTOR_ONE = 0x2, /**< 1, 1, 1, 1 */ + SDL_BLENDFACTOR_SRC_COLOR = 0x3, /**< srcR, srcG, srcB, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 0x4, /**< 1-srcR, 1-srcG, 1-srcB, 1-srcA */ + SDL_BLENDFACTOR_SRC_ALPHA = 0x5, /**< srcA, srcA, srcA, srcA */ + SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 0x6, /**< 1-srcA, 1-srcA, 1-srcA, 1-srcA */ + SDL_BLENDFACTOR_DST_COLOR = 0x7, /**< dstR, dstG, dstB, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 0x8, /**< 1-dstR, 1-dstG, 1-dstB, 1-dstA */ + SDL_BLENDFACTOR_DST_ALPHA = 0x9, /**< dstA, dstA, dstA, dstA */ + SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 0xA /**< 1-dstA, 1-dstA, 1-dstA, 1-dstA */ +} SDL_BlendFactor; + +/** + * Compose a custom blend mode for renderers. + * + * The functions SDL_SetRenderDrawBlendMode and SDL_SetTextureBlendMode accept + * the SDL_BlendMode returned by this function if the renderer supports it. + * + * A blend mode controls how the pixels from a drawing operation (source) get + * combined with the pixels from the render target (destination). First, the + * components of the source and destination pixels get multiplied with their + * blend factors. Then, the blend operation takes the two products and + * calculates the result that will get stored in the render target. + * + * Expressed in pseudocode, it would look like this: + * + * ```c + * dstRGB = colorOperation(srcRGB * srcColorFactor, dstRGB * dstColorFactor); + * dstA = alphaOperation(srcA * srcAlphaFactor, dstA * dstAlphaFactor); + * ``` + * + * Where the functions `colorOperation(src, dst)` and `alphaOperation(src, + * dst)` can return one of the following: + * + * - `src + dst` + * - `src - dst` + * - `dst - src` + * - `min(src, dst)` + * - `max(src, dst)` + * + * The red, green, and blue components are always multiplied with the first, + * second, and third components of the SDL_BlendFactor, respectively. The + * fourth component is not used. + * + * The alpha component is always multiplied with the fourth component of the + * SDL_BlendFactor. The other components are not used in the alpha + * calculation. + * + * Support for these blend modes varies for each renderer. To check if a + * specific SDL_BlendMode is supported, create a renderer and pass it to + * either SDL_SetRenderDrawBlendMode or SDL_SetTextureBlendMode. They will + * return with an error if the blend mode is not supported. + * + * This list describes the support of custom blend modes for each renderer in + * SDL 2.0.6. All renderers support the four blend modes listed in the + * SDL_BlendMode enumeration. + * + * - **direct3d**: Supports all operations with all factors. However, some + * factors produce unexpected results with `SDL_BLENDOPERATION_MINIMUM` and + * `SDL_BLENDOPERATION_MAXIMUM`. + * - **direct3d11**: Same as Direct3D 9. + * - **opengl**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. OpenGL versions 1.1, 1.2, and 1.3 do not work correctly with SDL + * 2.0.6. + * - **opengles**: Supports the `SDL_BLENDOPERATION_ADD` operation with all + * factors. Color and alpha factors need to be the same. OpenGL ES 1 + * implementation specific: May also support `SDL_BLENDOPERATION_SUBTRACT` + * and `SDL_BLENDOPERATION_REV_SUBTRACT`. May support color and alpha + * operations being different from each other. May support color and alpha + * factors being different from each other. + * - **opengles2**: Supports the `SDL_BLENDOPERATION_ADD`, + * `SDL_BLENDOPERATION_SUBTRACT`, `SDL_BLENDOPERATION_REV_SUBTRACT` + * operations with all factors. + * - **psp**: No custom blend mode support. + * - **software**: No custom blend mode support. + * + * Some renderers do not provide an alpha component for the default render + * target. The `SDL_BLENDFACTOR_DST_ALPHA` and + * `SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA` factors do not have an effect in this + * case. + * + * \param srcColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the source pixels + * \param dstColorFactor the SDL_BlendFactor applied to the red, green, and + * blue components of the destination pixels + * \param colorOperation the SDL_BlendOperation used to combine the red, + * green, and blue components of the source and + * destination pixels + * \param srcAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the source pixels + * \param dstAlphaFactor the SDL_BlendFactor applied to the alpha component of + * the destination pixels + * \param alphaOperation the SDL_BlendOperation used to combine the alpha + * component of the source and destination pixels + * \returns an SDL_BlendMode that represents the chosen factors and + * operations. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_SetTextureBlendMode + * \sa SDL_GetTextureBlendMode + */ +extern DECLSPEC SDL_BlendMode SDLCALL SDL_ComposeCustomBlendMode(SDL_BlendFactor srcColorFactor, + SDL_BlendFactor dstColorFactor, + SDL_BlendOperation colorOperation, + SDL_BlendFactor srcAlphaFactor, + SDL_BlendFactor dstAlphaFactor, + SDL_BlendOperation alphaOperation); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_blendmode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h new file mode 100644 index 0000000..6a287b5 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_clipboard.h @@ -0,0 +1,141 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_clipboard.h + * + * Include file for SDL clipboard handling + */ + +#ifndef SDL_clipboard_h_ +#define SDL_clipboard_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Function prototypes */ + +/** + * Put UTF-8 text into the clipboard. + * + * \param text the text to store in the clipboard + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_HasClipboardText + */ +extern DECLSPEC int SDLCALL SDL_SetClipboardText(const char *text); + +/** + * Get UTF-8 text from the clipboard, which must be freed with SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the clipboard's content. + * + * \returns the clipboard text on success or an empty string on failure; call + * SDL_GetError() for more information. Caller must call SDL_free() + * on the returned pointer when done with it (even if there was an + * error). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC char * SDLCALL SDL_GetClipboardText(void); + +/** + * Query whether the clipboard exists and contains a non-empty text string. + * + * \returns SDL_TRUE if the clipboard has text, or SDL_FALSE if it does not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetClipboardText + * \sa SDL_SetClipboardText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasClipboardText(void); + +/** + * Put UTF-8 text into the primary selection. + * + * \param text the text to store in the primary selection + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_HasPrimarySelectionText + */ +extern DECLSPEC int SDLCALL SDL_SetPrimarySelectionText(const char *text); + +/** + * Get UTF-8 text from the primary selection, which must be freed with + * SDL_free(). + * + * This functions returns empty string if there was not enough memory left for + * a copy of the primary selection's content. + * + * \returns the primary selection text on success or an empty string on + * failure; call SDL_GetError() for more information. Caller must + * call SDL_free() on the returned pointer when done with it (even if + * there was an error). + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_HasPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void); + +/** + * Query whether the primary selection exists and contains a non-empty text + * string. + * + * \returns SDL_TRUE if the primary selection has text, or SDL_FALSE if it + * does not. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetPrimarySelectionText + * \sa SDL_SetPrimarySelectionText + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasPrimarySelectionText(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_clipboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config.h new file mode 100644 index 0000000..a168a00 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config.h @@ -0,0 +1,61 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_h_ +#define SDL_config_h_ + +#include + +/** + * \file SDL_config.h + */ + +/* Add any platform that doesn't build using the configure system. */ +#if defined(__WIN32__) +#include +#elif defined(__WINRT__) +#include +#elif defined(__WINGDK__) +#include +#elif defined(__XBOXONE__) || defined(__XBOXSERIES__) +#include +#elif defined(__MACOSX__) +#include +#elif defined(__IPHONEOS__) +#include +#elif defined(__ANDROID__) +#include +#elif defined(__OS2__) +#include +#elif defined(__EMSCRIPTEN__) +#include +#elif defined(__NGAGE__) +#include +#else +/* This is a minimal configuration just to get SDL running on new platforms. */ +#include +#endif /* platform config */ + +#ifdef USING_GENERATED_CONFIG_H +#error Wrong SDL_config.h, check your include path? +#endif + +#endif /* SDL_config_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h new file mode 100644 index 0000000..2f36d7a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_config_macosx.h @@ -0,0 +1,277 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_config_macosx_h_ +#define SDL_config_macosx_h_ +#define SDL_config_h_ + +#include + +/* This gets us MAC_OS_X_VERSION_MIN_REQUIRED... */ +#include + +/* This is a set of defines to configure the SDL features */ + +#ifdef __LP64__ + #define SIZEOF_VOIDP 8 +#else + #define SIZEOF_VOIDP 4 +#endif + +/* Useful headers */ +#define STDC_HEADERS 1 +#define HAVE_ALLOCA_H 1 +#define HAVE_CTYPE_H 1 +#define HAVE_FLOAT_H 1 +#define HAVE_INTTYPES_H 1 +#define HAVE_LIMITS_H 1 +#define HAVE_MATH_H 1 +#define HAVE_SIGNAL_H 1 +#define HAVE_STDINT_H 1 +#define HAVE_STDIO_H 1 +#define HAVE_STRING_H 1 +#define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 + +/* C library functions */ +#define HAVE_DLOPEN 1 +#define HAVE_MALLOC 1 +#define HAVE_CALLOC 1 +#define HAVE_REALLOC 1 +#define HAVE_FREE 1 +#define HAVE_ALLOCA 1 +#define HAVE_GETENV 1 +#define HAVE_SETENV 1 +#define HAVE_PUTENV 1 +#define HAVE_UNSETENV 1 +#define HAVE_QSORT 1 +#define HAVE_BSEARCH 1 +#define HAVE_ABS 1 +#define HAVE_BCOPY 1 +#define HAVE_MEMSET 1 +#define HAVE_MEMCPY 1 +#define HAVE_MEMMOVE 1 +#define HAVE_MEMCMP 1 +#define HAVE_STRLEN 1 +#define HAVE_STRLCPY 1 +#define HAVE_STRLCAT 1 +#define HAVE_STRCHR 1 +#define HAVE_STRRCHR 1 +#define HAVE_STRSTR 1 +#define HAVE_STRTOK_R 1 +#define HAVE_STRTOL 1 +#define HAVE_STRTOUL 1 +#define HAVE_STRTOLL 1 +#define HAVE_STRTOULL 1 +#define HAVE_STRTOD 1 +#define HAVE_ATOI 1 +#define HAVE_ATOF 1 +#define HAVE_STRCMP 1 +#define HAVE_STRNCMP 1 +#define HAVE_STRCASECMP 1 +#define HAVE_STRNCASECMP 1 +#define HAVE_STRCASESTR 1 +#define HAVE_VSSCANF 1 +#define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_EXP 1 +#define HAVE_EXPF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_LROUND 1 +#define HAVE_LROUNDF 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_ROUND 1 +#define HAVE_ROUNDF 1 +#define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 +#define HAVE_TRUNC 1 +#define HAVE_TRUNCF 1 +#define HAVE_SIGACTION 1 +#define HAVE_SETJMP 1 +#define HAVE_NANOSLEEP 1 +#define HAVE_SYSCONF 1 +#define HAVE_SYSCTLBYNAME 1 + +#if defined(__has_include) && (defined(__i386__) || defined(__x86_64)) +# if __has_include() +# define HAVE_IMMINTRIN_H 1 +# endif +#endif + +#if (MAC_OS_X_VERSION_MAX_ALLOWED >= 1070) +#define HAVE_O_CLOEXEC 1 +#endif + +#define HAVE_GCC_ATOMICS 1 + +/* Enable various audio drivers */ +#define SDL_AUDIO_DRIVER_COREAUDIO 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 + +/* Enable various input drivers */ +#define SDL_JOYSTICK_HIDAPI 1 +#define SDL_JOYSTICK_IOKIT 1 +#define SDL_JOYSTICK_VIRTUAL 1 +#define SDL_HAPTIC_IOKIT 1 + +/* The MFI controller support requires ARC Objective C runtime */ +#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1080 && !defined(__i386__) +#define SDL_JOYSTICK_MFI 1 +#endif + +/* Enable the dummy sensor driver */ +#define SDL_SENSOR_DUMMY 1 + +/* Enable various shared object loading systems */ +#define SDL_LOADSO_DLOPEN 1 + +/* Enable various threading systems */ +#define SDL_THREAD_PTHREAD 1 +#define SDL_THREAD_PTHREAD_RECURSIVE_MUTEX 1 + +/* Enable various timer systems */ +#define SDL_TIMER_UNIX 1 + +/* Enable various video drivers */ +#define SDL_VIDEO_DRIVER_COCOA 1 +#define SDL_VIDEO_DRIVER_DUMMY 1 +#undef SDL_VIDEO_DRIVER_X11 +#define SDL_VIDEO_DRIVER_X11_DYNAMIC "/opt/X11/lib/libX11.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XEXT "/opt/X11/lib/libXext.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XINPUT2 "/opt/X11/lib/libXi.6.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XRANDR "/opt/X11/lib/libXrandr.2.dylib" +#define SDL_VIDEO_DRIVER_X11_DYNAMIC_XSS "/opt/X11/lib/libXss.1.dylib" +#define SDL_VIDEO_DRIVER_X11_XDBE 1 +#define SDL_VIDEO_DRIVER_X11_XRANDR 1 +#define SDL_VIDEO_DRIVER_X11_XSCRNSAVER 1 +#define SDL_VIDEO_DRIVER_X11_XSHAPE 1 +#define SDL_VIDEO_DRIVER_X11_HAS_XKBKEYCODETOKEYSYM 1 + +#ifdef MAC_OS_X_VERSION_10_8 +/* + * No matter the versions targeted, this is the 10.8 or later SDK, so you have + * to use the external Xquartz, which is a more modern Xlib. Previous SDKs + * used an older Xlib. + */ +#define SDL_VIDEO_DRIVER_X11_XINPUT2 1 +#define SDL_VIDEO_DRIVER_X11_SUPPORTS_GENERIC_EVENTS 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL +#define SDL_VIDEO_RENDER_OGL 1 +#endif + +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_RT_64_BIT && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_PLATFORM_SUPPORTS_METAL 1 +#else +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + +/* Enable OpenGL support */ +#ifndef SDL_VIDEO_OPENGL +#define SDL_VIDEO_OPENGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_CGL +#define SDL_VIDEO_OPENGL_CGL 1 +#endif +#ifndef SDL_VIDEO_OPENGL_GLX +#define SDL_VIDEO_OPENGL_GLX 1 +#endif + +/* Enable Vulkan and Metal support */ +#ifndef SDL_VIDEO_VULKAN +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 +#else +#define SDL_VIDEO_VULKAN 0 +#endif +#endif + +#ifndef SDL_VIDEO_METAL +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_METAL 1 +#else +#define SDL_VIDEO_METAL 0 +#endif +#endif + +/* Enable system power support */ +#define SDL_POWER_MACOSX 1 + +/* enable filesystem support */ +#define SDL_FILESYSTEM_COCOA 1 + +/* Enable assembly routines */ +#ifdef __ppc__ +#define SDL_ALTIVEC_BLITTERS 1 +#endif + +#endif /* SDL_config_macosx_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_copying.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_copying.h new file mode 100644 index 0000000..b6028ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_copying.h @@ -0,0 +1,20 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h new file mode 100644 index 0000000..900224d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_cpuinfo.h @@ -0,0 +1,594 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_cpuinfo.h + * + * CPU feature detection for SDL. + */ + +#ifndef SDL_cpuinfo_h_ +#define SDL_cpuinfo_h_ + +#include + +/* Need to do this here because intrin.h has C++ code in it */ +/* Visual Studio 2005 has a bug where intrin.h conflicts with winnt.h */ +#if defined(_MSC_VER) && (_MSC_VER >= 1500) && (defined(_M_IX86) || defined(_M_X64)) +#ifdef __clang__ +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ + +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H + +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch (__P, 0, 3 /* _MM_HINT_T0 */); +} + +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ +#include +#ifndef _WIN64 +#ifndef __MMX__ +#define __MMX__ +#endif +#ifndef __3dNOW__ +#define __3dNOW__ +#endif +#endif +#ifndef __SSE__ +#define __SSE__ +#endif +#ifndef __SSE2__ +#define __SSE2__ +#endif +#ifndef __SSE3__ +#define __SSE3__ +#endif +#elif defined(__MINGW64_VERSION_MAJOR) +#include +#if !defined(SDL_DISABLE_ARM_NEON_H) && defined(__ARM_NEON) +# include +#endif +#else +/* altivec.h redefining bool causes a number of problems, see bugs 3993 and 4392, so you need to explicitly define SDL_ENABLE_ALTIVEC_H to have it included. */ +#if defined(HAVE_ALTIVEC_H) && defined(__ALTIVEC__) && !defined(__APPLE_ALTIVEC__) && defined(SDL_ENABLE_ALTIVEC_H) +#include +#endif +#if !defined(SDL_DISABLE_ARM_NEON_H) +# if defined(__ARM_NEON) +# include +# elif defined(__WINDOWS__) || defined(__WINRT__) || defined(__GDK__) +/* Visual Studio doesn't define __ARM_ARCH, but _M_ARM (if set, always 7), and _M_ARM64 (if set, always 1). */ +# if defined(_M_ARM) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# endif +# if defined (_M_ARM64) +# include +# include +# define __ARM_NEON 1 /* Set __ARM_NEON so that it can be used elsewhere, at compile time */ +# define __ARM_ARCH 8 +# endif +# endif +#endif +#endif /* compiler version */ + +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) +#include +#endif +#if defined(__loongarch_sx) && !defined(SDL_DISABLE_LSX_H) +#include +#define __LSX__ +#endif +#if defined(__loongarch_asx) && !defined(SDL_DISABLE_LASX_H) +#include +#define __LASX__ +#endif +#if defined(HAVE_IMMINTRIN_H) && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) +#include +#endif +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) +#include +#endif +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) +#include +#endif +#endif /* HAVE_IMMINTRIN_H */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* This is a guess for the cacheline size used for padding. + * Most x86 processors have a 64 byte cache line. + * The 64-bit PowerPC processors have a 128 byte cache line. + * We'll use the larger value to be generally safe. + */ +#define SDL_CACHELINE_SIZE 128 + +/** + * Get the number of CPU cores available. + * + * \returns the total number of logical CPU cores. On CPUs that include + * technologies such as hyperthreading, the number of logical cores + * may be more than the number of physical cores. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCount(void); + +/** + * Determine the L1 cache line size of the CPU. + * + * This is useful for determining multi-threaded structure padding or SIMD + * prefetch sizes. + * + * \returns the L1 cache line size of the CPU, in bytes. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_GetCPUCacheLineSize(void); + +/** + * Determine whether the CPU has the RDTSC instruction. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has the RDTSC instruction or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasRDTSC(void); + +/** + * Determine whether the CPU has AltiVec features. + * + * This always returns false on CPUs that aren't using PowerPC instruction + * sets. + * + * \returns SDL_TRUE if the CPU has AltiVec features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAltiVec(void); + +/** + * Determine whether the CPU has MMX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has MMX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasMMX(void); + +/** + * Determine whether the CPU has 3DNow! features. + * + * This always returns false on CPUs that aren't using AMD instruction sets. + * + * \returns SDL_TRUE if the CPU has 3DNow! features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Has3DNow(void); + +/** + * Determine whether the CPU has SSE features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE(void); + +/** + * Determine whether the CPU has SSE2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE2(void); + +/** + * Determine whether the CPU has SSE3 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE3 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE3(void); + +/** + * Determine whether the CPU has SSE4.1 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.1 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE41(void); + +/** + * Determine whether the CPU has SSE4.2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has SSE4.2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSSE42(void); + +/** + * Determine whether the CPU has AVX features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX2 + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX(void); + +/** + * Determine whether the CPU has AVX2 features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX2 features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_Has3DNow + * \sa SDL_HasAltiVec + * \sa SDL_HasAVX + * \sa SDL_HasMMX + * \sa SDL_HasRDTSC + * \sa SDL_HasSSE + * \sa SDL_HasSSE2 + * \sa SDL_HasSSE3 + * \sa SDL_HasSSE41 + * \sa SDL_HasSSE42 + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX2(void); + +/** + * Determine whether the CPU has AVX-512F (foundation) features. + * + * This always returns false on CPUs that aren't using Intel instruction sets. + * + * \returns SDL_TRUE if the CPU has AVX-512F features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_HasAVX + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasAVX512F(void); + +/** + * Determine whether the CPU has ARM SIMD (ARMv6) features. + * + * This is different from ARM NEON, which is a different instruction set. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM SIMD features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_HasNEON + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasARMSIMD(void); + +/** + * Determine whether the CPU has NEON (ARM SIMD) features. + * + * This always returns false on CPUs that aren't using ARM instruction sets. + * + * \returns SDL_TRUE if the CPU has ARM NEON features or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasNEON(void); + +/** + * Determine whether the CPU has LSX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LSX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLSX(void); + +/** + * Determine whether the CPU has LASX (LOONGARCH SIMD) features. + * + * This always returns false on CPUs that aren't using LOONGARCH instruction + * sets. + * + * \returns SDL_TRUE if the CPU has LOONGARCH LASX features or SDL_FALSE if + * not. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasLASX(void); + +/** + * Get the amount of RAM configured in the system. + * + * \returns the amount of RAM configured in the system in MiB. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_GetSystemRAM(void); + +/** + * Report the alignment this system needs for SIMD allocations. + * + * This will return the minimum number of bytes to which a pointer must be + * aligned to be compatible with SIMD instructions on the current machine. For + * example, if the machine supports SSE only, it will return 16, but if it + * supports AVX-512F, it'll return 64 (etc). This only reports values for + * instruction sets SDL knows about, so if your SDL build doesn't have + * SDL_HasAVX512F(), then it might return 16 for the SSE support it sees and + * not 64 for the AVX-512 instructions that exist but SDL doesn't know about. + * Plan accordingly. + * + * \returns the alignment in bytes needed for available, known SIMD + * instructions. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC size_t SDLCALL SDL_SIMDGetAlignment(void); + +/** + * Allocate memory in a SIMD-friendly way. + * + * This will allocate a block of memory that is suitable for use with SIMD + * instructions. Specifically, it will be properly aligned and padded for the + * system's supported vector instructions. + * + * The memory returned will be padded such that it is safe to read or write an + * incomplete vector at the end of the memory block. This can be useful so you + * don't have to drop back to a scalar fallback at the end of your SIMD + * processing loop to deal with the final elements without overflowing the + * allocated buffer. + * + * You must free this memory with SDL_FreeSIMD(), not free() or SDL_free() or + * delete[], etc. + * + * Note that SDL will only deal with SIMD instruction sets it is aware of; for + * example, SDL 2.0.8 knows that SSE wants 16-byte vectors (SDL_HasSSE()), and + * AVX2 wants 32 bytes (SDL_HasAVX2()), but doesn't know that AVX-512 wants + * 64. To be clear: if you can't decide to use an instruction set with an + * SDL_Has*() function, don't use that instruction set with memory allocated + * through here. + * + * SDL_AllocSIMD(0) will return a non-NULL pointer, assuming the system isn't + * out of memory, but you are not allowed to dereference it (because you only + * own zero bytes of that buffer). + * + * \param len The length, in bytes, of the block to allocate. The actual + * allocated block might be larger due to padding, etc. + * \returns a pointer to the newly-allocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDRealloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDAlloc(const size_t len); + +/** + * Reallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc(). It can't be used on pointers from malloc, realloc, + * SDL_malloc, memalign, new[], etc. + * + * \param mem The pointer obtained from SDL_SIMDAlloc. This function also + * accepts NULL, at which point this function is the same as + * calling SDL_SIMDAlloc with a NULL pointer. + * \param len The length, in bytes, of the block to allocated. The actual + * allocated block might be larger due to padding, etc. Passing 0 + * will return a non-NULL pointer, assuming the system isn't out of + * memory. + * \returns a pointer to the newly-reallocated block, NULL if out of memory. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SIMDGetAlignment + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDFree + */ +extern DECLSPEC void * SDLCALL SDL_SIMDRealloc(void *mem, const size_t len); + +/** + * Deallocate memory obtained from SDL_SIMDAlloc + * + * It is not valid to use this function on a pointer from anything but + * SDL_SIMDAlloc() or SDL_SIMDRealloc(). It can't be used on pointers from + * malloc, realloc, SDL_malloc, memalign, new[], etc. + * + * However, SDL_SIMDFree(NULL) is a legal no-op. + * + * The memory pointed to by `ptr` is no longer valid for access upon return, + * and may be returned to the system or reused by a future allocation. The + * pointer passed to this function is no longer safe to dereference once this + * function returns, and should be discarded. + * + * \param ptr The pointer, returned from SDL_SIMDAlloc or SDL_SIMDRealloc, to + * deallocate. NULL is a legal no-op. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_SIMDAlloc + * \sa SDL_SIMDRealloc + */ +extern DECLSPEC void SDLCALL SDL_SIMDFree(void *ptr); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_cpuinfo_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_endian.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_endian.h new file mode 100644 index 0000000..62f7ae4 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_endian.h @@ -0,0 +1,348 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_endian.h + * + * Functions for reading and writing endian-specific values + */ + +#ifndef SDL_endian_h_ +#define SDL_endian_h_ + +#include + +#if defined(_MSC_VER) && (_MSC_VER >= 1400) +/* As of Clang 11, '_m_prefetchw' is conflicting with the winnt.h's version, + so we define the needed '_m_prefetch' here as a pseudo-header, until the issue is fixed. */ +#ifdef __clang__ +#ifndef __PRFCHWINTRIN_H +#define __PRFCHWINTRIN_H +static __inline__ void __attribute__((__always_inline__, __nodebug__)) +_m_prefetch(void *__P) +{ + __builtin_prefetch(__P, 0, 3 /* _MM_HINT_T0 */); +} +#endif /* __PRFCHWINTRIN_H */ +#endif /* __clang__ */ + +#include +#endif + +/** + * \name The two types of endianness + */ +/* @{ */ +#define SDL_LIL_ENDIAN 1234 +#define SDL_BIG_ENDIAN 4321 +/* @} */ + +#ifndef SDL_BYTEORDER /* Not defined in SDL_config.h? */ +#ifdef __linux__ +#include +#define SDL_BYTEORDER __BYTE_ORDER +#elif defined(__OpenBSD__) || defined(__DragonFly__) +#include +#define SDL_BYTEORDER BYTE_ORDER +#elif defined(__FreeBSD__) || defined(__NetBSD__) +#include +#define SDL_BYTEORDER BYTE_ORDER +/* predefs from newer gcc and clang versions: */ +#elif defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__BYTE_ORDER__) +#if (__BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#elif (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#else +#if defined(__hppa__) || \ + defined(__m68k__) || defined(mc68000) || defined(_M_M68K) || \ + (defined(__MIPS__) && defined(__MIPSEB__)) || \ + defined(__ppc__) || defined(__POWERPC__) || defined(__powerpc__) || defined(__PPC__) || \ + defined(__sparc__) +#define SDL_BYTEORDER SDL_BIG_ENDIAN +#else +#define SDL_BYTEORDER SDL_LIL_ENDIAN +#endif +#endif /* __linux__ */ +#endif /* !SDL_BYTEORDER */ + +#ifndef SDL_FLOATWORDORDER /* Not defined in SDL_config.h? */ +/* predefs from newer gcc versions: */ +#if defined(__ORDER_LITTLE_ENDIAN__) && defined(__ORDER_BIG_ENDIAN__) && defined(__FLOAT_WORD_ORDER__) +#if (__FLOAT_WORD_ORDER__ == __ORDER_LITTLE_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (__FLOAT_WORD_ORDER__ == __ORDER_BIG_ENDIAN__) +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +#error Unsupported endianness +#endif /**/ +#elif defined(__MAVERICK__) +/* For Maverick, float words are always little-endian. */ +#define SDL_FLOATWORDORDER SDL_LIL_ENDIAN +#elif (defined(__arm__) || defined(__thumb__)) && !defined(__VFP_FP__) && !defined(__ARM_EABI__) +/* For FPA, float words are always big-endian. */ +#define SDL_FLOATWORDORDER SDL_BIG_ENDIAN +#else +/* By default, assume that floats words follow the memory system mode. */ +#define SDL_FLOATWORDORDER SDL_BYTEORDER +#endif /* __FLOAT_WORD_ORDER__ */ +#endif /* !SDL_FLOATWORDORDER */ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_endian.h + */ + +/* various modern compilers may have builtin swap */ +#if defined(__GNUC__) || defined(__clang__) +# define HAS_BUILTIN_BSWAP16 (_SDL_HAS_BUILTIN(__builtin_bswap16)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)) +# define HAS_BUILTIN_BSWAP32 (_SDL_HAS_BUILTIN(__builtin_bswap32)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) +# define HAS_BUILTIN_BSWAP64 (_SDL_HAS_BUILTIN(__builtin_bswap64)) || \ + (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) + + /* this one is broken */ +# define HAS_BROKEN_BSWAP (__GNUC__ == 2 && __GNUC_MINOR__ <= 95) +#else +# define HAS_BUILTIN_BSWAP16 0 +# define HAS_BUILTIN_BSWAP32 0 +# define HAS_BUILTIN_BSWAP64 0 +# define HAS_BROKEN_BSWAP 0 +#endif + +#if HAS_BUILTIN_BSWAP16 +#define SDL_Swap16(x) __builtin_bswap16(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ushort) +#define SDL_Swap16(x) _byteswap_ushort(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=q"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("xchgb %b0,%h0": "=Q"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + int result; + + __asm__("rlwimi %0,%2,8,16,23": "=&r"(result):"0"(x >> 8), "r"(x)); + return (Uint16)result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + __asm__("rorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint16 SDL_Swap16(Uint16); +#pragma aux SDL_Swap16 = \ + "xchg al, ah" \ + parm [ax] \ + modify [ax]; +#else +SDL_FORCE_INLINE Uint16 +SDL_Swap16(Uint16 x) +{ + return SDL_static_cast(Uint16, ((x << 8) | (x >> 8))); +} +#endif + +#if HAS_BUILTIN_BSWAP32 +#define SDL_Swap32(x) __builtin_bswap32(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_ulong) +#define SDL_Swap32(x) _byteswap_ulong(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswap %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("bswapl %0": "=r"(x):"0"(x)); + return x; +} +#elif (defined(__powerpc__) || defined(__ppc__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + Uint32 result; + + __asm__("rlwimi %0,%2,24,16,23": "=&r"(result): "0" (x>>24), "r"(x)); + __asm__("rlwimi %0,%2,8,8,15" : "=&r"(result): "0" (result), "r"(x)); + __asm__("rlwimi %0,%2,24,0,7" : "=&r"(result): "0" (result), "r"(x)); + return result; +} +#elif (defined(__m68k__) && !defined(__mcoldfire__)) +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + __asm__("rorw #8,%0\n\tswap %0\n\trorw #8,%0": "=d"(x): "0"(x):"cc"); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint32 SDL_Swap32(Uint32); +#pragma aux SDL_Swap32 = \ + "bswap eax" \ + parm [eax] \ + modify [eax]; +#else +SDL_FORCE_INLINE Uint32 +SDL_Swap32(Uint32 x) +{ + return SDL_static_cast(Uint32, ((x << 24) | ((x << 8) & 0x00FF0000) | + ((x >> 8) & 0x0000FF00) | (x >> 24))); +} +#endif + +#if HAS_BUILTIN_BSWAP64 +#define SDL_Swap64(x) __builtin_bswap64(x) +#elif (defined(_MSC_VER) && (_MSC_VER >= 1400)) && !defined(__ICL) +#pragma intrinsic(_byteswap_uint64) +#define SDL_Swap64(x) _byteswap_uint64(x) +#elif defined(__i386__) && !HAS_BROKEN_BSWAP +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + union { + struct { + Uint32 a, b; + } s; + Uint64 u; + } v; + v.u = x; + __asm__("bswapl %0 ; bswapl %1 ; xchgl %0,%1" + : "=r"(v.s.a), "=r"(v.s.b) + : "0" (v.s.a), "1"(v.s.b)); + return v.u; +} +#elif defined(__x86_64__) +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + __asm__("bswapq %0": "=r"(x):"0"(x)); + return x; +} +#elif defined(__WATCOMC__) && defined(__386__) +extern __inline Uint64 SDL_Swap64(Uint64); +#pragma aux SDL_Swap64 = \ + "bswap eax" \ + "bswap edx" \ + "xchg eax,edx" \ + parm [eax edx] \ + modify [eax edx]; +#else +SDL_FORCE_INLINE Uint64 +SDL_Swap64(Uint64 x) +{ + Uint32 hi, lo; + + /* Separate into high and low 32-bit values and swap them */ + lo = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x >>= 32; + hi = SDL_static_cast(Uint32, x & 0xFFFFFFFF); + x = SDL_Swap32(lo); + x <<= 32; + x |= SDL_Swap32(hi); + return (x); +} +#endif + + +SDL_FORCE_INLINE float +SDL_SwapFloat(float x) +{ + union { + float f; + Uint32 ui32; + } swapper; + swapper.f = x; + swapper.ui32 = SDL_Swap32(swapper.ui32); + return swapper.f; +} + +/* remove extra macros */ +#undef HAS_BROKEN_BSWAP +#undef HAS_BUILTIN_BSWAP16 +#undef HAS_BUILTIN_BSWAP32 +#undef HAS_BUILTIN_BSWAP64 + +/** + * \name Swap to native + * Byteswap item from the specified endianness to the native endianness. + */ +/* @{ */ +#if SDL_BYTEORDER == SDL_LIL_ENDIAN +#define SDL_SwapLE16(X) (X) +#define SDL_SwapLE32(X) (X) +#define SDL_SwapLE64(X) (X) +#define SDL_SwapFloatLE(X) (X) +#define SDL_SwapBE16(X) SDL_Swap16(X) +#define SDL_SwapBE32(X) SDL_Swap32(X) +#define SDL_SwapBE64(X) SDL_Swap64(X) +#define SDL_SwapFloatBE(X) SDL_SwapFloat(X) +#else +#define SDL_SwapLE16(X) SDL_Swap16(X) +#define SDL_SwapLE32(X) SDL_Swap32(X) +#define SDL_SwapLE64(X) SDL_Swap64(X) +#define SDL_SwapFloatLE(X) SDL_SwapFloat(X) +#define SDL_SwapBE16(X) (X) +#define SDL_SwapBE32(X) (X) +#define SDL_SwapBE64(X) (X) +#define SDL_SwapFloatBE(X) (X) +#endif +/* @} *//* Swap to native */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_endian_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_error.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_error.h new file mode 100644 index 0000000..0cf4f6d --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_error.h @@ -0,0 +1,163 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_error.h + * + * Simple error message routines for SDL. + */ + +#ifndef SDL_error_h_ +#define SDL_error_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Public functions */ + + +/** + * Set the SDL error message for the current thread. + * + * Calling this function will replace any previous error message that was set. + * + * This function always returns -1, since SDL frequently uses -1 to signify an + * failing result, leading to this idiom: + * + * ```c + * if (error_code) { + * return SDL_SetError("This operation has failed: %d", error_code); + * } + * ``` + * + * \param fmt a printf()-style message format string + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * \returns always -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_GetError + */ +extern DECLSPEC int SDLCALL SDL_SetError(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Retrieve a message about the last error that occurred on the current + * thread. + * + * It is possible for multiple errors to occur before calling SDL_GetError(). + * Only the last error is returned. + * + * The message is only applicable when an SDL function has signaled an error. + * You must check the return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). You should *not* use the results of + * SDL_GetError() to decide if an error has occurred! Sometimes SDL will set + * an error string even when reporting success. + * + * SDL will *not* clear the error string for successful API calls. You *must* + * check return values for failure cases before you can assume the error + * string applies. + * + * Error strings are set per-thread, so an error set in a different thread + * will not interfere with the current thread's operation. + * + * The returned string is internally allocated and must not be freed by the + * application. + * + * \returns a message with information about the specific error that occurred, + * or an empty string if there hasn't been an error message set since + * the last call to SDL_ClearError(). The message is only applicable + * when an SDL function has signaled an error. You must check the + * return values of SDL function calls to determine when to + * appropriately call SDL_GetError(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ClearError + * \sa SDL_SetError + */ +extern DECLSPEC const char *SDLCALL SDL_GetError(void); + +/** + * Get the last error message that was set for the current thread. + * + * This allows the caller to copy the error string into a provided buffer, but + * otherwise operates exactly the same as SDL_GetError(). + * + * \param errstr A buffer to fill with the last error message that was set for + * the current thread + * \param maxlen The size of the buffer pointed to by the errstr parameter + * \returns the pointer passed in as the `errstr` parameter. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetError + */ +extern DECLSPEC char * SDLCALL SDL_GetErrorMsg(char *errstr, int maxlen); + +/** + * Clear any previous error message for this thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetError + * \sa SDL_SetError + */ +extern DECLSPEC void SDLCALL SDL_ClearError(void); + +/** + * \name Internal error functions + * + * \internal + * Private error reporting function - used internally. + */ +/* @{ */ +#define SDL_OutOfMemory() SDL_Error(SDL_ENOMEM) +#define SDL_Unsupported() SDL_Error(SDL_UNSUPPORTED) +#define SDL_InvalidParamError(param) SDL_SetError("Parameter '%s' is invalid", (param)) +typedef enum +{ + SDL_ENOMEM, + SDL_EFREAD, + SDL_EFWRITE, + SDL_EFSEEK, + SDL_UNSUPPORTED, + SDL_LASTERROR +} SDL_errorcode; +/* SDL_Error() unconditionally returns -1. */ +extern DECLSPEC int SDLCALL SDL_Error(SDL_errorcode code); +/* @} *//* Internal error functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_error_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_events.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_events.h new file mode 100644 index 0000000..9b2ca2a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_events.h @@ -0,0 +1,1166 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_events.h + * + * Include file for SDL event handling. + */ + +#ifndef SDL_events_h_ +#define SDL_events_h_ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* General keyboard/mouse state definitions */ +#define SDL_RELEASED 0 +#define SDL_PRESSED 1 + +/** + * The types of events that can be delivered. + */ +typedef enum +{ + SDL_FIRSTEVENT = 0, /**< Unused (do not remove) */ + + /* Application events */ + SDL_QUIT = 0x100, /**< User-requested quit */ + + /* These application events have special meaning on iOS, see README-ios.md for details */ + SDL_APP_TERMINATING, /**< The application is being terminated by the OS + Called on iOS in applicationWillTerminate() + Called on Android in onDestroy() + */ + SDL_APP_LOWMEMORY, /**< The application is low on memory, free memory if possible. + Called on iOS in applicationDidReceiveMemoryWarning() + Called on Android in onLowMemory() + */ + SDL_APP_WILLENTERBACKGROUND, /**< The application is about to enter the background + Called on iOS in applicationWillResignActive() + Called on Android in onPause() + */ + SDL_APP_DIDENTERBACKGROUND, /**< The application did enter the background and may not get CPU for some time + Called on iOS in applicationDidEnterBackground() + Called on Android in onPause() + */ + SDL_APP_WILLENTERFOREGROUND, /**< The application is about to enter the foreground + Called on iOS in applicationWillEnterForeground() + Called on Android in onResume() + */ + SDL_APP_DIDENTERFOREGROUND, /**< The application is now interactive + Called on iOS in applicationDidBecomeActive() + Called on Android in onResume() + */ + + SDL_LOCALECHANGED, /**< The user's locale preferences have changed. */ + + /* Display events */ + SDL_DISPLAYEVENT = 0x150, /**< Display state change */ + + /* Window events */ + SDL_WINDOWEVENT = 0x200, /**< Window state change */ + SDL_SYSWMEVENT, /**< System specific event */ + + /* Keyboard events */ + SDL_KEYDOWN = 0x300, /**< Key pressed */ + SDL_KEYUP, /**< Key released */ + SDL_TEXTEDITING, /**< Keyboard text editing (composition) */ + SDL_TEXTINPUT, /**< Keyboard text input */ + SDL_KEYMAPCHANGED, /**< Keymap changed due to a system event such as an + input language or keyboard layout change. + */ + SDL_TEXTEDITING_EXT, /**< Extended keyboard text editing (composition) */ + + /* Mouse events */ + SDL_MOUSEMOTION = 0x400, /**< Mouse moved */ + SDL_MOUSEBUTTONDOWN, /**< Mouse button pressed */ + SDL_MOUSEBUTTONUP, /**< Mouse button released */ + SDL_MOUSEWHEEL, /**< Mouse wheel motion */ + + /* Joystick events */ + SDL_JOYAXISMOTION = 0x600, /**< Joystick axis motion */ + SDL_JOYBALLMOTION, /**< Joystick trackball motion */ + SDL_JOYHATMOTION, /**< Joystick hat position change */ + SDL_JOYBUTTONDOWN, /**< Joystick button pressed */ + SDL_JOYBUTTONUP, /**< Joystick button released */ + SDL_JOYDEVICEADDED, /**< A new joystick has been inserted into the system */ + SDL_JOYDEVICEREMOVED, /**< An opened joystick has been removed */ + SDL_JOYBATTERYUPDATED, /**< Joystick battery level change */ + + /* Game controller events */ + SDL_CONTROLLERAXISMOTION = 0x650, /**< Game controller axis motion */ + SDL_CONTROLLERBUTTONDOWN, /**< Game controller button pressed */ + SDL_CONTROLLERBUTTONUP, /**< Game controller button released */ + SDL_CONTROLLERDEVICEADDED, /**< A new Game controller has been inserted into the system */ + SDL_CONTROLLERDEVICEREMOVED, /**< An opened Game controller has been removed */ + SDL_CONTROLLERDEVICEREMAPPED, /**< The controller mapping was updated */ + SDL_CONTROLLERTOUCHPADDOWN, /**< Game controller touchpad was touched */ + SDL_CONTROLLERTOUCHPADMOTION, /**< Game controller touchpad finger was moved */ + SDL_CONTROLLERTOUCHPADUP, /**< Game controller touchpad finger was lifted */ + SDL_CONTROLLERSENSORUPDATE, /**< Game controller sensor was updated */ + + /* Touch events */ + SDL_FINGERDOWN = 0x700, + SDL_FINGERUP, + SDL_FINGERMOTION, + + /* Gesture events */ + SDL_DOLLARGESTURE = 0x800, + SDL_DOLLARRECORD, + SDL_MULTIGESTURE, + + /* Clipboard events */ + SDL_CLIPBOARDUPDATE = 0x900, /**< The clipboard or primary selection changed */ + + /* Drag and drop events */ + SDL_DROPFILE = 0x1000, /**< The system requests a file open */ + SDL_DROPTEXT, /**< text/plain drag-and-drop event */ + SDL_DROPBEGIN, /**< A new set of drops is beginning (NULL filename) */ + SDL_DROPCOMPLETE, /**< Current set of drops is now complete (NULL filename) */ + + /* Audio hotplug events */ + SDL_AUDIODEVICEADDED = 0x1100, /**< A new audio device is available */ + SDL_AUDIODEVICEREMOVED, /**< An audio device has been removed. */ + + /* Sensor events */ + SDL_SENSORUPDATE = 0x1200, /**< A sensor was updated */ + + /* Render events */ + SDL_RENDER_TARGETS_RESET = 0x2000, /**< The render targets have been reset and their contents need to be updated */ + SDL_RENDER_DEVICE_RESET, /**< The device has been reset and all textures need to be recreated */ + + /* Internal events */ + SDL_POLLSENTINEL = 0x7F00, /**< Signals the end of an event poll cycle */ + + /** Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + * and should be allocated with SDL_RegisterEvents() + */ + SDL_USEREVENT = 0x8000, + + /** + * This last event is only for bounding internal arrays + */ + SDL_LASTEVENT = 0xFFFF +} SDL_EventType; + +/** + * \brief Fields shared by every event + */ +typedef struct SDL_CommonEvent +{ + Uint32 type; + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_CommonEvent; + +/** + * \brief Display state change event data (event.display.*) + */ +typedef struct SDL_DisplayEvent +{ + Uint32 type; /**< ::SDL_DISPLAYEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 display; /**< The associated display index */ + Uint8 event; /**< ::SDL_DisplayEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ +} SDL_DisplayEvent; + +/** + * \brief Window state change event data (event.window.*) + */ +typedef struct SDL_WindowEvent +{ + Uint32 type; /**< ::SDL_WINDOWEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window */ + Uint8 event; /**< ::SDL_WindowEventID */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint32 data1; /**< event dependent data */ + Sint32 data2; /**< event dependent data */ +} SDL_WindowEvent; + +/** + * \brief Keyboard button event structure (event.key.*) + */ +typedef struct SDL_KeyboardEvent +{ + Uint32 type; /**< ::SDL_KEYDOWN or ::SDL_KEYUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 repeat; /**< Non-zero if this is a key repeat */ + Uint8 padding2; + Uint8 padding3; + SDL_Keysym keysym; /**< The key that was pressed or released */ +} SDL_KeyboardEvent; + +#define SDL_TEXTEDITINGEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text editing event structure (event.edit.*) + */ +typedef struct SDL_TextEditingEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTEDITINGEVENT_TEXT_SIZE]; /**< The editing text */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingEvent; + +/** + * \brief Extended keyboard text editing event structure (event.editExt.*) when text would be + * truncated if stored in the text buffer SDL_TextEditingEvent + */ +typedef struct SDL_TextEditingExtEvent +{ + Uint32 type; /**< ::SDL_TEXTEDITING_EXT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char* text; /**< The editing text, which should be freed with SDL_free(), and will not be NULL */ + Sint32 start; /**< The start cursor of selected editing text */ + Sint32 length; /**< The length of selected editing text */ +} SDL_TextEditingExtEvent; + +#define SDL_TEXTINPUTEVENT_TEXT_SIZE (32) +/** + * \brief Keyboard text input event structure (event.text.*) + */ +typedef struct SDL_TextInputEvent +{ + Uint32 type; /**< ::SDL_TEXTINPUT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with keyboard focus, if any */ + char text[SDL_TEXTINPUTEVENT_TEXT_SIZE]; /**< The input text */ +} SDL_TextInputEvent; + +/** + * \brief Mouse motion event structure (event.motion.*) + */ +typedef struct SDL_MouseMotionEvent +{ + Uint32 type; /**< ::SDL_MOUSEMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint32 state; /**< The current button state */ + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ + Sint32 xrel; /**< The relative motion in the X direction */ + Sint32 yrel; /**< The relative motion in the Y direction */ +} SDL_MouseMotionEvent; + +/** + * \brief Mouse button event structure (event.button.*) + */ +typedef struct SDL_MouseButtonEvent +{ + Uint32 type; /**< ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Uint8 button; /**< The mouse button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 clicks; /**< 1 for single-click, 2 for double-click, etc. */ + Uint8 padding1; + Sint32 x; /**< X coordinate, relative to window */ + Sint32 y; /**< Y coordinate, relative to window */ +} SDL_MouseButtonEvent; + +/** + * \brief Mouse wheel event structure (event.wheel.*) + */ +typedef struct SDL_MouseWheelEvent +{ + Uint32 type; /**< ::SDL_MOUSEWHEEL */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The window with mouse focus, if any */ + Uint32 which; /**< The mouse instance id, or SDL_TOUCH_MOUSEID */ + Sint32 x; /**< The amount scrolled horizontally, positive to the right and negative to the left */ + Sint32 y; /**< The amount scrolled vertically, positive away from the user and negative toward the user */ + Uint32 direction; /**< Set to one of the SDL_MOUSEWHEEL_* defines. When FLIPPED the values in X and Y will be opposite. Multiply by -1 to change them back */ + float preciseX; /**< The amount scrolled horizontally, positive to the right and negative to the left, with float precision (added in 2.0.18) */ + float preciseY; /**< The amount scrolled vertically, positive away from the user and negative toward the user, with float precision (added in 2.0.18) */ + Sint32 mouseX; /**< X coordinate, relative to window (added in 2.26.0) */ + Sint32 mouseY; /**< Y coordinate, relative to window (added in 2.26.0) */ +} SDL_MouseWheelEvent; + +/** + * \brief Joystick axis motion event structure (event.jaxis.*) + */ +typedef struct SDL_JoyAxisEvent +{ + Uint32 type; /**< ::SDL_JOYAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The joystick axis index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_JoyAxisEvent; + +/** + * \brief Joystick trackball motion event structure (event.jball.*) + */ +typedef struct SDL_JoyBallEvent +{ + Uint32 type; /**< ::SDL_JOYBALLMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 ball; /**< The joystick trackball index */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 xrel; /**< The relative motion in the X direction */ + Sint16 yrel; /**< The relative motion in the Y direction */ +} SDL_JoyBallEvent; + +/** + * \brief Joystick hat position change event structure (event.jhat.*) + */ +typedef struct SDL_JoyHatEvent +{ + Uint32 type; /**< ::SDL_JOYHATMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 hat; /**< The joystick hat index */ + Uint8 value; /**< The hat position value. + * \sa ::SDL_HAT_LEFTUP ::SDL_HAT_UP ::SDL_HAT_RIGHTUP + * \sa ::SDL_HAT_LEFT ::SDL_HAT_CENTERED ::SDL_HAT_RIGHT + * \sa ::SDL_HAT_LEFTDOWN ::SDL_HAT_DOWN ::SDL_HAT_RIGHTDOWN + * + * Note that zero means the POV is centered. + */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyHatEvent; + +/** + * \brief Joystick button event structure (event.jbutton.*) + */ +typedef struct SDL_JoyButtonEvent +{ + Uint32 type; /**< ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The joystick button index */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_JoyButtonEvent; + +/** + * \brief Joystick device event structure (event.jdevice.*) + */ +typedef struct SDL_JoyDeviceEvent +{ + Uint32 type; /**< ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED event */ +} SDL_JoyDeviceEvent; + +/** + * \brief Joysick battery level change event structure (event.jbattery.*) + */ +typedef struct SDL_JoyBatteryEvent +{ + Uint32 type; /**< ::SDL_JOYBATTERYUPDATED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + SDL_JoystickPowerLevel level; /**< The joystick battery level */ +} SDL_JoyBatteryEvent; + +/** + * \brief Game controller axis motion event structure (event.caxis.*) + */ +typedef struct SDL_ControllerAxisEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERAXISMOTION */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 axis; /**< The controller axis (SDL_GameControllerAxis) */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; + Sint16 value; /**< The axis value (range: -32768 to 32767) */ + Uint16 padding4; +} SDL_ControllerAxisEvent; + + +/** + * \brief Game controller button event structure (event.cbutton.*) + */ +typedef struct SDL_ControllerButtonEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Uint8 button; /**< The controller button (SDL_GameControllerButton) */ + Uint8 state; /**< ::SDL_PRESSED or ::SDL_RELEASED */ + Uint8 padding1; + Uint8 padding2; +} SDL_ControllerButtonEvent; + + +/** + * \brief Controller device event structure (event.cdevice.*) + */ +typedef struct SDL_ControllerDeviceEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The joystick device index for the ADDED event, instance id for the REMOVED or REMAPPED event */ +} SDL_ControllerDeviceEvent; + +/** + * \brief Game controller touchpad event structure (event.ctouchpad.*) + */ +typedef struct SDL_ControllerTouchpadEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERTOUCHPADDOWN or ::SDL_CONTROLLERTOUCHPADMOTION or ::SDL_CONTROLLERTOUCHPADUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 touchpad; /**< The index of the touchpad */ + Sint32 finger; /**< The index of the finger on the touchpad */ + float x; /**< Normalized in the range 0...1 with 0 being on the left */ + float y; /**< Normalized in the range 0...1 with 0 being at the top */ + float pressure; /**< Normalized in the range 0...1 */ +} SDL_ControllerTouchpadEvent; + +/** + * \brief Game controller sensor event structure (event.csensor.*) + */ +typedef struct SDL_ControllerSensorEvent +{ + Uint32 type; /**< ::SDL_CONTROLLERSENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_JoystickID which; /**< The joystick instance id */ + Sint32 sensor; /**< The type of the sensor, one of the values of ::SDL_SensorType */ + float data[3]; /**< Up to 3 values from the sensor, as defined in SDL_sensor.h */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_ControllerSensorEvent; + +/** + * \brief Audio device event structure (event.adevice.*) + */ +typedef struct SDL_AudioDeviceEvent +{ + Uint32 type; /**< ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 which; /**< The audio device index for the ADDED event (valid until next SDL_GetNumAudioDevices() call), SDL_AudioDeviceID for the REMOVED event */ + Uint8 iscapture; /**< zero if an output device, non-zero if a capture device. */ + Uint8 padding1; + Uint8 padding2; + Uint8 padding3; +} SDL_AudioDeviceEvent; + + +/** + * \brief Touch finger event structure (event.tfinger.*) + */ +typedef struct SDL_TouchFingerEvent +{ + Uint32 type; /**< ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_FingerID fingerId; + float x; /**< Normalized in the range 0...1 */ + float y; /**< Normalized in the range 0...1 */ + float dx; /**< Normalized in the range -1...1 */ + float dy; /**< Normalized in the range -1...1 */ + float pressure; /**< Normalized in the range 0...1 */ + Uint32 windowID; /**< The window underneath the finger, if any */ +} SDL_TouchFingerEvent; + + +/** + * \brief Multiple Finger Gesture Event (event.mgesture.*) + */ +typedef struct SDL_MultiGestureEvent +{ + Uint32 type; /**< ::SDL_MULTIGESTURE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + float dTheta; + float dDist; + float x; + float y; + Uint16 numFingers; + Uint16 padding; +} SDL_MultiGestureEvent; + + +/** + * \brief Dollar Gesture Event (event.dgesture.*) + */ +typedef struct SDL_DollarGestureEvent +{ + Uint32 type; /**< ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_TouchID touchId; /**< The touch device id */ + SDL_GestureID gestureId; + Uint32 numFingers; + float error; + float x; /**< Normalized center of gesture */ + float y; /**< Normalized center of gesture */ +} SDL_DollarGestureEvent; + + +/** + * \brief An event used to request a file open by the system (event.drop.*) + * This event is enabled by default, you can disable it with SDL_EventState(). + * \note If this event is enabled, you must free the filename in the event. + */ +typedef struct SDL_DropEvent +{ + Uint32 type; /**< ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + char *file; /**< The file name, which should be freed with SDL_free(), is NULL on begin/complete */ + Uint32 windowID; /**< The window that was dropped on, if any */ +} SDL_DropEvent; + + +/** + * \brief Sensor event structure (event.sensor.*) + */ +typedef struct SDL_SensorEvent +{ + Uint32 type; /**< ::SDL_SENSORUPDATE */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Sint32 which; /**< The instance ID of the sensor */ + float data[6]; /**< Up to 6 values from the sensor - additional values can be queried using SDL_SensorGetData() */ + Uint64 timestamp_us; /**< The timestamp of the sensor reading in microseconds, if the hardware provides this information. */ +} SDL_SensorEvent; + +/** + * \brief The "quit requested" event + */ +typedef struct SDL_QuitEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_QuitEvent; + +/** + * \brief OS Specific event + */ +typedef struct SDL_OSEvent +{ + Uint32 type; /**< ::SDL_QUIT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ +} SDL_OSEvent; + +/** + * \brief A user-defined event type (event.user.*) + */ +typedef struct SDL_UserEvent +{ + Uint32 type; /**< ::SDL_USEREVENT through ::SDL_LASTEVENT-1 */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + Uint32 windowID; /**< The associated window if any */ + Sint32 code; /**< User defined event code */ + void *data1; /**< User defined data pointer */ + void *data2; /**< User defined data pointer */ +} SDL_UserEvent; + + +struct SDL_SysWMmsg; +typedef struct SDL_SysWMmsg SDL_SysWMmsg; + +/** + * \brief A video driver dependent system event (event.syswm.*) + * This event is disabled by default, you can enable it with SDL_EventState() + * + * \note If you want to use this event, you should include SDL_syswm.h. + */ +typedef struct SDL_SysWMEvent +{ + Uint32 type; /**< ::SDL_SYSWMEVENT */ + Uint32 timestamp; /**< In milliseconds, populated using SDL_GetTicks() */ + SDL_SysWMmsg *msg; /**< driver dependent data, defined in SDL_syswm.h */ +} SDL_SysWMEvent; + +/** + * \brief General event structure + */ +typedef union SDL_Event +{ + Uint32 type; /**< Event type, shared with all events */ + SDL_CommonEvent common; /**< Common event data */ + SDL_DisplayEvent display; /**< Display event data */ + SDL_WindowEvent window; /**< Window event data */ + SDL_KeyboardEvent key; /**< Keyboard event data */ + SDL_TextEditingEvent edit; /**< Text editing event data */ + SDL_TextEditingExtEvent editExt; /**< Extended text editing event data */ + SDL_TextInputEvent text; /**< Text input event data */ + SDL_MouseMotionEvent motion; /**< Mouse motion event data */ + SDL_MouseButtonEvent button; /**< Mouse button event data */ + SDL_MouseWheelEvent wheel; /**< Mouse wheel event data */ + SDL_JoyAxisEvent jaxis; /**< Joystick axis event data */ + SDL_JoyBallEvent jball; /**< Joystick ball event data */ + SDL_JoyHatEvent jhat; /**< Joystick hat event data */ + SDL_JoyButtonEvent jbutton; /**< Joystick button event data */ + SDL_JoyDeviceEvent jdevice; /**< Joystick device change event data */ + SDL_JoyBatteryEvent jbattery; /**< Joystick battery event data */ + SDL_ControllerAxisEvent caxis; /**< Game Controller axis event data */ + SDL_ControllerButtonEvent cbutton; /**< Game Controller button event data */ + SDL_ControllerDeviceEvent cdevice; /**< Game Controller device event data */ + SDL_ControllerTouchpadEvent ctouchpad; /**< Game Controller touchpad event data */ + SDL_ControllerSensorEvent csensor; /**< Game Controller sensor event data */ + SDL_AudioDeviceEvent adevice; /**< Audio device event data */ + SDL_SensorEvent sensor; /**< Sensor event data */ + SDL_QuitEvent quit; /**< Quit request event data */ + SDL_UserEvent user; /**< Custom event data */ + SDL_SysWMEvent syswm; /**< System dependent window event data */ + SDL_TouchFingerEvent tfinger; /**< Touch finger event data */ + SDL_MultiGestureEvent mgesture; /**< Gesture event data */ + SDL_DollarGestureEvent dgesture; /**< Gesture event data */ + SDL_DropEvent drop; /**< Drag and drop event data */ + + /* This is necessary for ABI compatibility between Visual C++ and GCC. + Visual C++ will respect the push pack pragma and use 52 bytes (size of + SDL_TextEditingEvent, the largest structure for 32-bit and 64-bit + architectures) for this union, and GCC will use the alignment of the + largest datatype within the union, which is 8 bytes on 64-bit + architectures. + + So... we'll add padding to force the size to be 56 bytes for both. + + On architectures where pointers are 16 bytes, this needs rounding up to + the next multiple of 16, 64, and on architectures where pointers are + even larger the size of SDL_UserEvent will dominate as being 3 pointers. + */ + Uint8 padding[sizeof(void *) <= 8 ? 56 : sizeof(void *) == 16 ? 64 : 3 * sizeof(void *)]; +} SDL_Event; + +/* Make sure we haven't broken binary compatibility */ +SDL_COMPILE_TIME_ASSERT(SDL_Event, sizeof(SDL_Event) == sizeof(((SDL_Event *)NULL)->padding)); + + +/* Function prototypes */ + +/** + * Pump the event loop, gathering events from the input devices. + * + * This function updates the event queue and internal input device state. + * + * **WARNING**: This should only be run in the thread that initialized the + * video subsystem, and for extra safety, you should consider only doing those + * things on the main thread in any case. + * + * SDL_PumpEvents() gathers all the pending input information from devices and + * places it in the event queue. Without calls to SDL_PumpEvents() no events + * would ever be placed on the queue. Often the need for calls to + * SDL_PumpEvents() is hidden from the user since SDL_PollEvent() and + * SDL_WaitEvent() implicitly call SDL_PumpEvents(). However, if you are not + * polling or waiting for events (e.g. you are filtering them), then you must + * call SDL_PumpEvents() to force an event queue update. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_WaitEvent + */ +extern DECLSPEC void SDLCALL SDL_PumpEvents(void); + +/* @{ */ +typedef enum +{ + SDL_ADDEVENT, + SDL_PEEKEVENT, + SDL_GETEVENT +} SDL_eventaction; + +/** + * Check the event queue for messages and optionally return them. + * + * `action` may be any of the following: + * + * - `SDL_ADDEVENT`: up to `numevents` events will be added to the back of the + * event queue. + * - `SDL_PEEKEVENT`: `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will _not_ be removed from the queue. + * - `SDL_GETEVENT`: up to `numevents` events at the front of the event queue, + * within the specified minimum and maximum type, will be returned to the + * caller and will be removed from the queue. + * + * You may have to call SDL_PumpEvents() before calling this function. + * Otherwise, the events may not be ready to be filtered when you call + * SDL_PeepEvents(). + * + * This function is thread-safe. + * + * \param events destination buffer for the retrieved events + * \param numevents if action is SDL_ADDEVENT, the number of events to add + * back to the event queue; if action is SDL_PEEKEVENT or + * SDL_GETEVENT, the maximum number of events to retrieve + * \param action action to take; see [[#action|Remarks]] for details + * \param minType minimum value of the event type to be considered; + * SDL_FIRSTEVENT is a safe choice + * \param maxType maximum value of the event type to be considered; + * SDL_LASTEVENT is a safe choice + * \returns the number of events actually stored or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC int SDLCALL SDL_PeepEvents(SDL_Event * events, int numevents, + SDL_eventaction action, + Uint32 minType, Uint32 maxType); +/* @} */ + +/** + * Check for the existence of a certain event type in the event queue. + * + * If you need to check for a range of event types, use SDL_HasEvents() + * instead. + * + * \param type the type of event to be queried; see SDL_EventType for details + * \returns SDL_TRUE if events matching `type` are present, or SDL_FALSE if + * events matching `type` are not present. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvent(Uint32 type); + + +/** + * Check for the existence of certain event types in the event queue. + * + * If you need to check for a single event type, use SDL_HasEvent() instead. + * + * \param minType the low end of event type to be queried, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be queried, inclusive; see + * SDL_EventType for details + * \returns SDL_TRUE if events with type >= `minType` and <= `maxType` are + * present, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasEvents + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasEvents(Uint32 minType, Uint32 maxType); + +/** + * Clear events of a specific type from the event queue. + * + * This will unconditionally remove any events from the queue that match + * `type`. If you need to remove a range of event types, use SDL_FlushEvents() + * instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param type the type of event to be cleared; see SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvents + */ +extern DECLSPEC void SDLCALL SDL_FlushEvent(Uint32 type); + +/** + * Clear events of a range of types from the event queue. + * + * This will unconditionally remove any events from the queue that are in the + * range of `minType` to `maxType`, inclusive. If you need to remove a single + * event type, use SDL_FlushEvent() instead. + * + * It's also normal to just ignore events you don't care about in your event + * loop without calling this function. + * + * This function only affects currently queued events. If you want to make + * sure that all pending OS events are flushed, you can call SDL_PumpEvents() + * on the main thread immediately before the flush call. + * + * \param minType the low end of event type to be cleared, inclusive; see + * SDL_EventType for details + * \param maxType the high end of event type to be cleared, inclusive; see + * SDL_EventType for details + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FlushEvent + */ +extern DECLSPEC void SDLCALL SDL_FlushEvents(Uint32 minType, Uint32 maxType); + +/** + * Poll for currently pending events. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. The 1 returned refers to + * this event, immediately stored in the SDL Event structure -- not an event + * to follow. + * + * If `event` is NULL, it simply returns 1 if there is an event in the queue, + * but will not remove it from the queue. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that set the video mode. + * + * SDL_PollEvent() is the favored way of receiving system events since it can + * be done from the main loop and does not suspend the main loop while waiting + * on an event to be posted. + * + * The common practice is to fully process the event queue once every frame, + * usually as a first step before updating the game's state: + * + * ```c + * while (game_is_still_running) { + * SDL_Event event; + * while (SDL_PollEvent(&event)) { // poll until all events are handled! + * // decide what to do with this event. + * } + * + * // update game state, draw the current frame + * } + * ``` + * + * \param event the SDL_Event structure to be filled with the next event from + * the queue, or NULL + * \returns 1 if there is a pending event or 0 if there are none available. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + * \sa SDL_SetEventFilter + * \sa SDL_WaitEvent + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_PollEvent(SDL_Event * event); + +/** + * Wait indefinitely for the next available event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEventTimeout + */ +extern DECLSPEC int SDLCALL SDL_WaitEvent(SDL_Event * event); + +/** + * Wait until the specified timeout (in milliseconds) for the next available + * event. + * + * If `event` is not NULL, the next event is removed from the queue and stored + * in the SDL_Event structure pointed to by `event`. + * + * As this function may implicitly call SDL_PumpEvents(), you can only call + * this function in the thread that initialized the video subsystem. + * + * \param event the SDL_Event structure to be filled in with the next event + * from the queue, or NULL + * \param timeout the maximum number of milliseconds to wait for the next + * available event + * \returns 1 on success or 0 if there was an error while waiting for events; + * call SDL_GetError() for more information. This also returns 0 if + * the timeout elapsed without an event arriving. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PollEvent + * \sa SDL_PumpEvents + * \sa SDL_WaitEvent + */ +extern DECLSPEC int SDLCALL SDL_WaitEventTimeout(SDL_Event * event, + int timeout); + +/** + * Add an event to the event queue. + * + * The event queue can actually be used as a two way communication channel. + * Not only can events be read from the queue, but the user can also push + * their own events onto it. `event` is a pointer to the event structure you + * wish to push onto the queue. The event is copied into the queue, and the + * caller may dispose of the memory pointed to after SDL_PushEvent() returns. + * + * Note: Pushing device input events onto the queue doesn't modify the state + * of the device within SDL. + * + * This function is thread-safe, and can be called from other threads safely. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter but events added with SDL_PeepEvents() do not. + * + * For pushing application-specific events, please use SDL_RegisterEvents() to + * get an event type that does not conflict with other code that also wants + * its own custom event types. + * + * \param event the SDL_Event to be added to the queue + * \returns 1 on success, 0 if the event was filtered, or a negative error + * code on failure; call SDL_GetError() for more information. A + * common reason for error is the event queue being full. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PeepEvents + * \sa SDL_PollEvent + * \sa SDL_RegisterEvents + */ +extern DECLSPEC int SDLCALL SDL_PushEvent(SDL_Event * event); + +/** + * A function pointer used for callbacks that watch the event queue. + * + * \param userdata what was passed as `userdata` to SDL_SetEventFilter() + * or SDL_AddEventWatch, etc + * \param event the event that triggered the callback + * \returns 1 to permit event to be added to the queue, and 0 to disallow + * it. When used with SDL_AddEventWatch, the return value is ignored. + * + * \sa SDL_SetEventFilter + * \sa SDL_AddEventWatch + */ +typedef int (SDLCALL * SDL_EventFilter) (void *userdata, SDL_Event * event); + +/** + * Set up a filter to process all events before they change internal state and + * are posted to the internal event queue. + * + * If the filter function returns 1 when called, then the event will be added + * to the internal queue. If it returns 0, then the event will be dropped from + * the queue, but the internal state will still be updated. This allows + * selective filtering of dynamically arriving events. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * On platforms that support it, if the quit event is generated by an + * interrupt signal (e.g. pressing Ctrl-C), it will be delivered to the + * application at the next event poll. + * + * There is one caveat when dealing with the ::SDL_QuitEvent event type. The + * event filter is only called when the window manager desires to close the + * application window. If the event filter returns 1, then the window will be + * closed, otherwise the window will remain open if possible. + * + * Note: Disabled events never make it to the event filter function; see + * SDL_EventState(). + * + * Note: If you just want to inspect events without filtering, you should use + * SDL_AddEventWatch() instead. + * + * Note: Events pushed onto the queue with SDL_PushEvent() get passed through + * the event filter, but events pushed onto the queue with SDL_PeepEvents() do + * not. + * + * \param filter An SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + * \sa SDL_EventState + * \sa SDL_GetEventFilter + * \sa SDL_PeepEvents + * \sa SDL_PushEvent + */ +extern DECLSPEC void SDLCALL SDL_SetEventFilter(SDL_EventFilter filter, + void *userdata); + +/** + * Query the current event filter. + * + * This function can be used to "chain" filters, by saving the existing filter + * before replacing it with a function that will call that saved filter. + * + * \param filter the current callback function will be stored here + * \param userdata the pointer that is passed to the current event filter will + * be stored here + * \returns SDL_TRUE on success or SDL_FALSE if there is no event filter set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetEventFilter + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetEventFilter(SDL_EventFilter * filter, + void **userdata); + +/** + * Add a callback to be triggered when an event is added to the event queue. + * + * `filter` will be called when an event happens, and its return value is + * ignored. + * + * **WARNING**: Be very careful of what you do in the event filter function, + * as it may run in a different thread! + * + * If the quit event is generated by a signal (e.g. SIGINT), it will bypass + * the internal queue and be delivered to the watch callback immediately, and + * arrive at the next event poll. + * + * Note: the callback is called for events posted by the user through + * SDL_PushEvent(), but not for disabled events, nor for events by a filter + * callback set with SDL_SetEventFilter(), nor for events posted by the user + * through SDL_PeepEvents(). + * + * \param filter an SDL_EventFilter function to call when an event happens. + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelEventWatch + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_AddEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Remove an event watch callback added with SDL_AddEventWatch(). + * + * This function takes the same input as SDL_AddEventWatch() to identify and + * delete the corresponding callback. + * + * \param filter the function originally passed to SDL_AddEventWatch() + * \param userdata the pointer originally passed to SDL_AddEventWatch() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddEventWatch + */ +extern DECLSPEC void SDLCALL SDL_DelEventWatch(SDL_EventFilter filter, + void *userdata); + +/** + * Run a specific filter function on the current event queue, removing any + * events for which the filter returns 0. + * + * See SDL_SetEventFilter() for more information. Unlike SDL_SetEventFilter(), + * this function does not change the filter permanently, it only uses the + * supplied filter until this function returns. + * + * \param filter the SDL_EventFilter function to call when an event happens + * \param userdata a pointer that is passed to `filter` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventFilter + * \sa SDL_SetEventFilter + */ +extern DECLSPEC void SDLCALL SDL_FilterEvents(SDL_EventFilter filter, + void *userdata); + +/* @{ */ +#define SDL_QUERY -1 +#define SDL_IGNORE 0 +#define SDL_DISABLE 0 +#define SDL_ENABLE 1 + +/** + * Set the state of processing events by type. + * + * `state` may be any of the following: + * + * - `SDL_QUERY`: returns the current processing state of the specified event + * - `SDL_IGNORE` (aka `SDL_DISABLE`): the event will automatically be dropped + * from the event queue and will not be filtered + * - `SDL_ENABLE`: the event will be processed normally + * + * \param type the type of event; see SDL_EventType for details + * \param state how to process the event + * \returns `SDL_DISABLE` or `SDL_ENABLE`, representing the processing state + * of the event before this function makes any changes to it. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetEventState + */ +extern DECLSPEC Uint8 SDLCALL SDL_EventState(Uint32 type, int state); +/* @} */ +#define SDL_GetEventState(type) SDL_EventState(type, SDL_QUERY) + +/** + * Allocate a set of user-defined events, and return the beginning event + * number for that set of events. + * + * Calling this function with `numevents` <= 0 is an error and will return + * (Uint32)-1. + * + * Note, (Uint32)-1 means the maximum unsigned 32-bit integer value (or + * 0xFFFFFFFF), but is clearer to write. + * + * \param numevents the number of events to be allocated + * \returns the beginning event number, or (Uint32)-1 if there are not enough + * user-defined events left. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PushEvent + */ +extern DECLSPEC Uint32 SDLCALL SDL_RegisterEvents(int numevents); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_events_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h new file mode 100644 index 0000000..3c3b533 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_filesystem.h @@ -0,0 +1,149 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_filesystem.h + * + * \brief Include file for filesystem SDL API functions + */ + +#ifndef SDL_filesystem_h_ +#define SDL_filesystem_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the directory where the application was run from. + * + * This is not necessarily a fast call, so you should call this once near + * startup and save the string if you need it. + * + * **Mac OS X and iOS Specific Functionality**: If the application is in a + * ".app" bundle, this function returns the Resource directory (e.g. + * MyApp.app/Contents/Resources/). This behaviour can be overridden by adding + * a property to the Info.plist file. Adding a string key with the name + * SDL_FILESYSTEM_BASE_DIR_TYPE with a supported value will change the + * behaviour. + * + * Supported values for the SDL_FILESYSTEM_BASE_DIR_TYPE property (Given an + * application in /Applications/SDLApp/MyApp.app): + * + * - `resource`: bundle resource directory (the default). For example: + * `/Applications/SDLApp/MyApp.app/Contents/Resources` + * - `bundle`: the Bundle directory. For example: + * `/Applications/SDLApp/MyApp.app/` + * - `parent`: the containing directory of the bundle. For example: + * `/Applications/SDLApp/` + * + * **Nintendo 3DS Specific Functionality**: This function returns "romfs" + * directory of the application as it is uncommon to store resources outside + * the executable. As such it is not a writable directory. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \returns an absolute path in UTF-8 encoding to the application data + * directory. NULL will be returned on error or when the platform + * doesn't implement this functionality, call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetPrefPath + */ +extern DECLSPEC char *SDLCALL SDL_GetBasePath(void); + +/** + * Get the user-and-app-specific path where files can be written. + * + * Get the "pref dir". This is meant to be where users can write personal + * files (preferences and save games, etc) that are specific to your + * application. This directory is unique per user, per application. + * + * This function will decide the appropriate location in the native + * filesystem, create the directory if necessary, and return a string of the + * absolute path to the directory in UTF-8 encoding. + * + * On Windows, the string might look like: + * + * `C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\` + * + * On Linux, the string might look like: + * + * `/home/bob/.local/share/My Program Name/` + * + * On Mac OS X, the string might look like: + * + * `/Users/bob/Library/Application Support/My Program Name/` + * + * You should assume the path returned by this function is the only safe place + * to write files (and that SDL_GetBasePath(), while it might be writable, or + * even the parent of the returned path, isn't where you should be writing + * things). + * + * Both the org and app strings may become part of a directory name, so please + * follow these rules: + * + * - Try to use the same org string (_including case-sensitivity_) for all + * your applications that use this function. + * - Always use a unique app string for each one, and make sure it never + * changes for an app once you've decided on it. + * - Unicode characters are legal, as long as it's UTF-8 encoded, but... + * - ...only use letters, numbers, and spaces. Avoid punctuation like "Game + * Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + * + * The returned path is guaranteed to end with a path separator ('\' on + * Windows, '/' on most other platforms). + * + * The pointer returned is owned by the caller. Please call SDL_free() on the + * pointer when done with it. + * + * \param org the name of your organization + * \param app the name of your application + * \returns a UTF-8 string of the user directory in platform-dependent + * notation. NULL if there's a problem (creating directory failed, + * etc.). + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_GetBasePath + */ +extern DECLSPEC char *SDLCALL SDL_GetPrefPath(const char *org, const char *app); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_filesystem_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h new file mode 100644 index 0000000..266e706 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gamecontroller.h @@ -0,0 +1,1074 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gamecontroller.h + * + * Include file for SDL game controller event handling + */ + +#ifndef SDL_gamecontroller_h_ +#define SDL_gamecontroller_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_gamecontroller.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_GAMECONTROLLER flag. This causes SDL to scan the system + * for game controllers, and load appropriate drivers. + * + * If you would like to receive controller updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The gamecontroller structure used to identify an SDL game controller + */ +struct _SDL_GameController; +typedef struct _SDL_GameController SDL_GameController; + +typedef enum +{ + SDL_CONTROLLER_TYPE_UNKNOWN = 0, + SDL_CONTROLLER_TYPE_XBOX360, + SDL_CONTROLLER_TYPE_XBOXONE, + SDL_CONTROLLER_TYPE_PS3, + SDL_CONTROLLER_TYPE_PS4, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_PRO, + SDL_CONTROLLER_TYPE_VIRTUAL, + SDL_CONTROLLER_TYPE_PS5, + SDL_CONTROLLER_TYPE_AMAZON_LUNA, + SDL_CONTROLLER_TYPE_GOOGLE_STADIA, + SDL_CONTROLLER_TYPE_NVIDIA_SHIELD, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_LEFT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_RIGHT, + SDL_CONTROLLER_TYPE_NINTENDO_SWITCH_JOYCON_PAIR +} SDL_GameControllerType; + +typedef enum +{ + SDL_CONTROLLER_BINDTYPE_NONE = 0, + SDL_CONTROLLER_BINDTYPE_BUTTON, + SDL_CONTROLLER_BINDTYPE_AXIS, + SDL_CONTROLLER_BINDTYPE_HAT +} SDL_GameControllerBindType; + +/** + * Get the SDL joystick layer binding for this controller button/axis mapping + */ +typedef struct SDL_GameControllerButtonBind +{ + SDL_GameControllerBindType bindType; + union + { + int button; + int axis; + struct { + int hat; + int hat_mask; + } hat; + } value; + +} SDL_GameControllerButtonBind; + + +/** + * To count the number of game controllers in the system for the following: + * + * ```c + * int nJoysticks = SDL_NumJoysticks(); + * int nGameControllers = 0; + * for (int i = 0; i < nJoysticks; i++) { + * if (SDL_IsGameController(i)) { + * nGameControllers++; + * } + * } + * ``` + * + * Using the SDL_HINT_GAMECONTROLLERCONFIG hint or the SDL_GameControllerAddMapping() you can add support for controllers SDL is unaware of or cause an existing controller to have a different binding. The format is: + * guid,name,mappings + * + * Where GUID is the string value from SDL_JoystickGetGUIDString(), name is the human readable string for the device and mappings are controller mappings to joystick ones. + * Under Windows there is a reserved GUID of "xinput" that covers any XInput devices. + * The mapping format for joystick is: + * bX - a joystick button, index X + * hX.Y - hat X with value Y + * aX - axis X of the joystick + * Buttons can be used as a controller axis and vice versa. + * + * This string shows an example of a valid mapping for a controller + * + * ```c + * "03000000341a00003608000000000000,PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7", + * ``` + */ + +/** + * Load a set of Game Controller mappings from a seekable SDL data stream. + * + * You can call this function several times, if needed, to load different + * database files. + * + * If a new mapping is loaded for an already known controller GUID, the later + * version will overwrite the one currently loaded. + * + * Mappings not belonging to the current platform or with no platform field + * specified will be ignored (i.e. mappings for Linux will be ignored in + * Windows, etc). + * + * This function will load the text database entirely in memory before + * processing it, so take this into consideration if you are in a memory + * constrained environment. + * + * \param rw the data stream for the mappings to be added + * \param freerw non-zero to close the stream after being read + * \returns the number of mappings added or -1 on error; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerAddMappingsFromFile + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMappingsFromRW(SDL_RWops * rw, int freerw); + +/** + * Load a set of mappings from a file, filtered by the current SDL_GetPlatform() + * + * Convenience macro. + */ +#define SDL_GameControllerAddMappingsFromFile(file) SDL_GameControllerAddMappingsFromRW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Add support for controllers that SDL is unaware of or to cause an existing + * controller to have a different binding. + * + * The mapping string has the format "GUID,name,mapping", where GUID is the + * string value from SDL_JoystickGetGUIDString(), name is the human readable + * string for the device and mappings are controller mappings to joystick + * ones. Under Windows there is a reserved GUID of "xinput" that covers all + * XInput devices. The mapping format for joystick is: {| |bX |a joystick + * button, index X |- |hX.Y |hat X with value Y |- |aX |axis X of the joystick + * |} Buttons can be used as a controller axes and vice versa. + * + * This string shows an example of a valid mapping for a controller: + * + * ```c + * "341a3608000000000000504944564944,Afterglow PS3 Controller,a:b1,b:b2,y:b3,x:b0,start:b9,guide:b12,back:b8,dpup:h0.1,dpleft:h0.8,dpdown:h0.4,dpright:h0.2,leftshoulder:b4,rightshoulder:b5,leftstick:b10,rightstick:b11,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7" + * ``` + * + * \param mappingString the mapping string + * \returns 1 if a new mapping is added, 0 if an existing mapping is updated, + * -1 on error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC int SDLCALL SDL_GameControllerAddMapping(const char* mappingString); + +/** + * Get the number of mappings installed. + * + * \returns the number of mappings. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerNumMappings(void); + +/** + * Get the mapping at a particular index. + * + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * the index is out of range. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForIndex(int mapping_index); + +/** + * Get the game controller mapping string for a given GUID. + * + * The returned string must be freed with SDL_free(). + * + * \param guid a structure containing the GUID for which a mapping is desired + * \returns a mapping string or NULL on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMappingForGUID(SDL_JoystickGUID guid); + +/** + * Get the current mapping of a Game Controller. + * + * The returned string must be freed with SDL_free(). + * + * Details about mappings are discussed with SDL_GameControllerAddMapping(). + * + * \param gamecontroller the game controller you want to get the current + * mapping for + * \returns a string that has the controller's mapping or NULL if no mapping + * is available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerAddMapping + * \sa SDL_GameControllerMappingForGUID + */ +extern DECLSPEC char * SDLCALL SDL_GameControllerMapping(SDL_GameController *gamecontroller); + +/** + * Check if the given joystick is supported by the game controller interface. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns SDL_TRUE if the given joystick is supported by the game controller + * interface, SDL_FALSE if it isn't or it's an invalid index. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsGameController(int joystick_index); + +/** + * Get the implementation dependent name for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent name for the game controller, or NULL + * if there is no name or the index is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerName + * \sa SDL_GameControllerOpen + * \sa SDL_IsGameController + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerNameForIndex(int joystick_index); + +/** + * Get the implementation dependent path for the game controller. + * + * This function can be called before any controllers are opened. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the implementation-dependent path for the game controller, or NULL + * if there is no path or the index is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPath + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPathForIndex(int joystick_index); + +/** + * Get the type of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerTypeForIndex(int joystick_index); + +/** + * Get the mapping of a game controller. + * + * This can be called before any controllers are opened. + * + * \param joystick_index the device_index of a device, from zero to + * SDL_NumJoysticks()-1 + * \returns the mapping string. Must be freed with SDL_free(). Returns NULL if + * no mapping is available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC char *SDLCALL SDL_GameControllerMappingForDeviceIndex(int joystick_index); + +/** + * Open a game controller for use. + * + * `joystick_index` is the same as the `device_index` passed to + * SDL_JoystickOpen(). + * + * The index passed as an argument refers to the N'th game controller on the + * system. This index is not the value which will identify this controller in + * future controller events. The joystick's instance id (SDL_JoystickID) will + * be used there instead. + * + * \param joystick_index the device_index of a device, up to + * SDL_NumJoysticks() + * \returns a gamecontroller identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerNameForIndex + * \sa SDL_IsGameController + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerOpen(int joystick_index); + +/** + * Get the SDL_GameController associated with an instance id. + * + * \param joyid the instance id to get the SDL_GameController for + * \returns an SDL_GameController on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromInstanceID(SDL_JoystickID joyid); + +/** + * Get the SDL_GameController associated with a player index. + * + * Please note that the player index is _not_ the device index, nor is it the + * instance id! + * + * \param player_index the player index, which is not the device index or the + * instance id! + * \returns the SDL_GameController associated with a player index. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GameControllerGetPlayerIndex + * \sa SDL_GameControllerSetPlayerIndex + */ +extern DECLSPEC SDL_GameController *SDLCALL SDL_GameControllerFromPlayerIndex(int player_index); + +/** + * Get the implementation-dependent name for an opened game controller. + * + * This is the same name as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent name for the game controller, or NULL + * if there is no name or the identifier passed is invalid. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerNameForIndex + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerName(SDL_GameController *gamecontroller); + +/** + * Get the implementation-dependent path for an opened game controller. + * + * This is the same path as returned by SDL_GameControllerNameForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns the implementation dependent path for the game controller, or NULL + * if there is no path or the identifier passed is invalid. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GameControllerPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_GameControllerPath(SDL_GameController *gamecontroller); + +/** + * Get the type of this currently opened controller + * + * This is the same name as returned by SDL_GameControllerTypeForIndex(), but + * it takes a controller identifier instead of the (unstable) device index. + * + * \param gamecontroller the game controller object to query. + * \returns the controller type. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_GameControllerType SDLCALL SDL_GameControllerGetType(SDL_GameController *gamecontroller); + +/** + * Get the player index of an opened game controller. + * + * For XInput controllers this returns the XInput user index. + * + * \param gamecontroller the game controller object to query. + * \returns the player index for controller, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetPlayerIndex(SDL_GameController *gamecontroller); + +/** + * Set the player index of an opened game controller. + * + * \param gamecontroller the game controller object to adjust. + * \param player_index Player index to assign to this controller, or -1 to + * clear the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerSetPlayerIndex(SDL_GameController *gamecontroller, int player_index); + +/** + * Get the USB vendor ID of an opened controller, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB vendor ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetVendor(SDL_GameController *gamecontroller); + +/** + * Get the USB product ID of an opened controller, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product ID, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProduct(SDL_GameController *gamecontroller); + +/** + * Get the product version of an opened controller, if available. + * + * If the product version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the USB product version, or zero if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetProductVersion(SDL_GameController *gamecontroller); + +/** + * Get the firmware version of an opened controller, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param gamecontroller the game controller object to query. + * \return the controller firmware version, or zero if unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_GameControllerGetFirmwareVersion(SDL_GameController *gamecontroller); + +/** + * Get the serial number of an opened controller, if available. + * + * Returns the serial number of the controller, or NULL if it is not + * available. + * + * \param gamecontroller the game controller object to query. + * \return the serial number, or NULL if unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_GameControllerGetSerial(SDL_GameController *gamecontroller); + +/** + * Check if a controller has been opened and is currently connected. + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * \returns SDL_TRUE if the controller has been opened and is currently + * connected, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerClose + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerGetAttached(SDL_GameController *gamecontroller); + +/** + * Get the Joystick ID from a Game Controller. + * + * This function will give you a SDL_Joystick object, which allows you to use + * the SDL_Joystick functions with a SDL_GameController object. This would be + * useful for getting a joystick's position at any given time, even if it + * hasn't moved (moving it would produce an event, which would have the axis' + * value). + * + * The pointer returned is owned by the SDL_GameController. You should not + * call SDL_JoystickClose() on it, for example, since doing so will likely + * cause SDL to crash. + * + * \param gamecontroller the game controller object that you want to get a + * joystick from + * \returns a SDL_Joystick object; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_GameControllerGetJoystick(SDL_GameController *gamecontroller); + +/** + * Query or change current state of Game Controller events. + * + * If controller events are disabled, you must call SDL_GameControllerUpdate() + * yourself and check the state of the controller when you want controller + * information. + * + * Any number can be passed to SDL_GameControllerEventState(), but only -1, 0, + * and 1 will have any effect. Other numbers will just be returned. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns the same value passed to the function, with exception to -1 + * (SDL_QUERY), which will return the current state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC int SDLCALL SDL_GameControllerEventState(int state); + +/** + * Manually pump game controller updates if not using the loop. + * + * This function is called automatically by the event loop if events are + * enabled. Under such circumstances, it will not be necessary to call this + * function. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GameControllerUpdate(void); + + +/** + * The list of axes available from a controller + * + * Thumbstick axis values range from SDL_JOYSTICK_AXIS_MIN to SDL_JOYSTICK_AXIS_MAX, + * and are centered within ~8000 of zero, though advanced UI will allow users to set + * or autodetect the dead zone, which varies between controllers. + * + * Trigger axis values range from 0 to SDL_JOYSTICK_AXIS_MAX. + */ +typedef enum +{ + SDL_CONTROLLER_AXIS_INVALID = -1, + SDL_CONTROLLER_AXIS_LEFTX, + SDL_CONTROLLER_AXIS_LEFTY, + SDL_CONTROLLER_AXIS_RIGHTX, + SDL_CONTROLLER_AXIS_RIGHTY, + SDL_CONTROLLER_AXIS_TRIGGERLEFT, + SDL_CONTROLLER_AXIS_TRIGGERRIGHT, + SDL_CONTROLLER_AXIS_MAX +} SDL_GameControllerAxis; + +/** + * Convert a string into SDL_GameControllerAxis enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * Note specially that "righttrigger" and "lefttrigger" map to + * `SDL_CONTROLLER_AXIS_TRIGGERRIGHT` and `SDL_CONTROLLER_AXIS_TRIGGERLEFT`, + * respectively. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerAxis enum corresponding to the input string, + * or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetStringForAxis + */ +extern DECLSPEC SDL_GameControllerAxis SDLCALL SDL_GameControllerGetAxisFromString(const char *str); + +/** + * Convert from an SDL_GameControllerAxis enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param axis an enum value for a given SDL_GameControllerAxis + * \returns a string for the given axis, or NULL if an invalid axis is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxisFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForAxis(SDL_GameControllerAxis axis); + +/** + * Get the SDL joystick layer binding for a controller axis mapping. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (one of the SDL_GameControllerAxis values) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller axis doesn't exist on the device), its + * `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForButton + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForAxis(SDL_GameController *gamecontroller, + SDL_GameControllerAxis axis); + +/** + * Query whether a game controller has a given axis. + * + * This merely reports whether the controller's mapping defined this axis, as + * that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param axis an axis enum value (an SDL_GameControllerAxis value) + * \returns SDL_TRUE if the controller has this axis, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL +SDL_GameControllerHasAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * Get the current state of an axis control on a game controller. + * + * The axis indices start at index 0. + * + * The state is a value ranging from -32768 to 32767. Triggers, however, range + * from 0 to 32767 (they never return a negative value). + * + * \param gamecontroller a game controller + * \param axis an axis index (one of the SDL_GameControllerAxis values) + * \returns axis state (including 0) on success or 0 (also) on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButton + */ +extern DECLSPEC Sint16 SDLCALL +SDL_GameControllerGetAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + +/** + * The list of buttons available from a controller + */ +typedef enum +{ + SDL_CONTROLLER_BUTTON_INVALID = -1, + SDL_CONTROLLER_BUTTON_A, + SDL_CONTROLLER_BUTTON_B, + SDL_CONTROLLER_BUTTON_X, + SDL_CONTROLLER_BUTTON_Y, + SDL_CONTROLLER_BUTTON_BACK, + SDL_CONTROLLER_BUTTON_GUIDE, + SDL_CONTROLLER_BUTTON_START, + SDL_CONTROLLER_BUTTON_LEFTSTICK, + SDL_CONTROLLER_BUTTON_RIGHTSTICK, + SDL_CONTROLLER_BUTTON_LEFTSHOULDER, + SDL_CONTROLLER_BUTTON_RIGHTSHOULDER, + SDL_CONTROLLER_BUTTON_DPAD_UP, + SDL_CONTROLLER_BUTTON_DPAD_DOWN, + SDL_CONTROLLER_BUTTON_DPAD_LEFT, + SDL_CONTROLLER_BUTTON_DPAD_RIGHT, + SDL_CONTROLLER_BUTTON_MISC1, /* Xbox Series X share button, PS5 microphone button, Nintendo Switch Pro capture button, Amazon Luna microphone button */ + SDL_CONTROLLER_BUTTON_PADDLE1, /* Xbox Elite paddle P1 (upper left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE2, /* Xbox Elite paddle P3 (upper right, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE3, /* Xbox Elite paddle P2 (lower left, facing the back) */ + SDL_CONTROLLER_BUTTON_PADDLE4, /* Xbox Elite paddle P4 (lower right, facing the back) */ + SDL_CONTROLLER_BUTTON_TOUCHPAD, /* PS4/PS5 touchpad button */ + SDL_CONTROLLER_BUTTON_MAX +} SDL_GameControllerButton; + +/** + * Convert a string into an SDL_GameControllerButton enum. + * + * This function is called internally to translate SDL_GameController mapping + * strings for the underlying joystick device into the consistent + * SDL_GameController mapping. You do not normally need to call this function + * unless you are parsing SDL_GameController mappings in your own code. + * + * \param str string representing a SDL_GameController axis + * \returns the SDL_GameControllerButton enum corresponding to the input + * string, or `SDL_CONTROLLER_AXIS_INVALID` if no match was found. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_GameControllerButton SDLCALL SDL_GameControllerGetButtonFromString(const char *str); + +/** + * Convert from an SDL_GameControllerButton enum to a string. + * + * The caller should not SDL_free() the returned string. + * + * \param button an enum value for a given SDL_GameControllerButton + * \returns a string for the given button, or NULL if an invalid button is + * specified. The string returned is of the format used by + * SDL_GameController mapping strings. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetButtonFromString + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetStringForButton(SDL_GameControllerButton button); + +/** + * Get the SDL joystick layer binding for a controller button mapping. + * + * \param gamecontroller a game controller + * \param button an button enum value (an SDL_GameControllerButton value) + * \returns a SDL_GameControllerButtonBind describing the bind. On failure + * (like the given Controller button doesn't exist on the device), + * its `.bindType` will be `SDL_CONTROLLER_BINDTYPE_NONE`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetBindForAxis + */ +extern DECLSPEC SDL_GameControllerButtonBind SDLCALL +SDL_GameControllerGetBindForButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Query whether a game controller has a given button. + * + * This merely reports whether the controller's mapping defined this button, + * as that is all the information SDL has about the physical device. + * + * \param gamecontroller a game controller + * \param button a button enum value (an SDL_GameControllerButton value) + * \returns SDL_TRUE if the controller has this button, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the current state of a button on a game controller. + * + * \param gamecontroller a game controller + * \param button a button index (one of the SDL_GameControllerButton values) + * \returns 1 for pressed state or 0 for not pressed state or error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerGetAxis + */ +extern DECLSPEC Uint8 SDLCALL SDL_GameControllerGetButton(SDL_GameController *gamecontroller, + SDL_GameControllerButton button); + +/** + * Get the number of touchpads on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpads(SDL_GameController *gamecontroller); + +/** + * Get the number of supported simultaneous fingers on a touchpad on a game + * controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetNumTouchpadFingers(SDL_GameController *gamecontroller, int touchpad); + +/** + * Get the current state of a finger on a touchpad on a game controller. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetTouchpadFinger(SDL_GameController *gamecontroller, int touchpad, int finger, Uint8 *state, float *x, float *y, float *pressure); + +/** + * Return whether a game controller has a particular sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor exists, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasSensor(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Set whether data reporting for a game controller sensor is enabled. + * + * \param gamecontroller The controller to update + * \param type The type of sensor to enable/disable + * \param enabled Whether data reporting should be enabled + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type, SDL_bool enabled); + +/** + * Query whether sensor data reporting is enabled for a game controller. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \returns SDL_TRUE if the sensor is enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerIsSensorEnabled(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the data rate (number of events per second) of a game controller + * sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \return the data rate, or 0.0f if the data rate is not available. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC float SDLCALL SDL_GameControllerGetSensorDataRate(SDL_GameController *gamecontroller, SDL_SensorType type); + +/** + * Get the current state of a game controller sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorData(SDL_GameController *gamecontroller, SDL_SensorType type, float *data, int num_values); + +/** + * Get the current state of a game controller sensor with the timestamp of the + * last update. + * + * The number of values and interpretation of the data is sensor dependent. + * See SDL_sensor.h for the details for each type of sensor. + * + * \param gamecontroller The controller to query + * \param type The type of sensor to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \return 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerGetSensorDataWithTimestamp(SDL_GameController *gamecontroller, SDL_SensorType type, Uint64 *timestamp, float *data, int num_values); + +/** + * Start a rumble effect on a game controller. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param gamecontroller The controller to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GameControllerHasRumble + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumble(SDL_GameController *gamecontroller, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the game controller's triggers. + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use + * SDL_GameControllerRumble() instead. + * + * \param gamecontroller The controller to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this controller + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GameControllerHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_GameControllerRumbleTriggers(SDL_GameController *gamecontroller, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a game controller has an LED. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have a + * modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasLED(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have rumble + * support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumble(SDL_GameController *gamecontroller); + +/** + * Query whether a game controller has rumble support on triggers. + * + * \param gamecontroller The controller to query + * \returns SDL_TRUE, or SDL_FALSE if this controller does not have trigger + * rumble support + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GameControllerHasRumbleTriggers(SDL_GameController *gamecontroller); + +/** + * Update a game controller's LED color. + * + * \param gamecontroller The controller to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0, or -1 if this controller does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSetLED(SDL_GameController *gamecontroller, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a controller specific effect packet + * + * \param gamecontroller The controller to affect + * \param data The data to send to the controller + * \param size The size of the data to send to the controller + * \returns 0, or -1 if this controller or driver doesn't support effect + * packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_GameControllerSendEffect(SDL_GameController *gamecontroller, const void *data, int size); + +/** + * Close a game controller previously opened with SDL_GameControllerOpen(). + * + * \param gamecontroller a game controller identifier previously returned by + * SDL_GameControllerOpen() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerOpen + */ +extern DECLSPEC void SDLCALL SDL_GameControllerClose(SDL_GameController *gamecontroller); + +/** + * Return the sfSymbolsName for a given button on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param button a button on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForAxis + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForButton(SDL_GameController *gamecontroller, SDL_GameControllerButton button); + +/** + * Return the sfSymbolsName for a given axis on a game controller on Apple + * platforms. + * + * \param gamecontroller the controller to query + * \param axis an axis on the game controller + * \returns the sfSymbolsName or NULL if the name can't be found + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GameControllerGetAppleSFSymbolsNameForButton + */ +extern DECLSPEC const char* SDLCALL SDL_GameControllerGetAppleSFSymbolsNameForAxis(SDL_GameController *gamecontroller, SDL_GameControllerAxis axis); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gamecontroller_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gesture.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gesture.h new file mode 100644 index 0000000..eee3847 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_gesture.h @@ -0,0 +1,117 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_gesture.h + * + * Include file for SDL gesture event handling. + */ + +#ifndef SDL_gesture_h_ +#define SDL_gesture_h_ + +#include +#include +#include + +#include + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_GestureID; + +/* Function prototypes */ + +/** + * Begin recording a gesture on a specified touch device or all touch devices. + * + * If the parameter `touchId` is -1 (i.e., all devices), this function will + * always return 1, regardless of whether there actually are any devices. + * + * \param touchId the touch device id, or -1 for all touch devices + * \returns 1 on success or 0 if the specified device could not be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_RecordGesture(SDL_TouchID touchId); + + +/** + * Save all currently loaded Dollar Gesture templates. + * + * \param dst a SDL_RWops to save to + * \returns the number of saved templates on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_SaveAllDollarTemplates(SDL_RWops *dst); + +/** + * Save a currently loaded Dollar Gesture template. + * + * \param gestureId a gesture id + * \param dst a SDL_RWops to save to + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadDollarTemplates + * \sa SDL_SaveAllDollarTemplates + */ +extern DECLSPEC int SDLCALL SDL_SaveDollarTemplate(SDL_GestureID gestureId,SDL_RWops *dst); + + +/** + * Load Dollar Gesture templates from a file. + * + * \param touchId a touch id + * \param src a SDL_RWops to load from + * \returns the number of loaded templates on success or a negative error code + * (or 0) on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SaveAllDollarTemplates + * \sa SDL_SaveDollarTemplate + */ +extern DECLSPEC int SDLCALL SDL_LoadDollarTemplates(SDL_TouchID touchId, SDL_RWops *src); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_gesture_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_guid.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_guid.h new file mode 100644 index 0000000..27c3dda --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_guid.h @@ -0,0 +1,100 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_guid.h + * + * Include file for handling ::SDL_GUID values. + */ + +#ifndef SDL_guid_h_ +#define SDL_guid_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * An SDL_GUID is a 128-bit identifier for an input device that + * identifies that device across runs of SDL programs on the same + * platform. If the device is detached and then re-attached to a + * different port, or if the base system is rebooted, the device + * should still report the same GUID. + * + * GUIDs are as precise as possible but are not guaranteed to + * distinguish physically distinct but equivalent devices. For + * example, two game controllers from the same vendor with the same + * product ID and revision may have the same GUID. + * + * GUIDs may be platform-dependent (i.e., the same device may report + * different GUIDs on different operating systems). + */ +typedef struct { + Uint8 data[16]; +} SDL_GUID; + +/* Function prototypes */ + +/** + * Get an ASCII string representation for a given ::SDL_GUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the ::SDL_GUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_GUIDToString(SDL_GUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a ::SDL_GUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a ::SDL_GUID structure. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GUIDToString + */ +extern DECLSPEC SDL_GUID SDLCALL SDL_GUIDFromString(const char *pchGUID); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_guid_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_haptic.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_haptic.h new file mode 100644 index 0000000..111d197 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_haptic.h @@ -0,0 +1,1341 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_haptic.h + * + * \brief The SDL haptic subsystem allows you to control haptic (force feedback) + * devices. + * + * The basic usage is as follows: + * - Initialize the subsystem (::SDL_INIT_HAPTIC). + * - Open a haptic device. + * - SDL_HapticOpen() to open from index. + * - SDL_HapticOpenFromJoystick() to open from an existing joystick. + * - Create an effect (::SDL_HapticEffect). + * - Upload the effect with SDL_HapticNewEffect(). + * - Run the effect with SDL_HapticRunEffect(). + * - (optional) Free the effect with SDL_HapticDestroyEffect(). + * - Close the haptic device with SDL_HapticClose(). + * + * \par Simple rumble example: + * \code + * SDL_Haptic *haptic; + * + * // Open the device + * haptic = SDL_HapticOpen( 0 ); + * if (haptic == NULL) + * return -1; + * + * // Initialize simple rumble + * if (SDL_HapticRumbleInit( haptic ) != 0) + * return -1; + * + * // Play effect at 50% strength for 2 seconds + * if (SDL_HapticRumblePlay( haptic, 0.5, 2000 ) != 0) + * return -1; + * SDL_Delay( 2000 ); + * + * // Clean up + * SDL_HapticClose( haptic ); + * \endcode + * + * \par Complete example: + * \code + * int test_haptic( SDL_Joystick * joystick ) { + * SDL_Haptic *haptic; + * SDL_HapticEffect effect; + * int effect_id; + * + * // Open the device + * haptic = SDL_HapticOpenFromJoystick( joystick ); + * if (haptic == NULL) return -1; // Most likely joystick isn't haptic + * + * // See if it can do sine waves + * if ((SDL_HapticQuery(haptic) & SDL_HAPTIC_SINE)==0) { + * SDL_HapticClose(haptic); // No sine effect + * return -1; + * } + * + * // Create the effect + * SDL_memset( &effect, 0, sizeof(SDL_HapticEffect) ); // 0 is safe default + * effect.type = SDL_HAPTIC_SINE; + * effect.periodic.direction.type = SDL_HAPTIC_POLAR; // Polar coordinates + * effect.periodic.direction.dir[0] = 18000; // Force comes from south + * effect.periodic.period = 1000; // 1000 ms + * effect.periodic.magnitude = 20000; // 20000/32767 strength + * effect.periodic.length = 5000; // 5 seconds long + * effect.periodic.attack_length = 1000; // Takes 1 second to get max strength + * effect.periodic.fade_length = 1000; // Takes 1 second to fade away + * + * // Upload the effect + * effect_id = SDL_HapticNewEffect( haptic, &effect ); + * + * // Test the effect + * SDL_HapticRunEffect( haptic, effect_id, 1 ); + * SDL_Delay( 5000); // Wait for the effect to finish + * + * // We destroy the effect, although closing the device also does this + * SDL_HapticDestroyEffect( haptic, effect_id ); + * + * // Close the device + * SDL_HapticClose(haptic); + * + * return 0; // Success + * } + * \endcode + */ + +#ifndef SDL_haptic_h_ +#define SDL_haptic_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif /* __cplusplus */ + +/* FIXME: For SDL 2.1, adjust all the magnitude variables to be Uint16 (0xFFFF). + * + * At the moment the magnitude variables are mixed between signed/unsigned, and + * it is also not made clear that ALL of those variables expect a max of 0x7FFF. + * + * Some platforms may have higher precision than that (Linux FF, Windows XInput) + * so we should fix the inconsistency in favor of higher possible precision, + * adjusting for platforms that use different scales. + * -flibit + */ + +/** + * \typedef SDL_Haptic + * + * \brief The haptic structure used to identify an SDL haptic. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticClose + */ +struct _SDL_Haptic; +typedef struct _SDL_Haptic SDL_Haptic; + + +/** + * \name Haptic features + * + * Different haptic features a device can have. + */ +/* @{ */ + +/** + * \name Haptic effects + */ +/* @{ */ + +/** + * \brief Constant effect supported. + * + * Constant haptic effect. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_CONSTANT (1u<<0) + +/** + * \brief Sine wave effect supported. + * + * Periodic haptic effect that simulates sine waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SINE (1u<<1) + +/** + * \brief Left/Right effect supported. + * + * Haptic effect for direct control over high/low frequency motors. + * + * \sa SDL_HapticLeftRight + * \warning this value was SDL_HAPTIC_SQUARE right before 2.0.0 shipped. Sorry, + * we ran out of bits, and this is important for XInput devices. + */ +#define SDL_HAPTIC_LEFTRIGHT (1u<<2) + +/* !!! FIXME: put this back when we have more bits in 2.1 */ +/* #define SDL_HAPTIC_SQUARE (1<<2) */ + +/** + * \brief Triangle wave effect supported. + * + * Periodic haptic effect that simulates triangular waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_TRIANGLE (1u<<3) + +/** + * \brief Sawtoothup wave effect supported. + * + * Periodic haptic effect that simulates saw tooth up waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHUP (1u<<4) + +/** + * \brief Sawtoothdown wave effect supported. + * + * Periodic haptic effect that simulates saw tooth down waves. + * + * \sa SDL_HapticPeriodic + */ +#define SDL_HAPTIC_SAWTOOTHDOWN (1u<<5) + +/** + * \brief Ramp effect supported. + * + * Ramp haptic effect. + * + * \sa SDL_HapticRamp + */ +#define SDL_HAPTIC_RAMP (1u<<6) + +/** + * \brief Spring effect supported - uses axes position. + * + * Condition haptic effect that simulates a spring. Effect is based on the + * axes position. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_SPRING (1u<<7) + +/** + * \brief Damper effect supported - uses axes velocity. + * + * Condition haptic effect that simulates dampening. Effect is based on the + * axes velocity. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_DAMPER (1u<<8) + +/** + * \brief Inertia effect supported - uses axes acceleration. + * + * Condition haptic effect that simulates inertia. Effect is based on the axes + * acceleration. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_INERTIA (1u<<9) + +/** + * \brief Friction effect supported - uses axes movement. + * + * Condition haptic effect that simulates friction. Effect is based on the + * axes movement. + * + * \sa SDL_HapticCondition + */ +#define SDL_HAPTIC_FRICTION (1u<<10) + +/** + * \brief Custom effect is supported. + * + * User defined custom haptic effect. + */ +#define SDL_HAPTIC_CUSTOM (1u<<11) + +/* @} *//* Haptic effects */ + +/* These last few are features the device has, not effects */ + +/** + * \brief Device can set global gain. + * + * Device supports setting the global gain. + * + * \sa SDL_HapticSetGain + */ +#define SDL_HAPTIC_GAIN (1u<<12) + +/** + * \brief Device can set autocenter. + * + * Device supports setting autocenter. + * + * \sa SDL_HapticSetAutocenter + */ +#define SDL_HAPTIC_AUTOCENTER (1u<<13) + +/** + * \brief Device can be queried for effect status. + * + * Device supports querying effect status. + * + * \sa SDL_HapticGetEffectStatus + */ +#define SDL_HAPTIC_STATUS (1u<<14) + +/** + * \brief Device can be paused. + * + * Devices supports being paused. + * + * \sa SDL_HapticPause + * \sa SDL_HapticUnpause + */ +#define SDL_HAPTIC_PAUSE (1u<<15) + + +/** + * \name Direction encodings + */ +/* @{ */ + +/** + * \brief Uses polar coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_POLAR 0 + +/** + * \brief Uses cartesian coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_CARTESIAN 1 + +/** + * \brief Uses spherical coordinates for the direction. + * + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_SPHERICAL 2 + +/** + * \brief Use this value to play an effect on the steering wheel axis. This + * provides better compatibility across platforms and devices as SDL will guess + * the correct axis. + * \sa SDL_HapticDirection + */ +#define SDL_HAPTIC_STEERING_AXIS 3 + +/* @} *//* Direction encodings */ + +/* @} *//* Haptic features */ + +/* + * Misc defines. + */ + +/** + * \brief Used to play a device an infinite number of times. + * + * \sa SDL_HapticRunEffect + */ +#define SDL_HAPTIC_INFINITY 4294967295U + + +/** + * \brief Structure that represents a haptic direction. + * + * This is the direction where the force comes from, + * instead of the direction in which the force is exerted. + * + * Directions can be specified by: + * - ::SDL_HAPTIC_POLAR : Specified by polar coordinates. + * - ::SDL_HAPTIC_CARTESIAN : Specified by cartesian coordinates. + * - ::SDL_HAPTIC_SPHERICAL : Specified by spherical coordinates. + * + * Cardinal directions of the haptic device are relative to the positioning + * of the device. North is considered to be away from the user. + * + * The following diagram represents the cardinal directions: + * \verbatim + .--. + |__| .-------. + |=.| |.-----.| + |--| || || + | | |'-----'| + |__|~')_____(' + [ COMPUTER ] + + + North (0,-1) + ^ + | + | + (-1,0) West <----[ HAPTIC ]----> East (1,0) + | + | + v + South (0,1) + + + [ USER ] + \|||/ + (o o) + ---ooO-(_)-Ooo--- + \endverbatim + * + * If type is ::SDL_HAPTIC_POLAR, direction is encoded by hundredths of a + * degree starting north and turning clockwise. ::SDL_HAPTIC_POLAR only uses + * the first \c dir parameter. The cardinal directions would be: + * - North: 0 (0 degrees) + * - East: 9000 (90 degrees) + * - South: 18000 (180 degrees) + * - West: 27000 (270 degrees) + * + * If type is ::SDL_HAPTIC_CARTESIAN, direction is encoded by three positions + * (X axis, Y axis and Z axis (with 3 axes)). ::SDL_HAPTIC_CARTESIAN uses + * the first three \c dir parameters. The cardinal directions would be: + * - North: 0,-1, 0 + * - East: 1, 0, 0 + * - South: 0, 1, 0 + * - West: -1, 0, 0 + * + * The Z axis represents the height of the effect if supported, otherwise + * it's unused. In cartesian encoding (1, 2) would be the same as (2, 4), you + * can use any multiple you want, only the direction matters. + * + * If type is ::SDL_HAPTIC_SPHERICAL, direction is encoded by two rotations. + * The first two \c dir parameters are used. The \c dir parameters are as + * follows (all values are in hundredths of degrees): + * - Degrees from (1, 0) rotated towards (0, 1). + * - Degrees towards (0, 0, 1) (device needs at least 3 axes). + * + * + * Example of force coming from the south with all encodings (force coming + * from the south means the user will have to pull the stick to counteract): + * \code + * SDL_HapticDirection direction; + * + * // Cartesian directions + * direction.type = SDL_HAPTIC_CARTESIAN; // Using cartesian direction encoding. + * direction.dir[0] = 0; // X position + * direction.dir[1] = 1; // Y position + * // Assuming the device has 2 axes, we don't need to specify third parameter. + * + * // Polar directions + * direction.type = SDL_HAPTIC_POLAR; // We'll be using polar direction encoding. + * direction.dir[0] = 18000; // Polar only uses first parameter + * + * // Spherical coordinates + * direction.type = SDL_HAPTIC_SPHERICAL; // Spherical encoding + * direction.dir[0] = 9000; // Since we only have two axes we don't need more parameters. + * \endcode + * + * \sa SDL_HAPTIC_POLAR + * \sa SDL_HAPTIC_CARTESIAN + * \sa SDL_HAPTIC_SPHERICAL + * \sa SDL_HAPTIC_STEERING_AXIS + * \sa SDL_HapticEffect + * \sa SDL_HapticNumAxes + */ +typedef struct SDL_HapticDirection +{ + Uint8 type; /**< The type of encoding. */ + Sint32 dir[3]; /**< The encoded direction. */ +} SDL_HapticDirection; + + +/** + * \brief A structure containing a template for a Constant effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CONSTANT effect. + * + * A constant effect applies a constant force in the specified direction + * to the joystick. + * + * \sa SDL_HAPTIC_CONSTANT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticConstant +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CONSTANT */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Constant */ + Sint16 level; /**< Strength of the constant effect. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticConstant; + +/** + * \brief A structure containing a template for a Periodic effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SINE + * - ::SDL_HAPTIC_LEFTRIGHT + * - ::SDL_HAPTIC_TRIANGLE + * - ::SDL_HAPTIC_SAWTOOTHUP + * - ::SDL_HAPTIC_SAWTOOTHDOWN + * + * A periodic effect consists in a wave-shaped effect that repeats itself + * over time. The type determines the shape of the wave and the parameters + * determine the dimensions of the wave. + * + * Phase is given by hundredth of a degree meaning that giving the phase a value + * of 9000 will displace it 25% of its period. Here are sample values: + * - 0: No phase displacement. + * - 9000: Displaced 25% of its period. + * - 18000: Displaced 50% of its period. + * - 27000: Displaced 75% of its period. + * - 36000: Displaced 100% of its period, same as 0, but 0 is preferred. + * + * Examples: + * \verbatim + SDL_HAPTIC_SINE + __ __ __ __ + / \ / \ / \ / + / \__/ \__/ \__/ + + SDL_HAPTIC_SQUARE + __ __ __ __ __ + | | | | | | | | | | + | |__| |__| |__| |__| | + + SDL_HAPTIC_TRIANGLE + /\ /\ /\ /\ /\ + / \ / \ / \ / \ / + / \/ \/ \/ \/ + + SDL_HAPTIC_SAWTOOTHUP + /| /| /| /| /| /| /| + / | / | / | / | / | / | / | + / |/ |/ |/ |/ |/ |/ | + + SDL_HAPTIC_SAWTOOTHDOWN + \ |\ |\ |\ |\ |\ |\ | + \ | \ | \ | \ | \ | \ | \ | + \| \| \| \| \| \| \| + \endverbatim + * + * \sa SDL_HAPTIC_SINE + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HAPTIC_TRIANGLE + * \sa SDL_HAPTIC_SAWTOOTHUP + * \sa SDL_HAPTIC_SAWTOOTHDOWN + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticPeriodic +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, + ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or + ::SDL_HAPTIC_SAWTOOTHDOWN */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Periodic */ + Uint16 period; /**< Period of the wave. */ + Sint16 magnitude; /**< Peak value; if negative, equivalent to 180 degrees extra phase shift. */ + Sint16 offset; /**< Mean value of the wave. */ + Uint16 phase; /**< Positive phase shift given by hundredth of a degree. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticPeriodic; + +/** + * \brief A structure containing a template for a Condition effect. + * + * The struct handles the following effects: + * - ::SDL_HAPTIC_SPRING: Effect based on axes position. + * - ::SDL_HAPTIC_DAMPER: Effect based on axes velocity. + * - ::SDL_HAPTIC_INERTIA: Effect based on axes acceleration. + * - ::SDL_HAPTIC_FRICTION: Effect based on axes movement. + * + * Direction is handled by condition internals instead of a direction member. + * The condition effect specific members have three parameters. The first + * refers to the X axis, the second refers to the Y axis and the third + * refers to the Z axis. The right terms refer to the positive side of the + * axis and the left terms refer to the negative side of the axis. Please + * refer to the ::SDL_HapticDirection diagram for which side is positive and + * which is negative. + * + * \sa SDL_HapticDirection + * \sa SDL_HAPTIC_SPRING + * \sa SDL_HAPTIC_DAMPER + * \sa SDL_HAPTIC_INERTIA + * \sa SDL_HAPTIC_FRICTION + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCondition +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, + ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION */ + SDL_HapticDirection direction; /**< Direction of the effect - Not used ATM. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Condition */ + Uint16 right_sat[3]; /**< Level when joystick is to the positive side; max 0xFFFF. */ + Uint16 left_sat[3]; /**< Level when joystick is to the negative side; max 0xFFFF. */ + Sint16 right_coeff[3]; /**< How fast to increase the force towards the positive side. */ + Sint16 left_coeff[3]; /**< How fast to increase the force towards the negative side. */ + Uint16 deadband[3]; /**< Size of the dead zone; max 0xFFFF: whole axis-range when 0-centered. */ + Sint16 center[3]; /**< Position of the dead zone. */ +} SDL_HapticCondition; + +/** + * \brief A structure containing a template for a Ramp effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_RAMP effect. + * + * The ramp effect starts at start strength and ends at end strength. + * It augments in linear fashion. If you use attack and fade with a ramp + * the effects get added to the ramp effect making the effect become + * quadratic instead of linear. + * + * \sa SDL_HAPTIC_RAMP + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticRamp +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_RAMP */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Ramp */ + Sint16 start; /**< Beginning strength level. */ + Sint16 end; /**< Ending strength level. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticRamp; + +/** + * \brief A structure containing a template for a Left/Right effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_LEFTRIGHT effect. + * + * The Left/Right effect is used to explicitly control the large and small + * motors, commonly found in modern game controllers. The small (right) motor + * is high frequency, and the large (left) motor is low frequency. + * + * \sa SDL_HAPTIC_LEFTRIGHT + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticLeftRight +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_LEFTRIGHT */ + + /* Replay */ + Uint32 length; /**< Duration of the effect in milliseconds. */ + + /* Rumble */ + Uint16 large_magnitude; /**< Control of the large controller motor. */ + Uint16 small_magnitude; /**< Control of the small controller motor. */ +} SDL_HapticLeftRight; + +/** + * \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. + * + * This struct is exclusively for the ::SDL_HAPTIC_CUSTOM effect. + * + * A custom force feedback effect is much like a periodic effect, where the + * application can define its exact shape. You will have to allocate the + * data yourself. Data should consist of channels * samples Uint16 samples. + * + * If channels is one, the effect is rotated using the defined direction. + * Otherwise it uses the samples in data for the different axes. + * + * \sa SDL_HAPTIC_CUSTOM + * \sa SDL_HapticEffect + */ +typedef struct SDL_HapticCustom +{ + /* Header */ + Uint16 type; /**< ::SDL_HAPTIC_CUSTOM */ + SDL_HapticDirection direction; /**< Direction of the effect. */ + + /* Replay */ + Uint32 length; /**< Duration of the effect. */ + Uint16 delay; /**< Delay before starting the effect. */ + + /* Trigger */ + Uint16 button; /**< Button that triggers the effect. */ + Uint16 interval; /**< How soon it can be triggered again after button. */ + + /* Custom */ + Uint8 channels; /**< Axes to use, minimum of one. */ + Uint16 period; /**< Sample periods. */ + Uint16 samples; /**< Amount of samples. */ + Uint16 *data; /**< Should contain channels*samples items. */ + + /* Envelope */ + Uint16 attack_length; /**< Duration of the attack. */ + Uint16 attack_level; /**< Level at the start of the attack. */ + Uint16 fade_length; /**< Duration of the fade. */ + Uint16 fade_level; /**< Level at the end of the fade. */ +} SDL_HapticCustom; + +/** + * \brief The generic template for any haptic effect. + * + * All values max at 32767 (0x7FFF). Signed values also can be negative. + * Time values unless specified otherwise are in milliseconds. + * + * You can also pass ::SDL_HAPTIC_INFINITY to length instead of a 0-32767 + * value. Neither delay, interval, attack_length nor fade_length support + * ::SDL_HAPTIC_INFINITY. Fade will also not be used since effect never ends. + * + * Additionally, the ::SDL_HAPTIC_RAMP effect does not support a duration of + * ::SDL_HAPTIC_INFINITY. + * + * Button triggers may not be supported on all devices, it is advised to not + * use them if possible. Buttons start at index 1 instead of index 0 like + * the joystick. + * + * If both attack_length and fade_level are 0, the envelope is not used, + * otherwise both values are used. + * + * Common parts: + * \code + * // Replay - All effects have this + * Uint32 length; // Duration of effect (ms). + * Uint16 delay; // Delay before starting effect. + * + * // Trigger - All effects have this + * Uint16 button; // Button that triggers effect. + * Uint16 interval; // How soon before effect can be triggered again. + * + * // Envelope - All effects except condition effects have this + * Uint16 attack_length; // Duration of the attack (ms). + * Uint16 attack_level; // Level at the start of the attack. + * Uint16 fade_length; // Duration of the fade out (ms). + * Uint16 fade_level; // Level at the end of the fade. + * \endcode + * + * + * Here we have an example of a constant effect evolution in time: + * \verbatim + Strength + ^ + | + | effect level --> _________________ + | / \ + | / \ + | / \ + | / \ + | attack_level --> | \ + | | | <--- fade_level + | + +--------------------------------------------------> Time + [--] [---] + attack_length fade_length + + [------------------][-----------------------] + delay length + \endverbatim + * + * Note either the attack_level or the fade_level may be above the actual + * effect level. + * + * \sa SDL_HapticConstant + * \sa SDL_HapticPeriodic + * \sa SDL_HapticCondition + * \sa SDL_HapticRamp + * \sa SDL_HapticLeftRight + * \sa SDL_HapticCustom + */ +typedef union SDL_HapticEffect +{ + /* Common for all force feedback effects */ + Uint16 type; /**< Effect type. */ + SDL_HapticConstant constant; /**< Constant effect. */ + SDL_HapticPeriodic periodic; /**< Periodic effect. */ + SDL_HapticCondition condition; /**< Condition effect. */ + SDL_HapticRamp ramp; /**< Ramp effect. */ + SDL_HapticLeftRight leftright; /**< Left/Right effect. */ + SDL_HapticCustom custom; /**< Custom effect. */ +} SDL_HapticEffect; + + +/* Function prototypes */ + +/** + * Count the number of haptic devices attached to the system. + * + * \returns the number of haptic devices detected on the system or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticName + */ +extern DECLSPEC int SDLCALL SDL_NumHaptics(void); + +/** + * Get the implementation dependent name of a haptic device. + * + * This can be called before any joysticks are opened. If no name can be + * found, this function returns NULL. + * + * \param device_index index of the device to query. + * \returns the name of the device or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_NumHaptics + */ +extern DECLSPEC const char *SDLCALL SDL_HapticName(int device_index); + +/** + * Open a haptic device for use. + * + * The index passed as an argument refers to the N'th haptic device on this + * system. + * + * When opening a haptic device, its gain will be set to maximum and + * autocenter will be disabled. To modify these values use SDL_HapticSetGain() + * and SDL_HapticSetAutocenter(). + * + * \param device_index index of the device to open + * \returns the device identifier or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticIndex + * \sa SDL_HapticOpenFromJoystick + * \sa SDL_HapticOpenFromMouse + * \sa SDL_HapticPause + * \sa SDL_HapticSetAutocenter + * \sa SDL_HapticSetGain + * \sa SDL_HapticStopAll + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpen(int device_index); + +/** + * Check if the haptic device at the designated index has been opened. + * + * \param device_index the index of the device to query + * \returns 1 if it has been opened, 0 if it hasn't or on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticIndex + * \sa SDL_HapticOpen + */ +extern DECLSPEC int SDLCALL SDL_HapticOpened(int device_index); + +/** + * Get the index of a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \returns the index of the specified haptic device or a negative error code + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticOpened + */ +extern DECLSPEC int SDLCALL SDL_HapticIndex(SDL_Haptic * haptic); + +/** + * Query whether or not the current mouse has haptic capabilities. + * + * \returns SDL_TRUE if the mouse is haptic or SDL_FALSE if it isn't. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromMouse + */ +extern DECLSPEC int SDLCALL SDL_MouseIsHaptic(void); + +/** + * Try to open a haptic device from the current mouse. + * + * \returns the haptic device identifier or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_MouseIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromMouse(void); + +/** + * Query if a joystick has haptic features. + * + * \param joystick the SDL_Joystick to test for haptic capabilities + * \returns SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpenFromJoystick + */ +extern DECLSPEC int SDLCALL SDL_JoystickIsHaptic(SDL_Joystick * joystick); + +/** + * Open a haptic device for use from a joystick device. + * + * You must still close the haptic device separately. It will not be closed + * with the joystick. + * + * When opened from a joystick you should first close the haptic device before + * closing the joystick device. If not, on some implementations the haptic + * device will also get unallocated and you'll be unable to use force feedback + * on that device. + * + * \param joystick the SDL_Joystick to create a haptic device from + * \returns a valid haptic device identifier on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticClose + * \sa SDL_HapticOpen + * \sa SDL_JoystickIsHaptic + */ +extern DECLSPEC SDL_Haptic *SDLCALL SDL_HapticOpenFromJoystick(SDL_Joystick * + joystick); + +/** + * Close a haptic device previously opened with SDL_HapticOpen(). + * + * \param haptic the SDL_Haptic device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + */ +extern DECLSPEC void SDLCALL SDL_HapticClose(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can store. + * + * On some platforms this isn't fully supported, and therefore is an + * approximation. Always check to see if your created effect was actually + * created and do not rely solely on SDL_HapticNumEffects(). + * + * \param haptic the SDL_Haptic device to query + * \returns the number of effects the haptic device can store or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffectsPlaying + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffects(SDL_Haptic * haptic); + +/** + * Get the number of effects a haptic device can play at the same time. + * + * This is not supported on all platforms, but will always return a value. + * + * \param haptic the SDL_Haptic device to query maximum playing effects + * \returns the number of effects the haptic device can play at the same time + * or a negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNumEffects + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticNumEffectsPlaying(SDL_Haptic * haptic); + +/** + * Get the haptic device's supported features in bitwise manner. + * + * \param haptic the SDL_Haptic device to query + * \returns a list of supported haptic features in bitwise manner (OR'd), or 0 + * on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticEffectSupported + * \sa SDL_HapticNumEffects + */ +extern DECLSPEC unsigned int SDLCALL SDL_HapticQuery(SDL_Haptic * haptic); + + +/** + * Get the number of haptic axes the device has. + * + * The number of haptic axes might be useful if working with the + * SDL_HapticDirection effect. + * + * \param haptic the SDL_Haptic device to query + * \returns the number of axes on success or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticNumAxes(SDL_Haptic * haptic); + +/** + * Check to see if an effect is supported by a haptic device. + * + * \param haptic the SDL_Haptic device to query + * \param effect the desired effect to query + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticEffectSupported(SDL_Haptic * haptic, + SDL_HapticEffect * + effect); + +/** + * Create a new haptic effect on a specified device. + * + * \param haptic an SDL_Haptic device to create the effect on + * \param effect an SDL_HapticEffect structure containing the properties of + * the effect to create + * \returns the ID of the effect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + * \sa SDL_HapticUpdateEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticNewEffect(SDL_Haptic * haptic, + SDL_HapticEffect * effect); + +/** + * Update the properties of an effect. + * + * Can be used dynamically, although behavior when dynamically changing + * direction may be strange. Specifically the effect may re-upload itself and + * start playing from the start. You also cannot change the type either when + * running SDL_HapticUpdateEffect(). + * + * \param haptic the SDL_Haptic device that has the effect + * \param effect the identifier of the effect to update + * \param data an SDL_HapticEffect structure containing the new effect + * properties to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticNewEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticUpdateEffect(SDL_Haptic * haptic, + int effect, + SDL_HapticEffect * data); + +/** + * Run the haptic effect on its associated haptic device. + * + * To repeat the effect over and over indefinitely, set `iterations` to + * `SDL_HAPTIC_INFINITY`. (Repeats the envelope - attack and fade.) To make + * one instance of the effect last indefinitely (so the effect does not fade), + * set the effect's `length` in its structure/union to `SDL_HAPTIC_INFINITY` + * instead. + * + * \param haptic the SDL_Haptic device to run the effect on + * \param effect the ID of the haptic effect to run + * \param iterations the number of iterations to run the effect; use + * `SDL_HAPTIC_INFINITY` to repeat forever + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticGetEffectStatus + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticRunEffect(SDL_Haptic * haptic, + int effect, + Uint32 iterations); + +/** + * Stop the haptic effect on its associated haptic device. + * + * * + * + * \param haptic the SDL_Haptic device to stop the effect on + * \param effect the ID of the haptic effect to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticDestroyEffect + * \sa SDL_HapticRunEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticStopEffect(SDL_Haptic * haptic, + int effect); + +/** + * Destroy a haptic effect on the device. + * + * This will stop the effect if it's running. Effects are automatically + * destroyed when the device is closed. + * + * \param haptic the SDL_Haptic device to destroy the effect on + * \param effect the ID of the haptic effect to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticNewEffect + */ +extern DECLSPEC void SDLCALL SDL_HapticDestroyEffect(SDL_Haptic * haptic, + int effect); + +/** + * Get the status of the current effect on the specified haptic device. + * + * Device must support the SDL_HAPTIC_STATUS feature. + * + * \param haptic the SDL_Haptic device to query for the effect status on + * \param effect the ID of the haptic effect to query its status + * \returns 0 if it isn't playing, 1 if it is playing, or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRunEffect + * \sa SDL_HapticStopEffect + */ +extern DECLSPEC int SDLCALL SDL_HapticGetEffectStatus(SDL_Haptic * haptic, + int effect); + +/** + * Set the global gain of the specified haptic device. + * + * Device must support the SDL_HAPTIC_GAIN feature. + * + * The user may specify the maximum gain by setting the environment variable + * `SDL_HAPTIC_GAIN_MAX` which should be between 0 and 100. All calls to + * SDL_HapticSetGain() will scale linearly using `SDL_HAPTIC_GAIN_MAX` as the + * maximum. + * + * \param haptic the SDL_Haptic device to set the gain on + * \param gain value to set the gain to, should be between 0 and 100 (0 - 100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetGain(SDL_Haptic * haptic, int gain); + +/** + * Set the global autocenter of the device. + * + * Autocenter should be between 0 and 100. Setting it to 0 will disable + * autocentering. + * + * Device must support the SDL_HAPTIC_AUTOCENTER feature. + * + * \param haptic the SDL_Haptic device to set autocentering on + * \param autocenter value to set autocenter to (0-100) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticQuery + */ +extern DECLSPEC int SDLCALL SDL_HapticSetAutocenter(SDL_Haptic * haptic, + int autocenter); + +/** + * Pause a haptic device. + * + * Device must support the `SDL_HAPTIC_PAUSE` feature. Call + * SDL_HapticUnpause() to resume playback. + * + * Do not modify the effects nor add new ones while the device is paused. That + * can cause all sorts of weird errors. + * + * \param haptic the SDL_Haptic device to pause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticUnpause + */ +extern DECLSPEC int SDLCALL SDL_HapticPause(SDL_Haptic * haptic); + +/** + * Unpause a haptic device. + * + * Call to unpause after SDL_HapticPause(). + * + * \param haptic the SDL_Haptic device to unpause + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticPause + */ +extern DECLSPEC int SDLCALL SDL_HapticUnpause(SDL_Haptic * haptic); + +/** + * Stop all the currently playing effects on a haptic device. + * + * \param haptic the SDL_Haptic device to stop + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_HapticStopAll(SDL_Haptic * haptic); + +/** + * Check whether rumble is supported on a haptic device. + * + * \param haptic haptic device to check for rumble support + * \returns SDL_TRUE if effect is supported, SDL_FALSE if it isn't, or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleSupported(SDL_Haptic * haptic); + +/** + * Initialize a haptic device for simple rumble playback. + * + * \param haptic the haptic device to initialize for simple rumble playback + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticOpen + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleInit(SDL_Haptic * haptic); + +/** + * Run a simple rumble effect on a haptic device. + * + * \param haptic the haptic device to play the rumble effect on + * \param strength strength of the rumble to play as a 0-1 float value + * \param length length of the rumble to play in milliseconds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumbleStop + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumblePlay(SDL_Haptic * haptic, float strength, Uint32 length ); + +/** + * Stop the simple rumble on a haptic device. + * + * \param haptic the haptic device to stop the rumble effect on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HapticRumbleInit + * \sa SDL_HapticRumblePlay + * \sa SDL_HapticRumbleSupported + */ +extern DECLSPEC int SDLCALL SDL_HapticRumbleStop(SDL_Haptic * haptic); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_haptic_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hidapi.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hidapi.h new file mode 100644 index 0000000..62cc301 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hidapi.h @@ -0,0 +1,451 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hidapi.h + * + * Header file for SDL HIDAPI functions. + * + * This is an adaptation of the original HIDAPI interface by Alan Ott, + * and includes source code licensed under the following BSD license: + * + Copyright (c) 2010, Alan Ott, Signal 11 Software + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, + this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Signal 11 Software nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE + LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + POSSIBILITY OF SUCH DAMAGE. + * + * If you would like a version of SDL without this code, you can build SDL + * with SDL_HIDAPI_DISABLED defined to 1. You might want to do this for example + * on iOS or tvOS to avoid a dependency on the CoreBluetooth framework. + */ + +#ifndef SDL_hidapi_h_ +#define SDL_hidapi_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle representing an open HID device + */ +struct SDL_hid_device_; +typedef struct SDL_hid_device_ SDL_hid_device; /**< opaque hidapi structure */ + +/** hidapi info structure */ +/** + * \brief Information about a connected HID device + */ +typedef struct SDL_hid_device_info +{ + /** Platform-specific device path */ + char *path; + /** Device Vendor ID */ + unsigned short vendor_id; + /** Device Product ID */ + unsigned short product_id; + /** Serial Number */ + wchar_t *serial_number; + /** Device Release Number in binary-coded decimal, + also known as Device Version Number */ + unsigned short release_number; + /** Manufacturer String */ + wchar_t *manufacturer_string; + /** Product string */ + wchar_t *product_string; + /** Usage Page for this Device/Interface + (Windows/Mac only). */ + unsigned short usage_page; + /** Usage for this Device/Interface + (Windows/Mac only).*/ + unsigned short usage; + /** The USB interface which this logical device + represents. + + * Valid on both Linux implementations in all cases. + * Valid on the Windows implementation only if the device + contains more than one interface. */ + int interface_number; + + /** Additional information about the USB interface. + Valid on libusb and Android implementations. */ + int interface_class; + int interface_subclass; + int interface_protocol; + + /** Pointer to the next device */ + struct SDL_hid_device_info *next; +} SDL_hid_device_info; + + +/** + * Initialize the HIDAPI library. + * + * This function initializes the HIDAPI library. Calling it is not strictly + * necessary, as it will be called automatically by SDL_hid_enumerate() and + * any of the SDL_hid_open_*() functions if it is needed. This function should + * be called at the beginning of execution however, if there is a chance of + * HIDAPI handles being opened by different threads simultaneously. + * + * Each call to this function should have a matching call to SDL_hid_exit() + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_exit + */ +extern DECLSPEC int SDLCALL SDL_hid_init(void); + +/** + * Finalize the HIDAPI library. + * + * This function frees all of the static data associated with HIDAPI. It + * should be called at the end of execution to avoid memory leaks. + * + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_init + */ +extern DECLSPEC int SDLCALL SDL_hid_exit(void); + +/** + * Check to see if devices may have been added or removed. + * + * Enumerating the HID devices is an expensive operation, so you can call this + * to see if there have been any system device changes since the last call to + * this function. A change in the counter returned doesn't necessarily mean + * that anything has changed, but you can call SDL_hid_enumerate() to get an + * updated device list. + * + * Calling this function for the first time may cause a thread or other system + * resource to be allocated to track device change notifications. + * + * \returns a change counter that is incremented with each potential device + * change, or 0 if device change detection isn't available. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_enumerate + */ +extern DECLSPEC Uint32 SDLCALL SDL_hid_device_change_count(void); + +/** + * Enumerate the HID Devices. + * + * This function returns a linked list of all the HID devices attached to the + * system which match vendor_id and product_id. If `vendor_id` is set to 0 + * then any vendor matches. If `product_id` is set to 0 then any product + * matches. If `vendor_id` and `product_id` are both set to 0, then all HID + * devices will be returned. + * + * \param vendor_id The Vendor ID (VID) of the types of device to open. + * \param product_id The Product ID (PID) of the types of device to open. + * \returns a pointer to a linked list of type SDL_hid_device_info, containing + * information about the HID devices attached to the system, or NULL + * in the case of failure. Free this linked list by calling + * SDL_hid_free_enumeration(). + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_hid_device_change_count + */ +extern DECLSPEC SDL_hid_device_info * SDLCALL SDL_hid_enumerate(unsigned short vendor_id, unsigned short product_id); + +/** + * Free an enumeration Linked List + * + * This function frees a linked list created by SDL_hid_enumerate(). + * + * \param devs Pointer to a list of struct_device returned from + * SDL_hid_enumerate(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_free_enumeration(SDL_hid_device_info *devs); + +/** + * Open a HID device using a Vendor ID (VID), Product ID (PID) and optionally + * a serial number. + * + * If `serial_number` is NULL, the first device with the specified VID and PID + * is opened. + * + * \param vendor_id The Vendor ID (VID) of the device to open. + * \param product_id The Product ID (PID) of the device to open. + * \param serial_number The Serial Number of the device to open (Optionally + * NULL). + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open(unsigned short vendor_id, unsigned short product_id, const wchar_t *serial_number); + +/** + * Open a HID device by its path name. + * + * The path name be determined by calling SDL_hid_enumerate(), or a + * platform-specific path name can be used (eg: /dev/hidraw0 on Linux). + * + * \param path The path name of the device to open + * \returns a pointer to a SDL_hid_device object on success or NULL on + * failure. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC SDL_hid_device * SDLCALL SDL_hid_open_path(const char *path, int bExclusive /* = false */); + +/** + * Write an Output report to a HID device. + * + * The first byte of `data` must contain the Report ID. For devices which only + * support a single report, this must be set to 0x0. The remaining bytes + * contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_write() will always contain one more byte than the report contains. + * For example, if a hid report is 16 bytes long, 17 bytes must be passed to + * SDL_hid_write(), the Report ID (or 0x0, for devices with a single report), + * followed by the report data (16 bytes). In this example, the length passed + * in would be 17. + * + * SDL_hid_write() will send the data on the first OUT endpoint, if one + * exists. If it does not, it will send the data through the Control Endpoint + * (Endpoint 0). + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_write(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Read an Input report from a HID device with timeout. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \param milliseconds timeout in milliseconds or -1 for blocking wait. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read within the timeout period, this function + * returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read_timeout(SDL_hid_device *dev, unsigned char *data, size_t length, int milliseconds); + +/** + * Read an Input report from a HID device. + * + * Input reports are returned to the host through the INTERRUPT IN endpoint. + * The first byte will contain the Report number if the device uses numbered + * reports. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into. + * \param length The number of bytes to read. For devices with multiple + * reports, make sure to read an extra byte for the report + * number. + * \returns the actual number of bytes read and -1 on error. If no packet was + * available to be read and the handle is in non-blocking mode, this + * function returns 0. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_read(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Set the device handle to be non-blocking. + * + * In non-blocking mode calls to SDL_hid_read() will return immediately with a + * value of 0 if there is no data to be read. In blocking mode, SDL_hid_read() + * will wait (block) until there is data to read before returning. + * + * Nonblocking can be turned on and off at any time. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param nonblock enable or not the nonblocking reads - 1 to enable + * nonblocking - 0 to disable nonblocking. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_set_nonblocking(SDL_hid_device *dev, int nonblock); + +/** + * Send a Feature report to the device. + * + * Feature reports are sent over the Control endpoint as a Set_Report + * transfer. The first byte of `data` must contain the Report ID. For devices + * which only support a single report, this must be set to 0x0. The remaining + * bytes contain the report data. Since the Report ID is mandatory, calls to + * SDL_hid_send_feature_report() will always contain one more byte than the + * report contains. For example, if a hid report is 16 bytes long, 17 bytes + * must be passed to SDL_hid_send_feature_report(): the Report ID (or 0x0, for + * devices which do not use numbered reports), followed by the report data (16 + * bytes). In this example, the length passed in would be 17. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data The data to send, including the report number as the first + * byte. + * \param length The length in bytes of the data to send, including the report + * number. + * \returns the actual number of bytes written and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_send_feature_report(SDL_hid_device *dev, const unsigned char *data, size_t length); + +/** + * Get a feature report from a HID device. + * + * Set the first byte of `data` to the Report ID of the report to be read. + * Make sure to allow space for this extra byte in `data`. Upon return, the + * first byte will still contain the Report ID, and the report data will start + * in data[1]. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param data A buffer to put the read data into, including the Report ID. + * Set the first byte of `data` to the Report ID of the report to + * be read, or set it to zero if your device does not use numbered + * reports. + * \param length The number of bytes to read, including an extra byte for the + * report ID. The buffer can be longer than the actual report. + * \returns the number of bytes read plus one for the report ID (which is + * still in the first byte), or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_feature_report(SDL_hid_device *dev, unsigned char *data, size_t length); + +/** + * Close a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_close(SDL_hid_device *dev); + +/** + * Get The Manufacturer String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_manufacturer_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Product String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_product_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get The Serial Number String from a HID device. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_serial_number_string(SDL_hid_device *dev, wchar_t *string, size_t maxlen); + +/** + * Get a string from a HID device, based on its string index. + * + * \param dev A device handle returned from SDL_hid_open(). + * \param string_index The index of the string to get. + * \param string A wide string buffer to put the data into. + * \param maxlen The length of the buffer in multiples of wchar_t. + * \returns 0 on success and -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_hid_get_indexed_string(SDL_hid_device *dev, int string_index, wchar_t *string, size_t maxlen); + +/** + * Start or stop a BLE scan on iOS and tvOS to pair Steam Controllers + * + * \param active SDL_TRUE to start the scan, SDL_FALSE to stop the scan + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void SDLCALL SDL_hid_ble_scan(SDL_bool active); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hidapi_h_ */ + +/* vi: set sts=4 ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hints.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hints.h new file mode 100644 index 0000000..ee79bef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_hints.h @@ -0,0 +1,2624 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_hints.h + * + * Official documentation for SDL configuration variables + * + * This file contains functions to set and get configuration hints, + * as well as listing each of them alphabetically. + * + * The convention for naming hints is SDL_HINT_X, where "SDL_X" is + * the environment variable that can be used to override the default. + * + * In general these hints are just that - they may or may not be + * supported or applicable on any given platform, but they provide + * a way for an application or user to give the library a hint as + * to how they would like the library to work. + */ + +#ifndef SDL_hints_h_ +#define SDL_hints_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A variable controlling whether the Android / iOS built-in + * accelerometer should be listed as a joystick device. + * + * This variable can be set to the following values: + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). + */ +#define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" + +/** + * \brief Specify the behavior of Alt+Tab while the keyboard is grabbed. + * + * By default, SDL emulates Alt+Tab functionality while the keyboard is grabbed + * and your window is full-screen. This prevents the user from getting stuck in + * your application if you've enabled keyboard grab. + * + * The variable can be set to the following values: + * "0" - SDL will not handle Alt+Tab. Your application is responsible + for handling Alt+Tab while the keyboard is grabbed. + * "1" - SDL will minimize your window when Alt+Tab is pressed (default) +*/ +#define SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED "SDL_ALLOW_ALT_TAB_WHILE_GRABBED" + +/** + * \brief If set to "0" then never set the top most bit on a SDL Window, even if the video mode expects it. + * This is a debugging aid for developers and not expected to be used by end users. The default is "1" + * + * This variable can be set to the following values: + * "0" - don't allow topmost + * "1" - allow topmost + */ +#define SDL_HINT_ALLOW_TOPMOST "SDL_ALLOW_TOPMOST" + +/** + * \brief Android APK expansion main file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION" + +/** + * \brief Android APK expansion patch file version. Should be a string number like "1", "2" etc. + * + * Must be set together with SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION. + * + * If both hints were set then SDL_RWFromFile() will look into expansion files + * after a given relative path was not found in the internal storage and assets. + * + * By default this hint is not set and the APK expansion files are not searched. + */ +#define SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION "SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION" + +/** + * \brief A variable to control whether the event loop will block itself when the app is paused. + * + * The variable can be set to the following values: + * "0" - Non blocking. + * "1" - Blocking. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE "SDL_ANDROID_BLOCK_ON_PAUSE" + +/** + * \brief A variable to control whether SDL will pause audio in background + * (Requires SDL_ANDROID_BLOCK_ON_PAUSE as "Non blocking") + * + * The variable can be set to the following values: + * "0" - Non paused. + * "1" - Paused. (default) + * + * The value should be set before SDL is initialized. + */ +#define SDL_HINT_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO "SDL_ANDROID_BLOCK_ON_PAUSE_PAUSEAUDIO" + +/** + * \brief A variable to control whether we trap the Android back button to handle it manually. + * This is necessary for the right mouse button to work on some Android devices, or + * to be able to trap the back button for use in your code reliably. If set to true, + * the back button will show up as an SDL_KEYDOWN / SDL_KEYUP pair with a keycode of + * SDL_SCANCODE_AC_BACK. + * + * The variable can be set to the following values: + * "0" - Back button will be handled as usual for system. (default) + * "1" - Back button will be trapped, allowing you to handle the key press + * manually. (This will also let right mouse click work on systems + * where the right mouse button functions as back.) + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_ANDROID_TRAP_BACK_BUTTON "SDL_ANDROID_TRAP_BACK_BUTTON" + +/** + * \brief Specify an application name. + * + * This hint lets you specify the application name sent to the OS when + * required. For example, this will often appear in volume control applets for + * audio streams, and in lists of applications which are inhibiting the + * screensaver. You should use a string that describes your program ("My Game + * 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: probably the application's name or "SDL Application" if SDL + * doesn't have any better information. + * + * Note that, for audio streams, this can be overridden with + * SDL_HINT_AUDIO_DEVICE_APP_NAME. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_APP_NAME "SDL_APP_NAME" + +/** + * \brief A variable controlling whether controllers used with the Apple TV + * generate UI events. + * + * When UI events are generated by controller input, the app will be + * backgrounded when the Apple TV remote's menu button is pressed, and when the + * pause or B buttons on gamepads are pressed. + * + * More information about properly making use of controllers for the Apple TV + * can be found here: + * https://developer.apple.com/tvos/human-interface-guidelines/remote-and-controllers/ + * + * This variable can be set to the following values: + * "0" - Controller input does not generate UI events (the default). + * "1" - Controller input generates UI events. + */ +#define SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS "SDL_APPLE_TV_CONTROLLER_UI_EVENTS" + +/** + * \brief A variable controlling whether the Apple TV remote's joystick axes + * will automatically match the rotation of the remote. + * + * This variable can be set to the following values: + * "0" - Remote orientation does not affect joystick axes (the default). + * "1" - Joystick axes are based on the orientation of the remote. + */ +#define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" + +/** + * \brief A variable controlling the audio category on iOS and Mac OS X + * + * This variable can be set to the following values: + * + * "ambient" - Use the AVAudioSessionCategoryAmbient audio category, will be muted by the phone mute switch (default) + * "playback" - Use the AVAudioSessionCategoryPlayback category + * + * For more information, see Apple's documentation: + * https://developer.apple.com/library/content/documentation/Audio/Conceptual/AudioSessionProgrammingGuide/AudioSessionCategoriesandModes/AudioSessionCategoriesandModes.html + */ +#define SDL_HINT_AUDIO_CATEGORY "SDL_AUDIO_CATEGORY" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your program ("My Game 2: The Revenge") + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: this will be the name set with SDL_HINT_APP_NAME, if that hint is + * set. Otherwise, it'll probably the application's name or "SDL Application" + * if SDL doesn't have any better information. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_APP_NAME "SDL_AUDIO_DEVICE_APP_NAME" + +/** + * \brief Specify an application name for an audio device. + * + * Some audio backends (such as PulseAudio) allow you to describe your audio + * stream. Among other things, this description might show up in a system + * control panel that lets the user adjust the volume on specific audio + * streams instead of using one giant master volume slider. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing ("audio stream" is + * probably sufficient in many cases, but this could be useful for something + * like "team chat" if you have a headset playing VoIP audio separately). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "audio stream" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_NAME "SDL_AUDIO_DEVICE_STREAM_NAME" + +/** + * \brief Specify an application role for an audio device. + * + * Some audio backends (such as Pipewire) allow you to describe the role of + * your audio stream. Among other things, this description might show up in + * a system control panel or software for displaying and manipulating media + * playback/capture graphs. + * + * This hints lets you transmit that information to the OS. The contents of + * this hint are used while opening an audio device. You should use a string + * that describes your what your program is playing (Game, Music, Movie, + * etc...). + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_AUDIO_DEVICE_STREAM_ROLE "SDL_AUDIO_DEVICE_STREAM_ROLE" + +/** + * \brief A variable controlling speed/quality tradeoff of audio resampling. + * + * If available, SDL can use libsamplerate ( http://www.mega-nerd.com/SRC/ ) + * to handle audio resampling. There are different resampling modes available + * that produce different levels of quality, using more CPU. + * + * If this hint isn't specified to a valid setting, or libsamplerate isn't + * available, SDL will use the default, internal resampling algorithm. + * + * As of SDL 2.26, SDL_ConvertAudio() respects this hint when libsamplerate is available. + * + * This hint is currently only checked at audio subsystem initialization. + * + * This variable can be set to the following values: + * + * "0" or "default" - Use SDL's internal resampling (Default when not set - low quality, fast) + * "1" or "fast" - Use fast, slightly higher quality resampling, if available + * "2" or "medium" - Use medium quality resampling, if available + * "3" or "best" - Use high quality resampling, if available + */ +#define SDL_HINT_AUDIO_RESAMPLING_MODE "SDL_AUDIO_RESAMPLING_MODE" + +/** + * \brief A variable controlling whether SDL updates joystick state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_JoystickUpdate() manually + * "1" - SDL will automatically call SDL_JoystickUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_JOYSTICKS "SDL_AUTO_UPDATE_JOYSTICKS" + +/** + * \brief A variable controlling whether SDL updates sensor state when getting input events + * + * This variable can be set to the following values: + * + * "0" - You'll call SDL_SensorUpdate() manually + * "1" - SDL will automatically call SDL_SensorUpdate() (default) + * + * This hint can be toggled on and off at runtime. + */ +#define SDL_HINT_AUTO_UPDATE_SENSORS "SDL_AUTO_UPDATE_SENSORS" + +/** + * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. + * + * The bitmap header version 4 is required for proper alpha channel support and + * SDL will use it when required. Should this not be desired, this hint can + * force the use of the 40 byte header version which is supported everywhere. + * + * The variable can be set to the following values: + * "0" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file with an alpha mask. SDL will use the bitmap + * header version 4 and set the alpha mask accordingly. + * "1" - Surfaces with a colorkey or an alpha channel are saved to a + * 32-bit BMP file without an alpha mask. The alpha channel data + * will be in the file, but applications are going to ignore it. + * + * The default value is "0". + */ +#define SDL_HINT_BMP_SAVE_LEGACY_FORMAT "SDL_BMP_SAVE_LEGACY_FORMAT" + +/** + * \brief Override for SDL_GetDisplayUsableBounds() + * + * If set, this hint will override the expected results for + * SDL_GetDisplayUsableBounds() for display index 0. Generally you don't want + * to do this, but this allows an embedded system to request that some of the + * screen be reserved for other uses when paired with a well-behaved + * application. + * + * The contents of this hint must be 4 comma-separated integers, the first + * is the bounds x, then y, width and height, in that order. + */ +#define SDL_HINT_DISPLAY_USABLE_BOUNDS "SDL_DISPLAY_USABLE_BOUNDS" + +/** + * \brief Disable giving back control to the browser automatically + * when running with asyncify + * + * With -s ASYNCIFY, SDL2 calls emscripten_sleep during operations + * such as refreshing the screen or polling events. + * + * This hint only applies to the emscripten platform + * + * The variable can be set to the following values: + * "0" - Disable emscripten_sleep calls (if you give back browser control manually or use asyncify for other purposes) + * "1" - Enable emscripten_sleep calls (the default) + */ +#define SDL_HINT_EMSCRIPTEN_ASYNCIFY "SDL_EMSCRIPTEN_ASYNCIFY" + +/** + * \brief override the binding element for keyboard inputs for Emscripten builds + * + * This hint only applies to the emscripten platform + * + * The variable can be one of + * "#window" - The javascript window object (this is the default) + * "#document" - The javascript document object + * "#screen" - the javascript window.screen object + * "#canvas" - the WebGL canvas element + * any other string without a leading # sign applies to the element on the page with that ID. + */ +#define SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT "SDL_EMSCRIPTEN_KEYBOARD_ELEMENT" + +/** + * \brief A variable that controls whether the on-screen keyboard should be shown when text input is active + * + * The variable can be set to the following values: + * "0" - Do not show the on-screen keyboard + * "1" - Show the on-screen keyboard + * + * The default value is "1". This hint must be set before text input is activated. + */ +#define SDL_HINT_ENABLE_SCREEN_KEYBOARD "SDL_ENABLE_SCREEN_KEYBOARD" + +/** + * \brief A variable that controls whether Steam Controllers should be exposed using the SDL joystick and game controller APIs + * + * The variable can be set to the following values: + * "0" - Do not scan for Steam Controllers + * "1" - Scan for Steam Controllers (the default) + * + * The default value is "1". This hint must be set before initializing the joystick subsystem. + */ +#define SDL_HINT_ENABLE_STEAM_CONTROLLERS "SDL_ENABLE_STEAM_CONTROLLERS" + +/** + * \brief A variable controlling verbosity of the logging of SDL events pushed onto the internal queue. + * + * This variable can be set to the following values, from least to most verbose: + * + * "0" - Don't log any events (default) + * "1" - Log most events (other than the really spammy ones). + * "2" - Include mouse and finger motion events. + * "3" - Include SDL_SysWMEvent events. + * + * This is generally meant to be used to debug SDL itself, but can be useful + * for application developers that need better visibility into what is going + * on in the event queue. Logged events are sent through SDL_Log(), which + * means by default they appear on stdout on most platforms or maybe + * OutputDebugString() on Windows, and can be funneled by the app with + * SDL_LogSetOutputFunction(), etc. + * + * This hint can be toggled on and off at runtime, if you only need to log + * events for a small subset of program execution. + */ +#define SDL_HINT_EVENT_LOGGING "SDL_EVENT_LOGGING" + +/** + * \brief A variable controlling whether raising the window should be done more forcefully + * + * This variable can be set to the following values: + * "0" - No forcing (the default) + * "1" - Extra level of forcing + * + * At present, this is only an issue under MS Windows, which makes it nearly impossible to + * programmatically move a window to the foreground, for "security" reasons. See + * http://stackoverflow.com/a/34414846 for a discussion. + */ +#define SDL_HINT_FORCE_RAISEWINDOW "SDL_HINT_FORCE_RAISEWINDOW" + +/** + * \brief A variable controlling how 3D acceleration is used to accelerate the SDL screen surface. + * + * SDL can try to accelerate the SDL screen surface by using streaming + * textures with a 3D rendering engine. This variable controls whether and + * how this is done. + * + * This variable can be set to the following values: + * "0" - Disable 3D acceleration + * "1" - Enable 3D acceleration, using the default renderer. + * "X" - Enable 3D acceleration, using X where X is one of the valid rendering drivers. (e.g. "direct3d", "opengl", etc.) + * + * By default SDL tries to make a best guess for each platform whether + * to use acceleration or not. + */ +#define SDL_HINT_FRAMEBUFFER_ACCELERATION "SDL_FRAMEBUFFER_ACCELERATION" + +/** + * \brief A variable that lets you manually hint extra gamecontroller db entries. + * + * The variable should be newline delimited rows of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG "SDL_GAMECONTROLLERCONFIG" + +/** + * \brief A variable that lets you provide a file with extra gamecontroller db entries. + * + * The file should contain lines of gamecontroller config data, see SDL_gamecontroller.h + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + * You can update mappings after the system is initialized with SDL_GameControllerMappingForGUID() and SDL_GameControllerAddMapping() + */ +#define SDL_HINT_GAMECONTROLLERCONFIG_FILE "SDL_GAMECONTROLLERCONFIG_FILE" + +/** + * \brief A variable that overrides the automatic controller type detection + * + * The variable should be comma separated entries, in the form: VID/PID=type + * + * The VID and PID should be hexadecimal with exactly 4 digits, e.g. 0x00fd + * + * The type should be one of: + * Xbox360 + * XboxOne + * PS3 + * PS4 + * PS5 + * SwitchPro + * + * This hint affects what driver is used, and must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_GAMECONTROLLERTYPE "SDL_GAMECONTROLLERTYPE" + +/** + * \brief A variable containing a list of devices to skip when scanning for game controllers. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES "SDL_GAMECONTROLLER_IGNORE_DEVICES" + +/** + * \brief If set, all devices will be skipped when scanning for game controllers except for the ones listed in this variable. + * + * The format of the string is a comma separated list of USB VID/PID pairs + * in hexadecimal form, e.g. + * + * 0xAAAA/0xBBBB,0xCCCC/0xDDDD + * + * The variable can also take the form of @file, in which case the named + * file will be loaded and interpreted as the value of the variable. + */ +#define SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT "SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT" + +/** + * \brief If set, game controller face buttons report their values according to their labels instead of their positional layout. + * + * For example, on Nintendo Switch controllers, normally you'd get: + * + * (Y) + * (X) (B) + * (A) + * + * but if this hint is set, you'll get: + * + * (X) + * (Y) (A) + * (B) + * + * The variable can be set to the following values: + * "0" - Report the face buttons by position, as though they were on an Xbox controller. + * "1" - Report the face buttons by label instead of position + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_GAMECONTROLLER_USE_BUTTON_LABELS "SDL_GAMECONTROLLER_USE_BUTTON_LABELS" + +/** + * \brief A variable controlling whether grabbing input grabs the keyboard + * + * This variable can be set to the following values: + * "0" - Grab will affect only the mouse + * "1" - Grab will affect mouse and keyboard + * + * By default SDL will not grab the keyboard so system shortcuts still work. + */ +#define SDL_HINT_GRAB_KEYBOARD "SDL_GRAB_KEYBOARD" + +/** + * \brief A variable containing a list of devices to ignore in SDL_hid_enumerate() + * + * For example, to ignore the Shanwan DS3 controller and any Valve controller, you might + * have the string "0x2563/0x0523,0x28de/0x0000" + */ +#define SDL_HINT_HIDAPI_IGNORE_DEVICES "SDL_HIDAPI_IGNORE_DEVICES" + +/** + * \brief A variable controlling whether the idle timer is disabled on iOS. + * + * When an iOS app does not receive touches for some time, the screen is + * dimmed automatically. For games where the accelerometer is the only input + * this is problematic. This functionality can be disabled by setting this + * hint. + * + * As of SDL 2.0.4, SDL_EnableScreenSaver() and SDL_DisableScreenSaver() + * accomplish the same thing on iOS. They should be preferred over this hint. + * + * This variable can be set to the following values: + * "0" - Enable idle timer + * "1" - Disable idle timer + */ +#define SDL_HINT_IDLE_TIMER_DISABLED "SDL_IOS_IDLE_TIMER_DISABLED" + +/** + * \brief A variable to control whether certain IMEs should handle text editing internally instead of sending SDL_TEXTEDITING events. + * + * The variable can be set to the following values: + * "0" - SDL_TEXTEDITING events are sent, and it is the application's + * responsibility to render the text from these events and + * differentiate it somehow from committed text. (default) + * "1" - If supported by the IME then SDL_TEXTEDITING events are not sent, + * and text that is being composed will be rendered in its own UI. + */ +#define SDL_HINT_IME_INTERNAL_EDITING "SDL_IME_INTERNAL_EDITING" + +/** + * \brief A variable to control whether certain IMEs should show native UI components (such as the Candidate List) instead of suppressing them. + * + * The variable can be set to the following values: + * "0" - Native UI components are not display. (default) + * "1" - Native UI components are displayed. + */ +#define SDL_HINT_IME_SHOW_UI "SDL_IME_SHOW_UI" + +/** + * \brief A variable to control if extended IME text support is enabled. + * If enabled then SDL_TextEditingExtEvent will be issued if the text would be truncated otherwise. + * Additionally SDL_TextInputEvent will be dispatched multiple times so that it is not truncated. + * + * The variable can be set to the following values: + * "0" - Legacy behavior. Text can be truncated, no heap allocations. (default) + * "1" - Modern behavior. + */ +#define SDL_HINT_IME_SUPPORT_EXTENDED_TEXT "SDL_IME_SUPPORT_EXTENDED_TEXT" + +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + +/** + * \brief A variable that lets you enable joystick (and gamecontroller) events even when your app is in the background. + * + * The variable can be set to the following values: + * "0" - Disable joystick & gamecontroller input events when the + * application is in the background. + * "1" - Enable joystick & gamecontroller input events when the + * application is in the background. + * + * The default value is "0". This hint may be set at any time. + */ +#define SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS "SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS" + +/** + * \brief A variable controlling whether the HIDAPI joystick drivers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI drivers are not used + * "1" - HIDAPI drivers are used (the default) + * + * This variable is the default for all drivers, but can be overridden by the hints for specific drivers below. + */ +#define SDL_HINT_JOYSTICK_HIDAPI "SDL_JOYSTICK_HIDAPI" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo GameCube controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_GAMECUBE "SDL_JOYSTICK_HIDAPI_GAMECUBE" + +/** + * \brief A variable controlling whether "low_frequency_rumble" and "high_frequency_rumble" is used to implement + * the GameCube controller's 3 rumble modes, Stop(0), Rumble(1), and StopHard(2) + * this is useful for applications that need full compatibility for things like ADSR envelopes. + * Stop is implemented by setting "low_frequency_rumble" to "0" and "high_frequency_rumble" ">0" + * Rumble is both at any arbitrary value, + * StopHard is implemented by setting both "low_frequency_rumble" and "high_frequency_rumble" to "0" + * + * This variable can be set to the following values: + * "0" - Normal rumble behavior is behavior is used (default) + * "1" - Proper GameCube controller rumble behavior is used + * + */ +#define SDL_HINT_JOYSTICK_GAMECUBE_RUMBLE_BRAKE "SDL_JOYSTICK_GAMECUBE_RUMBLE_BRAKE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch Joy-Cons should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOY_CONS "SDL_JOYSTICK_HIDAPI_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be combined into a single Pro-like controller when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be combined and each will be a mini-gamepad + * "1" - Left and right Joy-Con controllers will be combined into a single controller (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_COMBINE_JOY_CONS "SDL_JOYSTICK_HIDAPI_COMBINE_JOY_CONS" + +/** + * \brief A variable controlling whether Nintendo Switch Joy-Con controllers will be in vertical mode when using the HIDAPI driver + * + * This variable can be set to the following values: + * "0" - Left and right Joy-Con controllers will not be in vertical mode (the default) + * "1" - Left and right Joy-Con controllers will be in vertical mode + * + * This hint must be set before calling SDL_Init(SDL_INIT_GAMECONTROLLER) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS "SDL_JOYSTICK_HIDAPI_VERTICAL_JOY_CONS" + +/** + * \brief A variable controlling whether the HIDAPI driver for Amazon Luna controllers connected via Bluetooth should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_LUNA "SDL_JOYSTICK_HIDAPI_LUNA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Online classic controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_NINTENDO_CLASSIC "SDL_JOYSTICK_HIDAPI_NINTENDO_CLASSIC" + +/** + * \brief A variable controlling whether the HIDAPI driver for NVIDIA SHIELD controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SHIELD "SDL_JOYSTICK_HIDAPI_SHIELD" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS3 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI on macOS, and "0" on other platforms. + * + * It is not possible to use this driver on Windows, due to limitations in the default drivers + * installed. See https://github.com/ViGEm/DsHidMini for an alternative driver on Windows. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS3 "SDL_JOYSTICK_HIDAPI_PS3" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS4 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4 "SDL_JOYSTICK_HIDAPI_PS4" + +/** + * \brief A variable controlling whether extended input reports should be used for PS4 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS4 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value will also + * control the state of extended reports on PS5 controllers when the + * SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE hint is not explicitly set. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE "SDL_JOYSTICK_HIDAPI_PS4_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for PS5 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5 "SDL_JOYSTICK_HIDAPI_PS5" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a PS5 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_PLAYER_LED "SDL_JOYSTICK_HIDAPI_PS5_PLAYER_LED" + +/** + * \brief A variable controlling whether extended input reports should be used for PS5 controllers when using the HIDAPI driver. + * + * This variable can be set to the following values: + * "0" - extended reports are not enabled (the default) + * "1" - extended reports + * + * Extended input reports allow rumble on Bluetooth PS5 controllers, but + * break DirectInput handling for applications that don't use SDL. + * + * Once extended reports are enabled, they can not be disabled without + * power cycling the controller. + * + * For compatibility with applications written for versions of SDL prior + * to the introduction of PS5 controller support, this value defaults to + * the value of SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE "SDL_JOYSTICK_HIDAPI_PS5_RUMBLE" + +/** + * \brief A variable controlling whether the HIDAPI driver for Google Stadia controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STADIA "SDL_JOYSTICK_HIDAPI_STADIA" + +/** + * \brief A variable controlling whether the HIDAPI driver for Bluetooth Steam Controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used for Steam Controllers, which requires Bluetooth access + * and may prompt the user for permission on iOS and Android. + * + * The default is "0" + */ +#define SDL_HINT_JOYSTICK_HIDAPI_STEAM "SDL_JOYSTICK_HIDAPI_STEAM" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Switch controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH "SDL_JOYSTICK_HIDAPI_SWITCH" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Pro controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_HOME_LED "SDL_JOYSTICK_HIDAPI_SWITCH_HOME_LED" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when a Nintendo Switch Joy-Con controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_JOYCON_HOME_LED "SDL_JOYSTICK_HIDAPI_JOYCON_HOME_LED" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Nintendo Switch controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED "SDL_JOYSTICK_HIDAPI_SWITCH_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for Nintendo Wii and Wii U controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * This driver doesn't work with the dolphinbar, so the default is SDL_FALSE for now. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII "SDL_JOYSTICK_HIDAPI_WII" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with a Wii controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_WII_PLAYER_LED "SDL_JOYSTICK_HIDAPI_WII_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is "0" on Windows, otherwise the value of SDL_HINT_JOYSTICK_HIDAPI + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX "SDL_JOYSTICK_HIDAPI_XBOX" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 "SDL_JOYSTICK_HIDAPI_XBOX_360" + +/** + * \brief A variable controlling whether the player LEDs should be lit to indicate which player is associated with an Xbox 360 controller. + * + * This variable can be set to the following values: + * "0" - player LEDs are not enabled + * "1" - player LEDs are enabled (the default) + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED "SDL_JOYSTICK_HIDAPI_XBOX_360_PLAYER_LED" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox 360 wireless controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX_360 + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_360_WIRELESS "SDL_JOYSTICK_HIDAPI_XBOX_360_WIRELESS" + +/** + * \brief A variable controlling whether the HIDAPI driver for XBox One controllers should be used. + * + * This variable can be set to the following values: + * "0" - HIDAPI driver is not used + * "1" - HIDAPI driver is used + * + * The default is the value of SDL_HINT_JOYSTICK_HIDAPI_XBOX + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE "SDL_JOYSTICK_HIDAPI_XBOX_ONE" + +/** + * \brief A variable controlling whether the Home button LED should be turned on when an Xbox One controller is opened + * + * This variable can be set to the following values: + * "0" - home button LED is turned off + * "1" - home button LED is turned on + * + * By default the Home button LED state is not changed. This hint can also be set to a floating point value between 0.0 and 1.0 which controls the brightness of the Home button LED. The default brightness is 0.4. + */ +#define SDL_HINT_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED "SDL_JOYSTICK_HIDAPI_XBOX_ONE_HOME_LED" + +/** + * \brief A variable controlling whether the RAWINPUT joystick drivers should be used for better handling XInput-capable devices. + * + * This variable can be set to the following values: + * "0" - RAWINPUT drivers are not used + * "1" - RAWINPUT drivers are used (the default) + */ +#define SDL_HINT_JOYSTICK_RAWINPUT "SDL_JOYSTICK_RAWINPUT" + +/** + * \brief A variable controlling whether the RAWINPUT driver should pull correlated data from XInput. + * + * This variable can be set to the following values: + * "0" - RAWINPUT driver will only use data from raw input APIs + * "1" - RAWINPUT driver will also pull data from XInput, providing + * better trigger axes, guide button presses, and rumble support + * for Xbox controllers + * + * The default is "1". This hint applies to any joysticks opened after setting the hint. + */ +#define SDL_HINT_JOYSTICK_RAWINPUT_CORRELATE_XINPUT "SDL_JOYSTICK_RAWINPUT_CORRELATE_XINPUT" + +/** + * \brief A variable controlling whether the ROG Chakram mice should show up as joysticks + * + * This variable can be set to the following values: + * "0" - ROG Chakram mice do not show up as joysticks (the default) + * "1" - ROG Chakram mice show up as joysticks + */ +#define SDL_HINT_JOYSTICK_ROG_CHAKRAM "SDL_JOYSTICK_ROG_CHAKRAM" + +/** + * \brief A variable controlling whether a separate thread should be used + * for handling joystick detection and raw input messages on Windows + * + * This variable can be set to the following values: + * "0" - A separate thread is not used (the default) + * "1" - A separate thread is used for handling raw input messages + * + */ +#define SDL_HINT_JOYSTICK_THREAD "SDL_JOYSTICK_THREAD" + +/** + * \brief A variable controlling whether Windows.Gaming.Input should be used for controller handling. + * + * This variable can be set to the following values: + * "0" - WGI is not used + * "1" - WGI is used (the default) + */ +#define SDL_HINT_JOYSTICK_WGI "SDL_JOYSTICK_WGI" + +/** + * \brief Determines whether SDL enforces that DRM master is required in order + * to initialize the KMSDRM video backend. + * + * The DRM subsystem has a concept of a "DRM master" which is a DRM client that + * has the ability to set planes, set cursor, etc. When SDL is DRM master, it + * can draw to the screen using the SDL rendering APIs. Without DRM master, SDL + * is still able to process input and query attributes of attached displays, + * but it cannot change display state or draw to the screen directly. + * + * In some cases, it can be useful to have the KMSDRM backend even if it cannot + * be used for rendering. An app may want to use SDL for input processing while + * using another rendering API (such as an MMAL overlay on Raspberry Pi) or + * using its own code to render to DRM overlays that SDL doesn't support. + * + * This hint must be set before initializing the video subsystem. + * + * This variable can be set to the following values: + * "0" - SDL will allow usage of the KMSDRM backend without DRM master + * "1" - SDL Will require DRM master to use the KMSDRM backend (default) + */ +#define SDL_HINT_KMSDRM_REQUIRE_DRM_MASTER "SDL_KMSDRM_REQUIRE_DRM_MASTER" + +/** + * \brief A comma separated list of devices to open as joysticks + * + * This variable is currently only used by the Linux joystick driver. + */ +#define SDL_HINT_JOYSTICK_DEVICE "SDL_JOYSTICK_DEVICE" + +/** + * \brief A variable controlling whether joysticks on Linux will always treat 'hat' axis inputs (ABS_HAT0X - ABS_HAT3Y) as 8-way digital hats without checking whether they may be analog. + * + * This variable can be set to the following values: + * "0" - Only map hat axis inputs to digital hat outputs if the input axes appear to actually be digital (the default) + * "1" - Always handle the input axes numbered ABS_HAT0X to ABS_HAT3Y as digital hats + */ +#define SDL_HINT_LINUX_DIGITAL_HATS "SDL_LINUX_DIGITAL_HATS" + +/** + * \brief A variable controlling whether digital hats on Linux will apply deadzones to their underlying input axes or use unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return digital hat values based on unfiltered input axis values + * "1" - Return digital hat values with deadzones on the input axes taken into account (the default) + */ +#define SDL_HINT_LINUX_HAT_DEADZONES "SDL_LINUX_HAT_DEADZONES" + +/** + * \brief A variable controlling whether to use the classic /dev/input/js* joystick interface or the newer /dev/input/event* joystick interface on Linux + * + * This variable can be set to the following values: + * "0" - Use /dev/input/event* + * "1" - Use /dev/input/js* + * + * By default the /dev/input/event* interfaces are used + */ +#define SDL_HINT_LINUX_JOYSTICK_CLASSIC "SDL_LINUX_JOYSTICK_CLASSIC" + +/** + * \brief A variable controlling whether joysticks on Linux adhere to their HID-defined deadzones or return unfiltered values. + * + * This variable can be set to the following values: + * "0" - Return unfiltered joystick axis values (the default) + * "1" - Return axis values with deadzones taken into account + */ +#define SDL_HINT_LINUX_JOYSTICK_DEADZONES "SDL_LINUX_JOYSTICK_DEADZONES" + +/** +* \brief When set don't force the SDL app to become a foreground process +* +* This hint only applies to Mac OS X. +* +*/ +#define SDL_HINT_MAC_BACKGROUND_APP "SDL_MAC_BACKGROUND_APP" + +/** + * \brief A variable that determines whether ctrl+click should generate a right-click event on Mac + * + * If present, holding ctrl while left clicking will generate a right click + * event when on Mac. + */ +#define SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK "SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK" + +/** + * \brief A variable controlling whether dispatching OpenGL context updates should block the dispatching thread until the main thread finishes processing + * + * This variable can be set to the following values: + * "0" - Dispatching OpenGL context updates will block the dispatching thread until the main thread finishes processing (default). + * "1" - Dispatching OpenGL context updates will allow the dispatching thread to continue execution. + * + * Generally you want the default, but if you have OpenGL code in a background thread on a Mac, and the main thread + * hangs because it's waiting for that background thread, but that background thread is also hanging because it's + * waiting for the main thread to do an update, this might fix your issue. + * + * This hint only applies to macOS. + * + * This hint is available since SDL 2.24.0. + * + */ +#define SDL_HINT_MAC_OPENGL_ASYNC_DISPATCH "SDL_MAC_OPENGL_ASYNC_DISPATCH" + +/** + * \brief A variable setting the double click radius, in pixels. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_RADIUS "SDL_MOUSE_DOUBLE_CLICK_RADIUS" + +/** + * \brief A variable setting the double click time, in milliseconds. + */ +#define SDL_HINT_MOUSE_DOUBLE_CLICK_TIME "SDL_MOUSE_DOUBLE_CLICK_TIME" + +/** + * \brief Allow mouse click events when clicking to focus an SDL window + * + * This variable can be set to the following values: + * "0" - Ignore mouse clicks that activate a window + * "1" - Generate events for mouse clicks that activate a window + * + * By default SDL will ignore mouse clicks that activate a window + */ +#define SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH "SDL_MOUSE_FOCUS_CLICKTHROUGH" + +/** + * \brief A variable setting the speed scale for mouse motion, in floating point, when the mouse is not in relative mode + */ +#define SDL_HINT_MOUSE_NORMAL_SPEED_SCALE "SDL_MOUSE_NORMAL_SPEED_SCALE" + +/** + * \brief A variable controlling whether relative mouse mode constrains the mouse to the center of the window + * + * This variable can be set to the following values: + * "0" - Relative mouse mode constrains the mouse to the window + * "1" - Relative mouse mode constrains the mouse to the center of the window + * + * Constraining to the center of the window works better for FPS games and when the + * application is running over RDP. Constraining to the whole window works better + * for 2D games and increases the chance that the mouse will be in the correct + * position when using high DPI mice. + * + * By default SDL will constrain the mouse to the center of the window + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_CENTER "SDL_MOUSE_RELATIVE_MODE_CENTER" + +/** + * \brief A variable controlling whether relative mouse mode is implemented using mouse warping + * + * This variable can be set to the following values: + * "0" - Relative mouse mode uses raw input + * "1" - Relative mouse mode uses mouse warping + * + * By default SDL will use raw input for relative mouse mode + */ +#define SDL_HINT_MOUSE_RELATIVE_MODE_WARP "SDL_MOUSE_RELATIVE_MODE_WARP" + +/** + * \brief A variable controlling whether relative mouse motion is affected by renderer scaling + * + * This variable can be set to the following values: + * "0" - Relative motion is unaffected by DPI or renderer's logical size + * "1" - Relative motion is scaled according to DPI scaling and logical size + * + * By default relative mouse deltas are affected by DPI and renderer scaling + */ +#define SDL_HINT_MOUSE_RELATIVE_SCALING "SDL_MOUSE_RELATIVE_SCALING" + +/** + * \brief A variable setting the scale for mouse motion, in floating point, when the mouse is in relative mode + */ +#define SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE "SDL_MOUSE_RELATIVE_SPEED_SCALE" + +/** + * \brief A variable controlling whether the system mouse acceleration curve is used for relative mouse motion. + * + * This variable can be set to the following values: + * "0" - Relative mouse motion will be unscaled (the default) + * "1" - Relative mouse motion will be scaled using the system mouse acceleration curve. + * + * If SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE is set, that will override the system speed scale. + */ +#define SDL_HINT_MOUSE_RELATIVE_SYSTEM_SCALE "SDL_MOUSE_RELATIVE_SYSTEM_SCALE" + +/** + * \brief A variable controlling whether a motion event should be generated for mouse warping in relative mode. + * + * This variable can be set to the following values: + * "0" - Warping the mouse will not generate a motion event in relative mode + * "1" - Warping the mouse will generate a motion event in relative mode + * + * By default warping the mouse will not generate motion events in relative mode. This avoids the application having to filter out large relative motion due to warping. + */ +#define SDL_HINT_MOUSE_RELATIVE_WARP_MOTION "SDL_MOUSE_RELATIVE_WARP_MOTION" + +/** + * \brief A variable controlling whether mouse events should generate synthetic touch events + * + * This variable can be set to the following values: + * "0" - Mouse events will not generate touch events (default for desktop platforms) + * "1" - Mouse events will generate touch events (default for mobile platforms, such as Android and iOS) + */ +#define SDL_HINT_MOUSE_TOUCH_EVENTS "SDL_MOUSE_TOUCH_EVENTS" + +/** + * \brief A variable controlling whether the mouse is captured while mouse buttons are pressed + * + * This variable can be set to the following values: + * "0" - The mouse is not captured while mouse buttons are pressed + * "1" - The mouse is captured while mouse buttons are pressed + * + * By default the mouse is captured while mouse buttons are pressed so if the mouse is dragged + * outside the window, the application continues to receive mouse events until the button is + * released. + */ +#define SDL_HINT_MOUSE_AUTO_CAPTURE "SDL_MOUSE_AUTO_CAPTURE" + +/** + * \brief Tell SDL not to catch the SIGINT or SIGTERM signals. + * + * This hint only applies to Unix-like platforms, and should set before + * any calls to SDL_Init() + * + * The variable can be set to the following values: + * "0" - SDL will install a SIGINT and SIGTERM handler, and when it + * catches a signal, convert it into an SDL_QUIT event. + * "1" - SDL will not install a signal handler at all. + */ +#define SDL_HINT_NO_SIGNAL_HANDLERS "SDL_NO_SIGNAL_HANDLERS" + +/** + * \brief A variable controlling what driver to use for OpenGL ES contexts. + * + * On some platforms, currently Windows and X11, OpenGL drivers may support + * creating contexts with an OpenGL ES profile. By default SDL uses these + * profiles, when available, otherwise it attempts to load an OpenGL ES + * library, e.g. that provided by the ANGLE project. This variable controls + * whether SDL follows this default behaviour or will always load an + * OpenGL ES library. + * + * Circumstances where this is useful include + * - Testing an app with a particular OpenGL ES implementation, e.g ANGLE, + * or emulator, e.g. those from ARM, Imagination or Qualcomm. + * - Resolving OpenGL ES function addresses at link time by linking with + * the OpenGL ES library instead of querying them at run time with + * SDL_GL_GetProcAddress(). + * + * Caution: for an application to work with the default behaviour across + * different OpenGL drivers it must query the OpenGL ES function + * addresses at run time using SDL_GL_GetProcAddress(). + * + * This variable is ignored on most platforms because OpenGL ES is native + * or not supported. + * + * This variable can be set to the following values: + * "0" - Use ES profile of OpenGL, if available. (Default when not set.) + * "1" - Load OpenGL ES library using the default library names. + * + */ +#define SDL_HINT_OPENGL_ES_DRIVER "SDL_OPENGL_ES_DRIVER" + +/** + * \brief A variable controlling which orientations are allowed on iOS/Android. + * + * In some circumstances it is necessary to be able to explicitly control + * which UI orientations are allowed. + * + * This variable is a space delimited list of the following values: + * "LandscapeLeft", "LandscapeRight", "Portrait" "PortraitUpsideDown" + */ +#define SDL_HINT_ORIENTATIONS "SDL_IOS_ORIENTATIONS" + +/** + * \brief A variable controlling the use of a sentinel event when polling the event queue + * + * This variable can be set to the following values: + * "0" - Disable poll sentinels + * "1" - Enable poll sentinels + * + * When polling for events, SDL_PumpEvents is used to gather new events from devices. + * If a device keeps producing new events between calls to SDL_PumpEvents, a poll loop will + * become stuck until the new events stop. + * This is most noticeable when moving a high frequency mouse. + * + * By default, poll sentinels are enabled. + */ +#define SDL_HINT_POLL_SENTINEL "SDL_POLL_SENTINEL" + +/** + * \brief Override for SDL_GetPreferredLocales() + * + * If set, this will be favored over anything the OS might report for the + * user's preferred locales. Changing this hint at runtime will not generate + * a SDL_LOCALECHANGED event (but if you can change the hint, you can push + * your own event, if you want). + * + * The format of this hint is a comma-separated list of language and locale, + * combined with an underscore, as is a common format: "en_GB". Locale is + * optional: "en". So you might have a list like this: "en_GB,jp,es_PT" + */ +#define SDL_HINT_PREFERRED_LOCALES "SDL_PREFERRED_LOCALES" + +/** + * \brief A variable describing the content orientation on QtWayland-based platforms. + * + * On QtWayland platforms, windows are rotated client-side to allow for custom + * transitions. In order to correctly position overlays (e.g. volume bar) and + * gestures (e.g. events view, close/minimize gestures), the system needs to + * know in which orientation the application is currently drawing its contents. + * + * This does not cause the window to be rotated or resized, the application + * needs to take care of drawing the content in the right orientation (the + * framebuffer is always in portrait mode). + * + * This variable can be one of the following values: + * "primary" (default), "portrait", "landscape", "inverted-portrait", "inverted-landscape" + * + * Since SDL 2.0.22 this variable accepts a comma-separated list of values above. + */ +#define SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION "SDL_QTWAYLAND_CONTENT_ORIENTATION" + +/** + * \brief Flags to set on QtWayland windows to integrate with the native window manager. + * + * On QtWayland platforms, this hint controls the flags to set on the windows. + * For example, on Sailfish OS "OverridesSystemGestures" disables swipe gestures. + * + * This variable is a space-separated list of the following values (empty = no flags): + * "OverridesSystemGestures", "StaysOnTop", "BypassWindowManager" + */ +#define SDL_HINT_QTWAYLAND_WINDOW_FLAGS "SDL_QTWAYLAND_WINDOW_FLAGS" + +/** + * \brief A variable controlling whether the 2D render API is compatible or efficient. + * + * This variable can be set to the following values: + * + * "0" - Don't use batching to make rendering more efficient. + * "1" - Use batching, but might cause problems if app makes its own direct OpenGL calls. + * + * Up to SDL 2.0.9, the render API would draw immediately when requested. Now + * it batches up draw requests and sends them all to the GPU only when forced + * to (during SDL_RenderPresent, when changing render targets, by updating a + * texture that the batch needs, etc). This is significantly more efficient, + * but it can cause problems for apps that expect to render on top of the + * render API's output. As such, SDL will disable batching if a specific + * render backend is requested (since this might indicate that the app is + * planning to use the underlying graphics API directly). This hint can + * be used to explicitly request batching in this instance. It is a contract + * that you will either never use the underlying graphics API directly, or + * if you do, you will call SDL_RenderFlush() before you do so any current + * batch goes to the GPU before your work begins. Not following this contract + * will result in undefined behavior. + */ +#define SDL_HINT_RENDER_BATCHING "SDL_RENDER_BATCHING" + +/** + * \brief A variable controlling how the 2D render API renders lines + * + * This variable can be set to the following values: + * "0" - Use the default line drawing method (Bresenham's line algorithm as of SDL 2.0.20) + * "1" - Use the driver point API using Bresenham's line algorithm (correct, draws many points) + * "2" - Use the driver line API (occasionally misses line endpoints based on hardware driver quirks, was the default before 2.0.20) + * "3" - Use the driver geometry API (correct, draws thicker diagonal lines) + * + * This variable should be set when the renderer is created. + */ +#define SDL_HINT_RENDER_LINE_METHOD "SDL_RENDER_LINE_METHOD" + +/** + * \brief A variable controlling whether to enable Direct3D 11+'s Debug Layer. + * + * This variable does not have any effect on the Direct3D 9 based renderer. + * + * This variable can be set to the following values: + * "0" - Disable Debug Layer use + * "1" - Enable Debug Layer use + * + * By default, SDL does not use Direct3D Debug Layer. + */ +#define SDL_HINT_RENDER_DIRECT3D11_DEBUG "SDL_RENDER_DIRECT3D11_DEBUG" + +/** + * \brief A variable controlling whether the Direct3D device is initialized for thread-safe operations. + * + * This variable can be set to the following values: + * "0" - Thread-safety is not enabled (faster) + * "1" - Thread-safety is enabled + * + * By default the Direct3D device is created with thread-safety disabled. + */ +#define SDL_HINT_RENDER_DIRECT3D_THREADSAFE "SDL_RENDER_DIRECT3D_THREADSAFE" + +/** + * \brief A variable specifying which render driver to use. + * + * If the application doesn't pick a specific renderer to use, this variable + * specifies the name of the preferred renderer. If the preferred renderer + * can't be initialized, the normal default renderer is used. + * + * This variable is case insensitive and can be set to the following values: + * "direct3d" + * "direct3d11" + * "direct3d12" + * "opengl" + * "opengles2" + * "opengles" + * "metal" + * "software" + * + * The default varies by platform, but it's the first one in the list that + * is available on the current platform. + */ +#define SDL_HINT_RENDER_DRIVER "SDL_RENDER_DRIVER" + +/** + * \brief A variable controlling the scaling policy for SDL_RenderSetLogicalSize. + * + * This variable can be set to the following values: + * "0" or "letterbox" - Uses letterbox/sidebars to fit the entire rendering on screen + * "1" or "overscan" - Will zoom the rendering so it fills the entire screen, allowing edges to be drawn offscreen + * + * By default letterbox is used + */ +#define SDL_HINT_RENDER_LOGICAL_SIZE_MODE "SDL_RENDER_LOGICAL_SIZE_MODE" + +/** + * \brief A variable controlling whether the OpenGL render driver uses shaders if they are available. + * + * This variable can be set to the following values: + * "0" - Disable shaders + * "1" - Enable shaders + * + * By default shaders are used if OpenGL supports them. + */ +#define SDL_HINT_RENDER_OPENGL_SHADERS "SDL_RENDER_OPENGL_SHADERS" + +/** + * \brief A variable controlling the scaling quality + * + * This variable can be set to the following values: + * "0" or "nearest" - Nearest pixel sampling + * "1" or "linear" - Linear filtering (supported by OpenGL and Direct3D) + * "2" or "best" - Currently this is the same as "linear" + * + * By default nearest pixel sampling is used + */ +#define SDL_HINT_RENDER_SCALE_QUALITY "SDL_RENDER_SCALE_QUALITY" + +/** + * \brief A variable controlling whether updates to the SDL screen surface should be synchronized with the vertical refresh, to avoid tearing. + * + * This variable can be set to the following values: + * "0" - Disable vsync + * "1" - Enable vsync + * + * By default SDL does not sync screen surface updates with vertical refresh. + */ +#define SDL_HINT_RENDER_VSYNC "SDL_RENDER_VSYNC" + +/** + * \brief A variable controlling whether the Metal render driver select low power device over default one + * + * This variable can be set to the following values: + * "0" - Use the prefered OS device + * "1" - Select a low power one + * + * By default the prefered OS device is used. + */ +#define SDL_HINT_RENDER_METAL_PREFER_LOW_POWER_DEVICE "SDL_RENDER_METAL_PREFER_LOW_POWER_DEVICE" + +/** + * \brief A variable controlling if VSYNC is automatically disable if doesn't reach the enough FPS + * + * This variable can be set to the following values: + * "0" - It will be using VSYNC as defined in the main flag. Default + * "1" - If VSYNC was previously enabled, then it will disable VSYNC if doesn't reach enough speed + * + * By default SDL does not enable the automatic VSYNC + */ +#define SDL_HINT_PS2_DYNAMIC_VSYNC "SDL_PS2_DYNAMIC_VSYNC" + +/** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + +/** + * \brief Tell SDL which Dispmanx layer to use on a Raspberry PI + * + * Also known as Z-order. The variable can take a negative or positive value. + * The default is 10000. + */ +#define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" + +/** + * \brief Specify an "activity name" for screensaver inhibition. + * + * Some platforms, notably Linux desktops, list the applications which are + * inhibiting the screensaver or other power-saving features. + * + * This hint lets you specify the "activity name" sent to the OS when + * SDL_DisableScreenSaver() is used (or the screensaver is automatically + * disabled). The contents of this hint are used when the screensaver is + * disabled. You should use a string that describes what your program is doing + * (and, therefore, why the screensaver is disabled). For example, "Playing a + * game" or "Watching a video". + * + * Setting this to "" or leaving it unset will have SDL use a reasonable + * default: "Playing a game" or something similar. + * + * On targets where this is not supported, this hint does nothing. + */ +#define SDL_HINT_SCREENSAVER_INHIBIT_ACTIVITY_NAME "SDL_SCREENSAVER_INHIBIT_ACTIVITY_NAME" + +/** + * \brief Specifies whether SDL_THREAD_PRIORITY_TIME_CRITICAL should be treated as realtime. + * + * On some platforms, like Linux, a realtime priority thread may be subject to restrictions + * that require special handling by the application. This hint exists to let SDL know that + * the app is prepared to handle said restrictions. + * + * On Linux, SDL will apply the following configuration to any thread that becomes realtime: + * * The SCHED_RESET_ON_FORK bit will be set on the scheduling policy, + * * An RLIMIT_RTTIME budget will be configured to the rtkit specified limit. + * * Exceeding this limit will result in the kernel sending SIGKILL to the app, + * * Refer to the man pages for more information. + * + * This variable can be set to the following values: + * "0" - default platform specific behaviour + * "1" - Force SDL_THREAD_PRIORITY_TIME_CRITICAL to a realtime scheduling policy + */ +#define SDL_HINT_THREAD_FORCE_REALTIME_TIME_CRITICAL "SDL_THREAD_FORCE_REALTIME_TIME_CRITICAL" + +/** +* \brief A string specifying additional information to use with SDL_SetThreadPriority. +* +* By default SDL_SetThreadPriority will make appropriate system changes in order to +* apply a thread priority. For example on systems using pthreads the scheduler policy +* is changed automatically to a policy that works well with a given priority. +* Code which has specific requirements can override SDL's default behavior with this hint. +* +* pthread hint values are "current", "other", "fifo" and "rr". +* Currently no other platform hint values are defined but may be in the future. +* +* \note On Linux, the kernel may send SIGKILL to realtime tasks which exceed the distro +* configured execution budget for rtkit. This budget can be queried through RLIMIT_RTTIME +* after calling SDL_SetThreadPriority(). +*/ +#define SDL_HINT_THREAD_PRIORITY_POLICY "SDL_THREAD_PRIORITY_POLICY" + +/** +* \brief A string specifying SDL's threads stack size in bytes or "0" for the backend's default size +* +* Use this hint in case you need to set SDL's threads stack size to other than the default. +* This is specially useful if you build SDL against a non glibc libc library (such as musl) which +* provides a relatively small default thread stack size (a few kilobytes versus the default 8MB glibc uses). +* Support for this hint is currently available only in the pthread, Windows, and PSP backend. +* +* Instead of this hint, in 2.0.9 and later, you can use +* SDL_CreateThreadWithStackSize(). This hint only works with the classic +* SDL_CreateThread(). +*/ +#define SDL_HINT_THREAD_STACK_SIZE "SDL_THREAD_STACK_SIZE" + +/** + * \brief A variable that controls the timer resolution, in milliseconds. + * + * The higher resolution the timer, the more frequently the CPU services + * timer interrupts, and the more precise delays are, but this takes up + * power and CPU time. This hint is only used on Windows. + * + * See this blog post for more information: + * http://randomascii.wordpress.com/2013/07/08/windows-timer-resolution-megawatts-wasted/ + * + * If this variable is set to "0", the system timer resolution is not set. + * + * The default value is "1". This hint may be set at any time. + */ +#define SDL_HINT_TIMER_RESOLUTION "SDL_TIMER_RESOLUTION" + +/** + * \brief A variable controlling whether touch events should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Touch events will not generate mouse events + * "1" - Touch events will generate mouse events + * + * By default SDL will generate mouse events for touch events + */ +#define SDL_HINT_TOUCH_MOUSE_EVENTS "SDL_TOUCH_MOUSE_EVENTS" + +/** + * \brief A variable controlling which touchpad should generate synthetic mouse events + * + * This variable can be set to the following values: + * "0" - Only front touchpad should generate mouse events. Default + * "1" - Only back touchpad should generate mouse events. + * "2" - Both touchpads should generate mouse events. + * + * By default SDL will generate mouse events for all touch devices + */ +#define SDL_HINT_VITA_TOUCH_MOUSE_DEVICE "SDL_HINT_VITA_TOUCH_MOUSE_DEVICE" + +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + +/** + * \brief A variable controlling whether the screensaver is enabled. + * + * This variable can be set to the following values: + * "0" - Disable screensaver + * "1" - Enable screensaver + * + * By default SDL will disable the screensaver. + */ +#define SDL_HINT_VIDEO_ALLOW_SCREENSAVER "SDL_VIDEO_ALLOW_SCREENSAVER" + +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + +/** + * \brief A variable controlling whether the EGL window is allowed to be + * composited as transparent, rather than opaque. + * + * Most window systems will always render windows opaque, even if the surface + * format has an alpha channel. This is not always true, however, so by default + * SDL will try to enforce opaque composition. To override this behavior, you + * can set this hint to "1". + */ +#define SDL_HINT_VIDEO_EGL_ALLOW_TRANSPARENCY "SDL_VIDEO_EGL_ALLOW_TRANSPARENCY" + +/** + * \brief A variable controlling whether the graphics context is externally managed. + * + * This variable can be set to the following values: + * "0" - SDL will manage graphics contexts that are attached to windows. + * "1" - Disable graphics context management on windows. + * + * By default SDL will manage OpenGL contexts in certain situations. For example, on Android the + * context will be automatically saved and restored when pausing the application. Additionally, some + * platforms will assume usage of OpenGL if Vulkan isn't used. Setting this to "1" will prevent this + * behavior, which is desireable when the application manages the graphics context, such as + * an externally managed OpenGL context or attaching a Vulkan surface to the window. + */ +#define SDL_HINT_VIDEO_EXTERNAL_CONTEXT "SDL_VIDEO_EXTERNAL_CONTEXT" + +/** + * \brief If set to 1, then do not allow high-DPI windows. ("Retina" on Mac and iOS) + */ +#define SDL_HINT_VIDEO_HIGHDPI_DISABLED "SDL_VIDEO_HIGHDPI_DISABLED" + +/** + * \brief A variable that dictates policy for fullscreen Spaces on Mac OS X. + * + * This hint only applies to Mac OS X. + * + * The variable can be set to the following values: + * "0" - Disable Spaces support (FULLSCREEN_DESKTOP won't use them and + * SDL_WINDOW_RESIZABLE windows won't offer the "fullscreen" + * button on their titlebars). + * "1" - Enable Spaces support (FULLSCREEN_DESKTOP will use them and + * SDL_WINDOW_RESIZABLE windows will offer the "fullscreen" + * button on their titlebars). + * + * The default value is "1". This hint must be set before any windows are created. + */ +#define SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES "SDL_VIDEO_MAC_FULLSCREEN_SPACES" + +/** + * \brief Minimize your SDL_Window if it loses key focus when in fullscreen mode. Defaults to false. + * \warning Before SDL 2.0.14, this defaulted to true! In 2.0.14, we're + * seeing if "true" causes more problems than it solves in modern times. + * + */ +#define SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS "SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is allowed to be used. + * + * This variable can be set to the following values: + * "0" - libdecor use is disabled. + * "1" - libdecor use is enabled (default). + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_ALLOW_LIBDECOR "SDL_VIDEO_WAYLAND_ALLOW_LIBDECOR" + +/** + * \brief A variable controlling whether the libdecor Wayland backend is preferred over native decrations. + * + * When this hint is set, libdecor will be used to provide window decorations, even if xdg-decoration is + * available. (Note that, by default, libdecor will use xdg-decoration itself if available). + * + * This variable can be set to the following values: + * "0" - libdecor is enabled only if server-side decorations are unavailable. + * "1" - libdecor is always enabled if available. + * + * libdecor is used over xdg-shell when xdg-decoration protocol is unavailable. + */ +#define SDL_HINT_VIDEO_WAYLAND_PREFER_LIBDECOR "SDL_VIDEO_WAYLAND_PREFER_LIBDECOR" + +/** + * \brief A variable controlling whether video mode emulation is enabled under Wayland. + * + * When this hint is set, a standard set of emulated CVT video modes will be exposed for use by the application. + * If it is disabled, the only modes exposed will be the logical desktop size and, in the case of a scaled + * desktop, the native display resolution. + * + * This variable can be set to the following values: + * "0" - Video mode emulation is disabled. + * "1" - Video mode emulation is enabled. + * + * By default video mode emulation is enabled. + */ +#define SDL_HINT_VIDEO_WAYLAND_MODE_EMULATION "SDL_VIDEO_WAYLAND_MODE_EMULATION" + +/** + * \brief Enable or disable mouse pointer warp emulation, needed by some older games. + * + * When this hint is set, any SDL will emulate mouse warps using relative mouse mode. + * This is required for some older games (such as Source engine games), which warp the + * mouse to the centre of the screen rather than using relative mouse motion. Note that + * relative mouse mode may have different mouse acceleration behaviour than pointer warps. + * + * This variable can be set to the following values: + * "0" - All mouse warps fail, as mouse warping is not available under wayland. + * "1" - Some mouse warps will be emulated by forcing relative mouse mode. + * + * If not set, this is automatically enabled unless an application uses relative mouse + * mode directly. + */ +#define SDL_HINT_VIDEO_WAYLAND_EMULATE_MOUSE_WARP "SDL_VIDEO_WAYLAND_EMULATE_MOUSE_WARP" + +/** +* \brief A variable that is the address of another SDL_Window* (as a hex string formatted with "%p"). +* +* If this hint is set before SDL_CreateWindowFrom() and the SDL_Window* it is set to has +* SDL_WINDOW_OPENGL set (and running on WGL only, currently), then two things will occur on the newly +* created SDL_Window: +* +* 1. Its pixel format will be set to the same pixel format as this SDL_Window. This is +* needed for example when sharing an OpenGL context across multiple windows. +* +* 2. The flag SDL_WINDOW_OPENGL will be set on the new window so it can be used for +* OpenGL rendering. +* +* This variable can be set to the following values: +* The address (as a string "%p") of the SDL_Window* that new windows created with SDL_CreateWindowFrom() should +* share a pixel format with. +*/ +#define SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT "SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with OpenGL. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_OPENGL to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with OpenGL. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_OPENGL "SDL_VIDEO_FOREIGN_WINDOW_OPENGL" + +/** + * \brief When calling SDL_CreateWindowFrom(), make the window compatible with Vulkan. + * + * This variable can be set to the following values: + * "0" - Don't add any graphics flags to the SDL_WindowFlags + * "1" - Add SDL_WINDOW_VULKAN to the SDL_WindowFlags + * + * By default SDL will not make the foreign window compatible with Vulkan. + */ +#define SDL_HINT_VIDEO_FOREIGN_WINDOW_VULKAN "SDL_VIDEO_FOREIGN_WINDOW_VULKAN" + +/** +* \brief A variable specifying which shader compiler to preload when using the Chrome ANGLE binaries +* +* SDL has EGL and OpenGL ES2 support on Windows via the ANGLE project. It +* can use two different sets of binaries, those compiled by the user from source +* or those provided by the Chrome browser. In the later case, these binaries require +* that SDL loads a DLL providing the shader compiler. +* +* This variable can be set to the following values: +* "d3dcompiler_46.dll" - default, best for Vista or later. +* "d3dcompiler_43.dll" - for XP support. +* "none" - do not load any library, useful if you compiled ANGLE from source and included the compiler in your binaries. +* +*/ +#define SDL_HINT_VIDEO_WIN_D3DCOMPILER "SDL_VIDEO_WIN_D3DCOMPILER" + +/** + * \brief A variable controlling whether X11 should use GLX or EGL by default + * + * This variable can be set to the following values: + * "0" - Use GLX + * "1" - Use EGL + * + * By default SDL will use GLX when both are present. + */ +#define SDL_HINT_VIDEO_X11_FORCE_EGL "SDL_VIDEO_X11_FORCE_EGL" + +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + +/** + * \brief A variable controlling whether the X11 _NET_WM_PING protocol should be supported. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_PING + * "1" - Enable _NET_WM_PING + * + * By default SDL will use _NET_WM_PING, but for applications that know they + * will not always be able to respond to ping requests in a timely manner they can + * turn it off to avoid the window manager thinking the app is hung. + * The hint is checked in CreateWindow. + */ +#define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" + +/** + * \brief A variable forcing the visual ID chosen for new X11 windows + * + */ +#define SDL_HINT_VIDEO_X11_WINDOW_VISUALID "SDL_VIDEO_X11_WINDOW_VISUALID" + +/** + * \brief A no-longer-used variable controlling whether the X11 Xinerama extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable Xinerama support on X11. + * Now SDL never uses Xinerama, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XINERAMA "SDL_VIDEO_X11_XINERAMA" + +/** + * \brief A variable controlling whether the X11 XRandR extension should be used. + * + * This variable can be set to the following values: + * "0" - Disable XRandR + * "1" - Enable XRandR + * + * By default SDL will use XRandR. + */ +#define SDL_HINT_VIDEO_X11_XRANDR "SDL_VIDEO_X11_XRANDR" + +/** + * \brief A no-longer-used variable controlling whether the X11 VidMode extension should be used. + * + * Before SDL 2.0.24, this would let apps and users disable XVidMode support on X11. + * Now SDL never uses XVidMode, and does not check for this hint at all. + * The preprocessor define is left here for source compatibility. + */ +#define SDL_HINT_VIDEO_X11_XVIDMODE "SDL_VIDEO_X11_XVIDMODE" + +/** + * \brief Controls how the fact chunk affects the loading of a WAVE file. + * + * The fact chunk stores information about the number of samples of a WAVE + * file. The Standards Update from Microsoft notes that this value can be used + * to 'determine the length of the data in seconds'. This is especially useful + * for compressed formats (for which this is a mandatory chunk) if they produce + * multiple sample frames per block and truncating the block is not allowed. + * The fact chunk can exactly specify how many sample frames there should be + * in this case. + * + * Unfortunately, most application seem to ignore the fact chunk and so SDL + * ignores it by default as well. + * + * This variable can be set to the following values: + * + * "truncate" - Use the number of samples to truncate the wave data if + * the fact chunk is present and valid + * "strict" - Like "truncate", but raise an error if the fact chunk + * is invalid, not present for non-PCM formats, or if the + * data chunk doesn't have that many samples + * "ignorezero" - Like "truncate", but ignore fact chunk if the number of + * samples is zero + * "ignore" - Ignore fact chunk entirely (default) + */ +#define SDL_HINT_WAVE_FACT_CHUNK "SDL_WAVE_FACT_CHUNK" + +/** + * \brief Controls how the size of the RIFF chunk affects the loading of a WAVE file. + * + * The size of the RIFF chunk (which includes all the sub-chunks of the WAVE + * file) is not always reliable. In case the size is wrong, it's possible to + * just ignore it and step through the chunks until a fixed limit is reached. + * + * Note that files that have trailing data unrelated to the WAVE file or + * corrupt files may slow down the loading process without a reliable boundary. + * By default, SDL stops after 10000 chunks to prevent wasting time. Use the + * environment variable SDL_WAVE_CHUNK_LIMIT to adjust this value. + * + * This variable can be set to the following values: + * + * "force" - Always use the RIFF chunk size as a boundary for the chunk search + * "ignorezero" - Like "force", but a zero size searches up to 4 GiB (default) + * "ignore" - Ignore the RIFF chunk size and always search up to 4 GiB + * "maximum" - Search for chunks until the end of file (not recommended) + */ +#define SDL_HINT_WAVE_RIFF_CHUNK_SIZE "SDL_WAVE_RIFF_CHUNK_SIZE" + +/** + * \brief Controls how a truncated WAVE file is handled. + * + * A WAVE file is considered truncated if any of the chunks are incomplete or + * the data chunk size is not a multiple of the block size. By default, SDL + * decodes until the first incomplete block, as most applications seem to do. + * + * This variable can be set to the following values: + * + * "verystrict" - Raise an error if the file is truncated + * "strict" - Like "verystrict", but the size of the RIFF chunk is ignored + * "dropframe" - Decode until the first incomplete sample frame + * "dropblock" - Decode until the first incomplete block (default) + */ +#define SDL_HINT_WAVE_TRUNCATION "SDL_WAVE_TRUNCATION" + +/** + * \brief Tell SDL not to name threads on Windows with the 0x406D1388 Exception. + * The 0x406D1388 Exception is a trick used to inform Visual Studio of a + * thread's name, but it tends to cause problems with other debuggers, + * and the .NET runtime. Note that SDL 2.0.6 and later will still use + * the (safer) SetThreadDescription API, introduced in the Windows 10 + * Creators Update, if available. + * + * The variable can be set to the following values: + * "0" - SDL will raise the 0x406D1388 Exception to name threads. + * This is the default behavior of SDL <= 2.0.4. + * "1" - SDL will not raise this exception, and threads will be unnamed. (default) + * This is necessary with .NET languages or debuggers that aren't Visual Studio. + */ +#define SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING "SDL_WINDOWS_DISABLE_THREAD_NAMING" + +/** + * \brief Controls whether menus can be opened with their keyboard shortcut (Alt+mnemonic). + * + * If the mnemonics are enabled, then menus can be opened by pressing the Alt + * key and the corresponding mnemonic (for example, Alt+F opens the File menu). + * However, in case an invalid mnemonic is pressed, Windows makes an audible + * beep to convey that nothing happened. This is true even if the window has + * no menu at all! + * + * Because most SDL applications don't have menus, and some want to use the Alt + * key for other purposes, SDL disables mnemonics (and the beeping) by default. + * + * Note: This also affects keyboard events: with mnemonics enabled, when a + * menu is opened from the keyboard, you will not receive a KEYUP event for + * the mnemonic key, and *might* not receive one for Alt. + * + * This variable can be set to the following values: + * "0" - Alt+mnemonic does nothing, no beeping. (default) + * "1" - Alt+mnemonic opens menus, invalid mnemonics produce a beep. + */ +#define SDL_HINT_WINDOWS_ENABLE_MENU_MNEMONICS "SDL_WINDOWS_ENABLE_MENU_MNEMONICS" + +/** + * \brief A variable controlling whether the windows message loop is processed by SDL + * + * This variable can be set to the following values: + * "0" - The window message loop is not run + * "1" - The window message loop is processed in SDL_PumpEvents() + * + * By default SDL will process the windows message loop + */ +#define SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP "SDL_WINDOWS_ENABLE_MESSAGELOOP" + +/** + * \brief Force SDL to use Critical Sections for mutexes on Windows. + * On Windows 7 and newer, Slim Reader/Writer Locks are available. + * They offer better performance, allocate no kernel ressources and + * use less memory. SDL will fall back to Critical Sections on older + * OS versions or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use SRW Locks when available. If not, fall back to Critical Sections. (default) + * "1" - Force the use of Critical Sections in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS "SDL_WINDOWS_FORCE_MUTEX_CRITICAL_SECTIONS" + +/** + * \brief Force SDL to use Kernel Semaphores on Windows. + * Kernel Semaphores are inter-process and require a context + * switch on every interaction. On Windows 8 and newer, the + * WaitOnAddress API is available. Using that and atomics to + * implement semaphores increases performance. + * SDL will fall back to Kernel Objects on older OS versions + * or if forced to by this hint. + * + * This variable can be set to the following values: + * "0" - Use Atomics and WaitOnAddress API when available. If not, fall back to Kernel Objects. (default) + * "1" - Force the use of Kernel Objects in all cases. + * + */ +#define SDL_HINT_WINDOWS_FORCE_SEMAPHORE_KERNEL "SDL_WINDOWS_FORCE_SEMAPHORE_KERNEL" + +/** + * \brief A variable to specify custom icon resource id from RC file on Windows platform + */ +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON "SDL_WINDOWS_INTRESOURCE_ICON" +#define SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL "SDL_WINDOWS_INTRESOURCE_ICON_SMALL" + +/** + * \brief Tell SDL not to generate window-close events for Alt+F4 on Windows. + * + * The variable can be set to the following values: + * "0" - SDL will generate a window-close event when it sees Alt+F4. + * "1" - SDL will only do normal key handling for Alt+F4. + */ +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" + +/** + * \brief Use the D3D9Ex API introduced in Windows Vista, instead of normal D3D9. + * Direct3D 9Ex contains changes to state management that can eliminate device + * loss errors during scenarios like Alt+Tab or UAC prompts. D3D9Ex may require + * some changes to your application to cope with the new behavior, so this + * is disabled by default. + * + * This hint must be set before initializing the video subsystem. + * + * For more information on Direct3D 9Ex, see: + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/graphics-apis-in-windows-vista#direct3d-9ex + * - https://docs.microsoft.com/en-us/windows/win32/direct3darticles/direct3d-9ex-improvements + * + * This variable can be set to the following values: + * "0" - Use the original Direct3D 9 API (default) + * "1" - Use the Direct3D 9Ex API on Vista and later (and fall back if D3D9Ex is unavailable) + * + */ +#define SDL_HINT_WINDOWS_USE_D3D9EX "SDL_WINDOWS_USE_D3D9EX" + +/** + * \brief Controls whether SDL will declare the process to be DPI aware. + * + * This hint must be set before initializing the video subsystem. + * + * The main purpose of declaring DPI awareness is to disable OS bitmap scaling of SDL windows on monitors with + * a DPI scale factor. + * + * This hint is equivalent to requesting DPI awareness via external means (e.g. calling SetProcessDpiAwarenessContext) + * and does not cause SDL to use a virtualized coordinate system, so it will generally give you 1 SDL coordinate = 1 pixel + * even on high-DPI displays. + * + * For more information, see: + * https://docs.microsoft.com/en-us/windows/win32/hidpi/high-dpi-desktop-application-development-on-windows + * + * This variable can be set to the following values: + * "" - Do not change the DPI awareness (default). + * "unaware" - Declare the process as DPI unaware. (Windows 8.1 and later). + * "system" - Request system DPI awareness. (Vista and later). + * "permonitor" - Request per-monitor DPI awareness. (Windows 8.1 and later). + * "permonitorv2" - Request per-monitor V2 DPI awareness. (Windows 10, version 1607 and later). + * The most visible difference from "permonitor" is that window title bar will be scaled + * to the visually correct size when dragging between monitors with different scale factors. + * This is the preferred DPI awareness level. + * + * If the requested DPI awareness is not available on the currently running OS, SDL will try to request the best + * available match. + */ +#define SDL_HINT_WINDOWS_DPI_AWARENESS "SDL_WINDOWS_DPI_AWARENESS" + +/** + * \brief Uses DPI-scaled points as the SDL coordinate system on Windows. + * + * This changes the SDL coordinate system units to be DPI-scaled points, rather than pixels everywhere. + * This means windows will be appropriately sized, even when created on high-DPI displays with scaling. + * + * e.g. requesting a 640x480 window from SDL, on a display with 125% scaling in Windows display settings, + * will create a window with an 800x600 client area (in pixels). + * + * Setting this to "1" implicitly requests process DPI awareness (setting SDL_WINDOWS_DPI_AWARENESS is unnecessary), + * and forces SDL_WINDOW_ALLOW_HIGHDPI on all windows. + * + * This variable can be set to the following values: + * "0" - SDL coordinates equal Windows coordinates. No automatic window resizing when dragging + * between monitors with different scale factors (unless this is performed by + * Windows itself, which is the case when the process is DPI unaware). + * "1" - SDL coordinates are in DPI-scaled points. Automatically resize windows as needed on + * displays with non-100% scale factors. + */ +#define SDL_HINT_WINDOWS_DPI_SCALING "SDL_WINDOWS_DPI_SCALING" + +/** + * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden + * + * This variable can be set to the following values: + * "0" - The window frame is not interactive when the cursor is hidden (no move, resize, etc) + * "1" - The window frame is interactive when the cursor is hidden + * + * By default SDL will allow interaction with the window frame when the cursor is hidden + */ +#define SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN "SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN" + +/** +* \brief A variable controlling whether the window is activated when the SDL_ShowWindow function is called +* +* This variable can be set to the following values: +* "0" - The window is activated when the SDL_ShowWindow function is called +* "1" - The window is not activated when the SDL_ShowWindow function is called +* +* By default SDL will activate the window when the SDL_ShowWindow function is called +*/ +#define SDL_HINT_WINDOW_NO_ACTIVATION_WHEN_SHOWN "SDL_WINDOW_NO_ACTIVATION_WHEN_SHOWN" + +/** \brief Allows back-button-press events on Windows Phone to be marked as handled + * + * Windows Phone devices typically feature a Back button. When pressed, + * the OS will emit back-button-press events, which apps are expected to + * handle in an appropriate manner. If apps do not explicitly mark these + * events as 'Handled', then the OS will invoke its default behavior for + * unhandled back-button-press events, which on Windows Phone 8 and 8.1 is to + * terminate the app (and attempt to switch to the previous app, or to the + * device's home screen). + * + * Setting the SDL_HINT_WINRT_HANDLE_BACK_BUTTON hint to "1" will cause SDL + * to mark back-button-press events as Handled, if and when one is sent to + * the app. + * + * Internally, Windows Phone sends back button events as parameters to + * special back-button-press callback functions. Apps that need to respond + * to back-button-press events are expected to register one or more + * callback functions for such, shortly after being launched (during the + * app's initialization phase). After the back button is pressed, the OS + * will invoke these callbacks. If the app's callback(s) do not explicitly + * mark the event as handled by the time they return, or if the app never + * registers one of these callback, the OS will consider the event + * un-handled, and it will apply its default back button behavior (terminate + * the app). + * + * SDL registers its own back-button-press callback with the Windows Phone + * OS. This callback will emit a pair of SDL key-press events (SDL_KEYDOWN + * and SDL_KEYUP), each with a scancode of SDL_SCANCODE_AC_BACK, after which + * it will check the contents of the hint, SDL_HINT_WINRT_HANDLE_BACK_BUTTON. + * If the hint's value is set to "1", the back button event's Handled + * property will get set to 'true'. If the hint's value is set to something + * else, or if it is unset, SDL will leave the event's Handled property + * alone. (By default, the OS sets this property to 'false', to note.) + * + * SDL apps can either set SDL_HINT_WINRT_HANDLE_BACK_BUTTON well before a + * back button is pressed, or can set it in direct-response to a back button + * being pressed. + * + * In order to get notified when a back button is pressed, SDL apps should + * register a callback function with SDL_AddEventWatch(), and have it listen + * for SDL_KEYDOWN events that have a scancode of SDL_SCANCODE_AC_BACK. + * (Alternatively, SDL_KEYUP events can be listened-for. Listening for + * either event type is suitable.) Any value of SDL_HINT_WINRT_HANDLE_BACK_BUTTON + * set by such a callback, will be applied to the OS' current + * back-button-press event. + * + * More details on back button behavior in Windows Phone apps can be found + * at the following page, on Microsoft's developer site: + * http://msdn.microsoft.com/en-us/library/windowsphone/develop/jj247550(v=vs.105).aspx + */ +#define SDL_HINT_WINRT_HANDLE_BACK_BUTTON "SDL_WINRT_HANDLE_BACK_BUTTON" + +/** \brief Label text for a WinRT app's privacy policy link + * + * Network-enabled WinRT apps must include a privacy policy. On Windows 8, 8.1, and RT, + * Microsoft mandates that this policy be available via the Windows Settings charm. + * SDL provides code to add a link there, with its label text being set via the + * optional hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that a privacy policy's contents are not set via this hint. A separate + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_URL, is used to link to the actual text of the + * policy. + * + * The contents of this hint should be encoded as a UTF8 string. + * + * The default value is "Privacy Policy". This hint should only be set during app + * initialization, preferably before any calls to SDL_Init(). + * + * For additional information on linking to a privacy policy, see the documentation for + * SDL_HINT_WINRT_PRIVACY_POLICY_URL. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_LABEL "SDL_WINRT_PRIVACY_POLICY_LABEL" + +/** + * \brief A URL to a WinRT app's privacy policy + * + * All network-enabled WinRT apps must make a privacy policy available to its + * users. On Windows 8, 8.1, and RT, Microsoft mandates that this policy be + * be available in the Windows Settings charm, as accessed from within the app. + * SDL provides code to add a URL-based link there, which can point to the app's + * privacy policy. + * + * To setup a URL to an app's privacy policy, set SDL_HINT_WINRT_PRIVACY_POLICY_URL + * before calling any SDL_Init() functions. The contents of the hint should + * be a valid URL. For example, "http://www.example.com". + * + * The default value is "", which will prevent SDL from adding a privacy policy + * link to the Settings charm. This hint should only be set during app init. + * + * The label text of an app's "Privacy Policy" link may be customized via another + * hint, SDL_HINT_WINRT_PRIVACY_POLICY_LABEL. + * + * Please note that on Windows Phone, Microsoft does not provide standard UI + * for displaying a privacy policy link, and as such, SDL_HINT_WINRT_PRIVACY_POLICY_URL + * will not get used on that platform. Network-enabled phone apps should display + * their privacy policy through some other, in-app means. + */ +#define SDL_HINT_WINRT_PRIVACY_POLICY_URL "SDL_WINRT_PRIVACY_POLICY_URL" + +/** + * \brief Mark X11 windows as override-redirect. + * + * If set, this _might_ increase framerate at the expense of the desktop + * not working as expected. Override-redirect windows aren't noticed by the + * window manager at all. + * + * You should probably only use this for fullscreen windows, and you probably + * shouldn't even use it for that. But it's here if you want to try! + */ +#define SDL_HINT_X11_FORCE_OVERRIDE_REDIRECT "SDL_X11_FORCE_OVERRIDE_REDIRECT" + +/** + * \brief A variable that lets you disable the detection and use of Xinput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable XInput detection (only uses direct input) + * "1" - Enable XInput detection (the default) + */ +#define SDL_HINT_XINPUT_ENABLED "SDL_XINPUT_ENABLED" + + /** + * \brief A variable that lets you disable the detection and use of DirectInput gamepad devices + * + * The variable can be set to the following values: + * "0" - Disable DirectInput detection (only uses XInput) + * "1" - Enable DirectInput detection (the default) + */ +#define SDL_HINT_DIRECTINPUT_ENABLED "SDL_DIRECTINPUT_ENABLED" + +/** + * \brief A variable that causes SDL to use the old axis and button mapping for XInput devices. + * + * This hint is for backwards compatibility only and will be removed in SDL 2.1 + * + * The default value is "0". This hint must be set before SDL_Init() + */ +#define SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING "SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING" + +/** + * \brief A variable that causes SDL to not ignore audio "monitors" + * + * This is currently only used for PulseAudio and ignored elsewhere. + * + * By default, SDL ignores audio devices that aren't associated with physical + * hardware. Changing this hint to "1" will expose anything SDL sees that + * appears to be an audio source or sink. This will add "devices" to the list + * that the user probably doesn't want or need, but it can be useful in + * scenarios where you want to hook up SDL to some sort of virtual device, + * etc. + * + * The default value is "0". This hint must be set before SDL_Init(). + * + * This hint is available since SDL 2.0.16. Before then, virtual devices are + * always ignored. + */ +#define SDL_HINT_AUDIO_INCLUDE_MONITORS "SDL_AUDIO_INCLUDE_MONITORS" + +/** + * \brief A variable that forces X11 windows to create as a custom type. + * + * This is currently only used for X11 and ignored elsewhere. + * + * During SDL_CreateWindow, SDL uses the _NET_WM_WINDOW_TYPE X11 property + * to report to the window manager the type of window it wants to create. + * This might be set to various things if SDL_WINDOW_TOOLTIP or + * SDL_WINDOW_POPUP_MENU, etc, were specified. For "normal" windows that + * haven't set a specific type, this hint can be used to specify a custom + * type. For example, a dock window might set this to + * "_NET_WM_WINDOW_TYPE_DOCK". + * + * If not set or set to "", this hint is ignored. This hint must be set + * before the SDL_CreateWindow() call that it is intended to affect. + * + * This hint is available since SDL 2.0.22. + */ +#define SDL_HINT_X11_WINDOW_TYPE "SDL_X11_WINDOW_TYPE" + +/** + * \brief A variable that decides whether to send SDL_QUIT when closing the final window. + * + * By default, SDL sends an SDL_QUIT event when there is only one window + * and it receives an SDL_WINDOWEVENT_CLOSE event, under the assumption most + * apps would also take the loss of this window as a signal to terminate the + * program. + * + * However, it's not unreasonable in some cases to have the program continue + * to live on, perhaps to create new windows later. + * + * Changing this hint to "0" will cause SDL to not send an SDL_QUIT event + * when the final window is requesting to close. Note that in this case, + * there are still other legitimate reasons one might get an SDL_QUIT + * event: choosing "Quit" from the macOS menu bar, sending a SIGINT (ctrl-c) + * on Unix, etc. + * + * The default value is "1". This hint can be changed at any time. + * + * This hint is available since SDL 2.0.22. Before then, you always get + * an SDL_QUIT event when closing the final window. + */ +#define SDL_HINT_QUIT_ON_LAST_WINDOW_CLOSE "SDL_QUIT_ON_LAST_WINDOW_CLOSE" + + +/** + * \brief A variable that decides what video backend to use. + * + * By default, SDL will try all available video backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "x11" if, say, you are + * on Wayland but want to try talking to the X server instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best video backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_VIDEODRIVER "SDL_VIDEODRIVER" + +/** + * \brief A variable that decides what audio backend to use. + * + * By default, SDL will try all available audio backends in a reasonable + * order until it finds one that can work, but this hint allows the app + * or user to force a specific target, such as "alsa" if, say, you are + * on PulseAudio but want to try talking to the lower level instead. + * + * This functionality has existed since SDL 2.0.0 (indeed, before that) + * but before 2.0.22 this was an environment variable only. In 2.0.22, + * it was upgraded to a full SDL hint, so you can set the environment + * variable as usual or programatically set the hint with SDL_SetHint, + * which won't propagate to child processes. + * + * The default value is unset, in which case SDL will try to figure out + * the best audio backend on your behalf. This hint needs to be set + * before SDL_Init() is called to be useful. + * + * This hint is available since SDL 2.0.22. Before then, you could set + * the environment variable to get the same effect. + */ +#define SDL_HINT_AUDIODRIVER "SDL_AUDIODRIVER" + +/** + * \brief A variable that decides what KMSDRM device to use. + * + * Internally, SDL might open something like "/dev/dri/cardNN" to + * access KMSDRM functionality, where "NN" is a device index number. + * + * SDL makes a guess at the best index to use (usually zero), but the + * app or user can set this hint to a number between 0 and 99 to + * force selection. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_KMSDRM_DEVICE_INDEX "SDL_KMSDRM_DEVICE_INDEX" + + +/** + * \brief A variable that treats trackpads as touch devices. + * + * On macOS (and possibly other platforms in the future), SDL will report + * touches on a trackpad as mouse input, which is generally what users + * expect from this device; however, these are often actually full + * multitouch-capable touch devices, so it might be preferable to some apps + * to treat them as such. + * + * Setting this hint to true will make the trackpad input report as a + * multitouch device instead of a mouse. The default is false. + * + * Note that most platforms don't support this hint. As of 2.24.0, it + * only supports MacBooks' trackpads on macOS. Others may follow later. + * + * This hint is checked during SDL_Init and can not be changed after. + * + * This hint is available since SDL 2.24.0. + */ +#define SDL_HINT_TRACKPAD_IS_TOUCH_ONLY "SDL_TRACKPAD_IS_TOUCH_ONLY" + + +/** + * \brief An enumeration of hint priorities + */ +typedef enum +{ + SDL_HINT_DEFAULT, + SDL_HINT_NORMAL, + SDL_HINT_OVERRIDE +} SDL_HintPriority; + + +/** + * Set a hint with a specific priority. + * + * The priority controls the behavior when setting a hint that already has a + * value. Hints will replace existing hints of their priority and lower. + * Environment variables are considered to have override priority. + * + * \param name the hint to set + * \param value the value of the hint variable + * \param priority the SDL_HintPriority level for the hint + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHintWithPriority(const char *name, + const char *value, + SDL_HintPriority priority); + +/** + * Set a hint with normal priority. + * + * Hints will not be set if there is an existing override hint or environment + * variable that takes precedence. You can use SDL_SetHintWithPriority() to + * set the hint with override priority instead. + * + * \param name the hint to set + * \param value the value of the hint variable + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetHint(const char *name, + const char *value); + +/** + * Reset a hint to the default value. + * + * This will reset a hint to the value of the environment variable, or NULL if + * the environment isn't set. Callbacks will be called normally with this + * change. + * + * \param name the hint to set + * \returns SDL_TRUE if the hint was set, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_ResetHint(const char *name); + +/** + * Reset all hints to the default values. + * + * This will reset all hints to the value of the associated environment + * variable, or NULL if the environment isn't set. Callbacks will be called + * normally with this change. + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + * \sa SDL_ResetHint + */ +extern DECLSPEC void SDLCALL SDL_ResetHints(void); + +/** + * Get the value of a hint. + * + * \param name the hint to query + * \returns the string value of a hint or NULL if the hint isn't set. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetHint + * \sa SDL_SetHintWithPriority + */ +extern DECLSPEC const char * SDLCALL SDL_GetHint(const char *name); + +/** + * Get the boolean value of a hint variable. + * + * \param name the name of the hint to get the boolean value from + * \param default_value the value to return if the hint does not exist + * \returns the boolean value of a hint or the provided default value if the + * hint does not exist. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetHint + * \sa SDL_SetHint + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetHintBoolean(const char *name, SDL_bool default_value); + +/** + * Type definition of the hint callback function. + * + * \param userdata what was passed as `userdata` to SDL_AddHintCallback() + * \param name what was passed as `name` to SDL_AddHintCallback() + * \param oldValue the previous hint value + * \param newValue the new value hint is to be set to + */ +typedef void (SDLCALL *SDL_HintCallback)(void *userdata, const char *name, const char *oldValue, const char *newValue); + +/** + * Add a function to watch a particular hint. + * + * \param name the hint to watch + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer to pass to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DelHintCallback + */ +extern DECLSPEC void SDLCALL SDL_AddHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Remove a function watching a particular hint. + * + * \param name the hint being watched + * \param callback An SDL_HintCallback function that will be called when the + * hint value changes + * \param userdata a pointer being passed to the callback function + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddHintCallback + */ +extern DECLSPEC void SDLCALL SDL_DelHintCallback(const char *name, + SDL_HintCallback callback, + void *userdata); + +/** + * Clear all hints. + * + * This function is automatically called during SDL_Quit(), and deletes all + * callbacks without calling them and frees all memory associated with hints. + * If you're calling this from application code you probably want to call + * SDL_ResetHints() instead. + * + * This function will be removed from the API the next time we rev the ABI. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ResetHints + */ +extern DECLSPEC void SDLCALL SDL_ClearHints(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_hints_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_joystick.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_joystick.h new file mode 100644 index 0000000..8c05fdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_joystick.h @@ -0,0 +1,1069 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_joystick.h + * + * Include file for SDL joystick event handling + * + * The term "device_index" identifies currently plugged in joystick devices between 0 and SDL_NumJoysticks(), with the exact joystick + * behind a device_index changing as joysticks are plugged and unplugged. + * + * The term "instance_id" is the current instantiation of a joystick device in the system, if the joystick is removed and then re-inserted + * then it will get a new instance_id, instance_id's are monotonically increasing identifiers of a joystick plugged in. + * + * The term "player_index" is the number assigned to a player on a specific + * controller. For XInput controllers this returns the XInput user index. + * Many joysticks will not be able to supply this information. + * + * The term JoystickGUID is a stable 128-bit identifier for a joystick device that does not change over time, it identifies class of + * the device (a X360 wired controller for example). This identifier is platform dependent. + */ + +#ifndef SDL_joystick_h_ +#define SDL_joystick_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \file SDL_joystick.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_JOYSTICK flag. This causes SDL to scan the system + * for joysticks, and load appropriate drivers. + * + * If you would like to receive joystick updates while the application + * is in the background, you should set the following hint before calling + * SDL_Init(): SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS + */ + +/** + * The joystick structure used to identify an SDL joystick + */ +#ifdef SDL_THREAD_SAFETY_ANALYSIS +extern SDL_mutex *SDL_joystick_lock; +#endif +struct _SDL_Joystick; +typedef struct _SDL_Joystick SDL_Joystick; + +/* A structure that encodes the stable unique id for a joystick device */ +typedef SDL_GUID SDL_JoystickGUID; + +/** + * This is a unique ID for a joystick for the time it is connected to the system, + * and is never reused for the lifetime of the application. If the joystick is + * disconnected and reconnected, it will get a new ID. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_JoystickID; + +typedef enum +{ + SDL_JOYSTICK_TYPE_UNKNOWN, + SDL_JOYSTICK_TYPE_GAMECONTROLLER, + SDL_JOYSTICK_TYPE_WHEEL, + SDL_JOYSTICK_TYPE_ARCADE_STICK, + SDL_JOYSTICK_TYPE_FLIGHT_STICK, + SDL_JOYSTICK_TYPE_DANCE_PAD, + SDL_JOYSTICK_TYPE_GUITAR, + SDL_JOYSTICK_TYPE_DRUM_KIT, + SDL_JOYSTICK_TYPE_ARCADE_PAD, + SDL_JOYSTICK_TYPE_THROTTLE +} SDL_JoystickType; + +typedef enum +{ + SDL_JOYSTICK_POWER_UNKNOWN = -1, + SDL_JOYSTICK_POWER_EMPTY, /* <= 5% */ + SDL_JOYSTICK_POWER_LOW, /* <= 20% */ + SDL_JOYSTICK_POWER_MEDIUM, /* <= 70% */ + SDL_JOYSTICK_POWER_FULL, /* <= 100% */ + SDL_JOYSTICK_POWER_WIRED, + SDL_JOYSTICK_POWER_MAX +} SDL_JoystickPowerLevel; + +/* Set max recognized G-force from accelerometer + See src/joystick/uikit/SDL_sysjoystick.m for notes on why this is needed + */ +#define SDL_IPHONE_MAX_GFORCE 5.0 + + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * As of SDL 2.26.0, you can take the joystick lock around reinitializing the + * joystick subsystem, to prevent other threads from seeing joysticks in an + * uninitialized state. However, all open joysticks will be closed and SDL + * functions called with them will fail. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void) SDL_ACQUIRE(SDL_joystick_lock); + + +/** + * Unlocking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void) SDL_RELEASE(SDL_joystick_lock); + +/** + * Count the number of joysticks attached to the system. + * + * \returns the number of attached joysticks on success or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_NumJoysticks(void); + +/** + * Get the implementation dependent name of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickName + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickNameForIndex(int device_index); + +/** + * Get the implementation dependent path of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system) + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPath + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPathForIndex(int device_index); + +/** + * Get the player index of a joystick, or -1 if it's not available This can be + * called before any joysticks are opened. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetDevicePlayerIndex(int device_index); + +/** + * Get the implementation-dependent GUID for the joystick at a given device + * index. + * + * This function can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the GUID of the selected joystick. If called on an invalid index, + * this function returns a zero GUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetDeviceGUID(int device_index); + +/** + * Get the USB vendor ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the vendor ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB vendor ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceVendor(int device_index); + +/** + * Get the USB product ID of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product ID isn't + * available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the USB product ID of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProduct(int device_index); + +/** + * Get the product version of a joystick, if available. + * + * This can be called before any joysticks are opened. If the product version + * isn't available this function returns 0. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the product version of the selected joystick. If called on an + * invalid index, this function returns zero + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetDeviceProductVersion(int device_index); + +/** + * Get the type of a joystick, if available. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the SDL_JoystickType of the selected joystick. If called on an + * invalid index, this function returns `SDL_JOYSTICK_TYPE_UNKNOWN` + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetDeviceType(int device_index); + +/** + * Get the instance ID of a joystick. + * + * This can be called before any joysticks are opened. + * + * \param device_index the index of the joystick to query (the N'th joystick + * on the system + * \returns the instance id of the selected joystick. If called on an invalid + * index, this function returns -1. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickGetDeviceInstanceID(int device_index); + +/** + * Open a joystick for use. + * + * The `device_index` argument refers to the N'th joystick presently + * recognized by SDL on the system. It is **NOT** the same as the instance ID + * used to identify the joystick in future events. See + * SDL_JoystickInstanceID() for more details about instance IDs. + * + * The joystick subsystem must be initialized before a joystick can be opened + * for use. + * + * \param device_index the index of the joystick to query + * \returns a joystick identifier or NULL if an error occurred; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickInstanceID + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickOpen(int device_index); + +/** + * Get the SDL_Joystick associated with an instance id. + * + * \param instance_id the instance id to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromInstanceID(SDL_JoystickID instance_id); + +/** + * Get the SDL_Joystick associated with a player index. + * + * \param player_index the player index to get the SDL_Joystick for + * \returns an SDL_Joystick on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC SDL_Joystick *SDLCALL SDL_JoystickFromPlayerIndex(int player_index); + +/** + * Attach a new virtual joystick. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtual(SDL_JoystickType type, + int naxes, + int nbuttons, + int nhats); + +/** + * The structure that defines an extended virtual joystick description + * + * The caller must zero the structure and then initialize the version with `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` before passing it to SDL_JoystickAttachVirtualEx() + * All other elements of this structure are optional and can be left 0. + * + * \sa SDL_JoystickAttachVirtualEx + */ +typedef struct SDL_VirtualJoystickDesc +{ + Uint16 version; /**< `SDL_VIRTUAL_JOYSTICK_DESC_VERSION` */ + Uint16 type; /**< `SDL_JoystickType` */ + Uint16 naxes; /**< the number of axes on this joystick */ + Uint16 nbuttons; /**< the number of buttons on this joystick */ + Uint16 nhats; /**< the number of hats on this joystick */ + Uint16 vendor_id; /**< the USB vendor ID of this joystick */ + Uint16 product_id; /**< the USB product ID of this joystick */ + Uint16 padding; /**< unused */ + Uint32 button_mask; /**< A mask of which buttons are valid for this controller + e.g. (1 << SDL_CONTROLLER_BUTTON_A) */ + Uint32 axis_mask; /**< A mask of which axes are valid for this controller + e.g. (1 << SDL_CONTROLLER_AXIS_LEFTX) */ + const char *name; /**< the name of the joystick */ + + void *userdata; /**< User data pointer passed to callbacks */ + void (SDLCALL *Update)(void *userdata); /**< Called when the joystick state should be updated */ + void (SDLCALL *SetPlayerIndex)(void *userdata, int player_index); /**< Called when the player index is set */ + int (SDLCALL *Rumble)(void *userdata, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble); /**< Implements SDL_JoystickRumble() */ + int (SDLCALL *RumbleTriggers)(void *userdata, Uint16 left_rumble, Uint16 right_rumble); /**< Implements SDL_JoystickRumbleTriggers() */ + int (SDLCALL *SetLED)(void *userdata, Uint8 red, Uint8 green, Uint8 blue); /**< Implements SDL_JoystickSetLED() */ + int (SDLCALL *SendEffect)(void *userdata, const void *data, int size); /**< Implements SDL_JoystickSendEffect() */ + +} SDL_VirtualJoystickDesc; + +/** + * \brief The current version of the SDL_VirtualJoystickDesc structure + */ +#define SDL_VIRTUAL_JOYSTICK_DESC_VERSION 1 + +/** + * Attach a new virtual joystick with extended properties. + * + * \returns the joystick's device index, or -1 if an error occurred. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_JoystickAttachVirtualEx(const SDL_VirtualJoystickDesc *desc); + +/** + * Detach a virtual joystick. + * + * \param device_index a value previously returned from + * SDL_JoystickAttachVirtual() + * \returns 0 on success, or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickDetachVirtual(int device_index); + +/** + * Query whether or not the joystick at a given device index is virtual. + * + * \param device_index a joystick device index. + * \returns SDL_TRUE if the joystick is virtual, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickIsVirtual(int device_index); + +/** + * Set values on an opened, virtual-joystick's axis. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * Note that when sending trigger axes, you should scale the value to the full + * range of Sint16. For example, a trigger at rest would have the value of + * `SDL_JOYSTICK_AXIS_MIN`. + * + * \param joystick the virtual joystick on which to set state. + * \param axis the specific axis on the virtual joystick to set. + * \param value the new value for the specified axis. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualAxis(SDL_Joystick *joystick, int axis, Sint16 value); + +/** + * Set values on an opened, virtual-joystick's button. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param button the specific button on the virtual joystick to set. + * \param value the new value for the specified button. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualButton(SDL_Joystick *joystick, int button, Uint8 value); + +/** + * Set values on an opened, virtual-joystick's hat. + * + * Please note that values set here will not be applied until the next call to + * SDL_JoystickUpdate, which can either be called directly, or can be called + * indirectly through various other SDL APIs, including, but not limited to + * the following: SDL_PollEvent, SDL_PumpEvents, SDL_WaitEventTimeout, + * SDL_WaitEvent. + * + * \param joystick the virtual joystick on which to set state. + * \param hat the specific hat on the virtual joystick to set. + * \param value the new value for the specified hat. + * \returns 0 on success, -1 on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetVirtualHat(SDL_Joystick *joystick, int hat, Uint8 value); + +/** + * Get the implementation dependent name of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the name of the selected joystick. If no name can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNameForIndex + * \sa SDL_JoystickOpen + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickName(SDL_Joystick *joystick); + +/** + * Get the implementation dependent path of a joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the path of the selected joystick. If no path can be found, this + * function returns NULL; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_JoystickPathForIndex + */ +extern DECLSPEC const char *SDLCALL SDL_JoystickPath(SDL_Joystick *joystick); + +/** + * Get the player index of an opened joystick. + * + * For XInput controllers this returns the XInput user index. Many joysticks + * will not be able to supply this information. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the player index, or -1 if it's not available. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetPlayerIndex(SDL_Joystick *joystick); + +/** + * Set the player index of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \param player_index Player index to assign to this joystick, or -1 to clear + * the player index and turn off player LEDs. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC void SDLCALL SDL_JoystickSetPlayerIndex(SDL_Joystick *joystick, int player_index); + +/** + * Get the implementation-dependent GUID for the joystick. + * + * This function requires an open joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the GUID of the given joystick. If called on an invalid index, + * this function returns a zero GUID; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUID(SDL_Joystick *joystick); + +/** + * Get the USB vendor ID of an opened joystick, if available. + * + * If the vendor ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB vendor ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetVendor(SDL_Joystick *joystick); + +/** + * Get the USB product ID of an opened joystick, if available. + * + * If the product ID isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the USB product ID of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProduct(SDL_Joystick *joystick); + +/** + * Get the product version of an opened joystick, if available. + * + * If the product version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the product version of the selected joystick, or 0 if unavailable. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetProductVersion(SDL_Joystick *joystick); + +/** + * Get the firmware version of an opened joystick, if available. + * + * If the firmware version isn't available this function returns 0. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the firmware version of the selected joystick, or 0 if + * unavailable. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC Uint16 SDLCALL SDL_JoystickGetFirmwareVersion(SDL_Joystick *joystick); + +/** + * Get the serial number of an opened joystick, if available. + * + * Returns the serial number of the joystick, or NULL if it is not available. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the serial number of the selected joystick, or NULL if + * unavailable. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC const char * SDLCALL SDL_JoystickGetSerial(SDL_Joystick *joystick); + +/** + * Get the type of an opened joystick. + * + * \param joystick the SDL_Joystick obtained from SDL_JoystickOpen() + * \returns the SDL_JoystickType of the selected joystick. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_JoystickType SDLCALL SDL_JoystickGetType(SDL_Joystick *joystick); + +/** + * Get an ASCII string representation for a given SDL_JoystickGUID. + * + * You should supply at least 33 bytes for pszGUID. + * + * \param guid the SDL_JoystickGUID you wish to convert to string + * \param pszGUID buffer in which to write the ASCII string + * \param cbGUID the size of pszGUID + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetDeviceGUID + * \sa SDL_JoystickGetGUID + * \sa SDL_JoystickGetGUIDFromString + */ +extern DECLSPEC void SDLCALL SDL_JoystickGetGUIDString(SDL_JoystickGUID guid, char *pszGUID, int cbGUID); + +/** + * Convert a GUID string into a SDL_JoystickGUID structure. + * + * Performs no error checking. If this function is given a string containing + * an invalid GUID, the function will silently succeed, but the GUID generated + * will not be useful. + * + * \param pchGUID string containing an ASCII representation of a GUID + * \returns a SDL_JoystickGUID structure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetGUIDString + */ +extern DECLSPEC SDL_JoystickGUID SDLCALL SDL_JoystickGetGUIDFromString(const char *pchGUID); + +/** + * Get the device information encoded in a SDL_JoystickGUID structure + * + * \param guid the SDL_JoystickGUID you wish to get info about + * \param vendor A pointer filled in with the device VID, or 0 if not + * available + * \param product A pointer filled in with the device PID, or 0 if not + * available + * \param version A pointer filled in with the device version, or 0 if not + * available + * \param crc16 A pointer filled in with a CRC used to distinguish different + * products with the same VID/PID, or 0 if not available + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_JoystickGetDeviceGUID + */ +extern DECLSPEC void SDLCALL SDL_GetJoystickGUIDInfo(SDL_JoystickGUID guid, Uint16 *vendor, Uint16 *product, Uint16 *version, Uint16 *crc16); + +/** + * Get the status of a specified joystick. + * + * \param joystick the joystick to query + * \returns SDL_TRUE if the joystick has been opened, SDL_FALSE if it has not; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickClose + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAttached(SDL_Joystick *joystick); + +/** + * Get the instance ID of an opened joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the instance ID of the specified joystick on success or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC SDL_JoystickID SDLCALL SDL_JoystickInstanceID(SDL_Joystick *joystick); + +/** + * Get the number of general axis controls on a joystick. + * + * Often, the directional pad on a game controller will either look like 4 + * separate buttons or a POV hat, and not axes, but all of this is up to the + * device and platform. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of axis controls/number of axes on success or a + * negative error code on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetAxis + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumAxes(SDL_Joystick *joystick); + +/** + * Get the number of trackballs on a joystick. + * + * Joystick trackballs have only relative motion events associated with them + * and their state cannot be polled. + * + * Most joysticks do not have trackballs. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of trackballs on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetBall + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumBalls(SDL_Joystick *joystick); + +/** + * Get the number of POV hats on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of POV hats on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetHat + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumHats(SDL_Joystick *joystick); + +/** + * Get the number of buttons on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \returns the number of buttons on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickGetButton + * \sa SDL_JoystickOpen + */ +extern DECLSPEC int SDLCALL SDL_JoystickNumButtons(SDL_Joystick *joystick); + +/** + * Update the current state of the open joysticks. + * + * This is called automatically by the event loop if any joystick events are + * enabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickEventState + */ +extern DECLSPEC void SDLCALL SDL_JoystickUpdate(void); + +/** + * Enable/disable joystick event polling. + * + * If joystick events are disabled, you must call SDL_JoystickUpdate() + * yourself and manually check the state of the joystick when you want + * joystick information. + * + * It is recommended that you leave joystick event handling enabled. + * + * **WARNING**: Calling this function may delete all events currently in SDL's + * event queue. + * + * \param state can be one of `SDL_QUERY`, `SDL_IGNORE`, or `SDL_ENABLE` + * \returns 1 if enabled, 0 if disabled, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * If `state` is `SDL_QUERY` then the current state is returned, + * otherwise the new processing state is returned. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GameControllerEventState + */ +extern DECLSPEC int SDLCALL SDL_JoystickEventState(int state); + +#define SDL_JOYSTICK_AXIS_MAX 32767 +#define SDL_JOYSTICK_AXIS_MIN -32768 + +/** + * Get the current state of an axis control on a joystick. + * + * SDL makes no promises about what part of the joystick any given axis refers + * to. Your game should have some sort of configuration UI to let users + * specify what each axis should be bound to. Alternately, SDL's higher-level + * Game Controller API makes a great effort to apply order to this lower-level + * interface, so you know that a specific axis is the "left thumb stick," etc. + * + * The value returned by SDL_JoystickGetAxis() is a signed integer (-32768 to + * 32767) representing the current position of the axis. It may be necessary + * to impose certain tolerances on these values to account for jitter. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \returns a 16-bit signed integer representing the current position of the + * axis or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumAxes + */ +extern DECLSPEC Sint16 SDLCALL SDL_JoystickGetAxis(SDL_Joystick *joystick, + int axis); + +/** + * Get the initial state of an axis control on a joystick. + * + * The state is a value ranging from -32768 to 32767. + * + * The axis indices start at index 0. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param axis the axis to query; the axis indices start at index 0 + * \param state Upon return, the initial value is supplied here. + * \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickGetAxisInitialState(SDL_Joystick *joystick, + int axis, Sint16 *state); + +/** + * \name Hat positions + */ +/* @{ */ +#define SDL_HAT_CENTERED 0x00 +#define SDL_HAT_UP 0x01 +#define SDL_HAT_RIGHT 0x02 +#define SDL_HAT_DOWN 0x04 +#define SDL_HAT_LEFT 0x08 +#define SDL_HAT_RIGHTUP (SDL_HAT_RIGHT|SDL_HAT_UP) +#define SDL_HAT_RIGHTDOWN (SDL_HAT_RIGHT|SDL_HAT_DOWN) +#define SDL_HAT_LEFTUP (SDL_HAT_LEFT|SDL_HAT_UP) +#define SDL_HAT_LEFTDOWN (SDL_HAT_LEFT|SDL_HAT_DOWN) +/* @} */ + +/** + * Get the current state of a POV hat on a joystick. + * + * The returned value will be one of the following positions: + * + * - `SDL_HAT_CENTERED` + * - `SDL_HAT_UP` + * - `SDL_HAT_RIGHT` + * - `SDL_HAT_DOWN` + * - `SDL_HAT_LEFT` + * - `SDL_HAT_RIGHTUP` + * - `SDL_HAT_RIGHTDOWN` + * - `SDL_HAT_LEFTUP` + * - `SDL_HAT_LEFTDOWN` + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param hat the hat index to get the state from; indices start at index 0 + * \returns the current hat position. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumHats + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetHat(SDL_Joystick *joystick, + int hat); + +/** + * Get the ball axis change since the last poll. + * + * Trackballs can only return relative motion since the last call to + * SDL_JoystickGetBall(), these motion deltas are placed into `dx` and `dy`. + * + * Most joysticks do not have trackballs. + * + * \param joystick the SDL_Joystick to query + * \param ball the ball index to query; ball indices start at index 0 + * \param dx stores the difference in the x axis position since the last poll + * \param dy stores the difference in the y axis position since the last poll + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumBalls + */ +extern DECLSPEC int SDLCALL SDL_JoystickGetBall(SDL_Joystick *joystick, + int ball, int *dx, int *dy); + +/** + * Get the current state of a button on a joystick. + * + * \param joystick an SDL_Joystick structure containing joystick information + * \param button the button index to get the state from; indices start at + * index 0 + * \returns 1 if the specified button is pressed, 0 otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickNumButtons + */ +extern DECLSPEC Uint8 SDLCALL SDL_JoystickGetButton(SDL_Joystick *joystick, + int button); + +/** + * Start a rumble effect. + * + * Each call to this function cancels any previous rumble effect, and calling + * it with 0 intensity stops any rumbling. + * + * \param joystick The joystick to vibrate + * \param low_frequency_rumble The intensity of the low frequency (left) + * rumble motor, from 0 to 0xFFFF + * \param high_frequency_rumble The intensity of the high frequency (right) + * rumble motor, from 0 to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_JoystickHasRumble + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumble(SDL_Joystick *joystick, Uint16 low_frequency_rumble, Uint16 high_frequency_rumble, Uint32 duration_ms); + +/** + * Start a rumble effect in the joystick's triggers + * + * Each call to this function cancels any previous trigger rumble effect, and + * calling it with 0 intensity stops any rumbling. + * + * Note that this is rumbling of the _triggers_ and not the game controller as + * a whole. This is currently only supported on Xbox One controllers. If you + * want the (more common) whole-controller rumble, use SDL_JoystickRumble() + * instead. + * + * \param joystick The joystick to vibrate + * \param left_rumble The intensity of the left trigger rumble motor, from 0 + * to 0xFFFF + * \param right_rumble The intensity of the right trigger rumble motor, from 0 + * to 0xFFFF + * \param duration_ms The duration of the rumble effect, in milliseconds + * \returns 0, or -1 if trigger rumble isn't supported on this joystick + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_JoystickHasRumbleTriggers + */ +extern DECLSPEC int SDLCALL SDL_JoystickRumbleTriggers(SDL_Joystick *joystick, Uint16 left_rumble, Uint16 right_rumble, Uint32 duration_ms); + +/** + * Query whether a joystick has an LED. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has a modifiable LED, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasLED(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumble + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumble(SDL_Joystick *joystick); + +/** + * Query whether a joystick has rumble support on triggers. + * + * \param joystick The joystick to query + * \return SDL_TRUE if the joystick has trigger rumble, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_JoystickRumbleTriggers + */ +extern DECLSPEC SDL_bool SDLCALL SDL_JoystickHasRumbleTriggers(SDL_Joystick *joystick); + +/** + * Update a joystick's LED color. + * + * An example of a joystick LED is the light on the back of a PlayStation 4's + * DualShock 4 controller. + * + * \param joystick The joystick to update + * \param red The intensity of the red LED + * \param green The intensity of the green LED + * \param blue The intensity of the blue LED + * \returns 0 on success, -1 if this joystick does not have a modifiable LED + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSetLED(SDL_Joystick *joystick, Uint8 red, Uint8 green, Uint8 blue); + +/** + * Send a joystick specific effect packet + * + * \param joystick The joystick to affect + * \param data The data to send to the joystick + * \param size The size of the data to send to the joystick + * \returns 0, or -1 if this joystick or driver doesn't support effect packets + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_JoystickSendEffect(SDL_Joystick *joystick, const void *data, int size); + +/** + * Close a joystick previously opened with SDL_JoystickOpen(). + * + * \param joystick The joystick device to close + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_JoystickOpen + */ +extern DECLSPEC void SDLCALL SDL_JoystickClose(SDL_Joystick *joystick); + +/** + * Get the battery level of a joystick as SDL_JoystickPowerLevel. + * + * \param joystick the SDL_Joystick to query + * \returns the current battery level as SDL_JoystickPowerLevel on success or + * `SDL_JOYSTICK_POWER_UNKNOWN` if it is unknown + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC SDL_JoystickPowerLevel SDLCALL SDL_JoystickCurrentPowerLevel(SDL_Joystick *joystick); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_joystick_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h new file mode 100644 index 0000000..039494e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keyboard.h @@ -0,0 +1,353 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keyboard.h + * + * Include file for SDL keyboard event handling + */ + +#ifndef SDL_keyboard_h_ +#define SDL_keyboard_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The SDL keysym structure, used in key events. + * + * \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. + */ +typedef struct SDL_Keysym +{ + SDL_Scancode scancode; /**< SDL physical key code - see ::SDL_Scancode for details */ + SDL_Keycode sym; /**< SDL virtual key code - see ::SDL_Keycode for details */ + Uint16 mod; /**< current key modifiers */ + Uint32 unused; +} SDL_Keysym; + +/* Function prototypes */ + +/** + * Query the window which currently has keyboard focus. + * + * \returns the window with keyboard focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetKeyboardFocus(void); + +/** + * Get a snapshot of the current state of the keyboard. + * + * The pointer returned is a pointer to an internal SDL array. It will be + * valid for the whole lifetime of the application and should not be freed by + * the caller. + * + * A array element with a value of 1 means that the key is pressed and a value + * of 0 means that it is not. Indexes into this array are obtained by using + * SDL_Scancode values. + * + * Use SDL_PumpEvents() to update the state array. + * + * This function gives you the current state after all events have been + * processed, so if a key or button has been pressed and released before you + * process events, then the pressed state will never show up in the + * SDL_GetKeyboardState() calls. + * + * Note: This function doesn't take into account whether shift has been + * pressed or not. + * + * \param numkeys if non-NULL, receives the length of the returned array + * \returns a pointer to an array of key states. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PumpEvents + * \sa SDL_ResetKeyboard + */ +extern DECLSPEC const Uint8 *SDLCALL SDL_GetKeyboardState(int *numkeys); + +/** + * Clear the state of the keyboard + * + * This function will generate key up events for all pressed keys. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetKeyboardState + */ +extern DECLSPEC void SDLCALL SDL_ResetKeyboard(void); + +/** + * Get the current key modifier state for the keyboard. + * + * \returns an OR'd combination of the modifier keys for the keyboard. See + * SDL_Keymod for details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyboardState + * \sa SDL_SetModState + */ +extern DECLSPEC SDL_Keymod SDLCALL SDL_GetModState(void); + +/** + * Set the current key modifier state for the keyboard. + * + * The inverse of SDL_GetModState(), SDL_SetModState() allows you to impose + * modifier key states on your application. Simply pass your desired modifier + * states into `modstate`. This value may be a bitwise, OR'd combination of + * SDL_Keymod values. + * + * This does not change the keyboard state, only the key modifier flags that + * SDL reports. + * + * \param modstate the desired SDL_Keymod for the keyboard + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetModState + */ +extern DECLSPEC void SDLCALL SDL_SetModState(SDL_Keymod modstate); + +/** + * Get the key code corresponding to the given scancode according to the + * current keyboard layout. + * + * See SDL_Keycode for details. + * + * \param scancode the desired SDL_Scancode to query + * \returns the SDL_Keycode that corresponds to the given SDL_Scancode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromScancode(SDL_Scancode scancode); + +/** + * Get the scancode corresponding to the given key code according to the + * current keyboard layout. + * + * See SDL_Scancode for details. + * + * \param key the desired SDL_Keycode to query + * \returns the SDL_Scancode that corresponds to the given SDL_Keycode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromKey(SDL_Keycode key); + +/** + * Get a human-readable name for a scancode. + * + * See SDL_Scancode for details. + * + * **Warning**: The returned name is by design not stable across platforms, + * e.g. the name for `SDL_SCANCODE_LGUI` is "Left GUI" under Linux but "Left + * Windows" under Microsoft Windows, and some scancodes like + * `SDL_SCANCODE_NONUSBACKSLASH` don't have any name at all. There are even + * scancodes that share names, e.g. `SDL_SCANCODE_RETURN` and + * `SDL_SCANCODE_RETURN2` (both called "Return"). This function is therefore + * unsuitable for creating a stable cross-platform two-way mapping between + * strings and scancodes. + * + * \param scancode the desired SDL_Scancode to query + * \returns a pointer to the name for the scancode. If the scancode doesn't + * have a name this function returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC const char *SDLCALL SDL_GetScancodeName(SDL_Scancode scancode); + +/** + * Get a scancode from a human-readable name. + * + * \param name the human-readable scancode name + * \returns the SDL_Scancode, or `SDL_SCANCODE_UNKNOWN` if the name wasn't + * recognized; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetScancodeFromKey + * \sa SDL_GetScancodeName + */ +extern DECLSPEC SDL_Scancode SDLCALL SDL_GetScancodeFromName(const char *name); + +/** + * Get a human-readable name for a key. + * + * See SDL_Scancode and SDL_Keycode for details. + * + * \param key the desired SDL_Keycode to query + * \returns a pointer to a UTF-8 string that stays valid at least until the + * next call to this function. If you need it around any longer, you + * must copy it. If the key doesn't have a name, this function + * returns an empty string (""). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromName + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetScancodeFromKey + */ +extern DECLSPEC const char *SDLCALL SDL_GetKeyName(SDL_Keycode key); + +/** + * Get a key code from a human-readable name. + * + * \param name the human-readable key name + * \returns key code, or `SDLK_UNKNOWN` if the name wasn't recognized; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetKeyFromScancode + * \sa SDL_GetKeyName + * \sa SDL_GetScancodeFromName + */ +extern DECLSPEC SDL_Keycode SDLCALL SDL_GetKeyFromName(const char *name); + +/** + * Start accepting Unicode text input events. + * + * This function will start accepting Unicode text input events in the focused + * SDL window, and start emitting SDL_TextInputEvent (SDL_TEXTINPUT) and + * SDL_TextEditingEvent (SDL_TEXTEDITING) events. Please use this function in + * pair with SDL_StopTextInput(). + * + * On some platforms using this function activates the screen keyboard. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextInputRect + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_StartTextInput(void); + +/** + * Check whether or not Unicode text input events are enabled. + * + * \returns SDL_TRUE if text input events are enabled else SDL_FALSE. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputActive(void); + +/** + * Stop receiving any text input events. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_StopTextInput(void); + +/** + * Dismiss the composition window/IME without disabling the subsystem. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_StartTextInput + * \sa SDL_StopTextInput + */ +extern DECLSPEC void SDLCALL SDL_ClearComposition(void); + +/** + * Returns if an IME Composite or Candidate window is currently shown. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTextInputShown(void); + +/** + * Set the rectangle used to type Unicode text inputs. + * + * To start text input in a given location, this function is intended to be + * called before SDL_StartTextInput, although some platforms support moving + * the rectangle even while text input (and a composition) is active. + * + * Note: If you want to use the system native IME window, try setting hint + * **SDL_HINT_IME_SHOW_UI** to **1**, otherwise this function won't give you + * any feedback. + * + * \param rect the SDL_Rect structure representing the rectangle to receive + * text (ignored if NULL) + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + */ +extern DECLSPEC void SDLCALL SDL_SetTextInputRect(const SDL_Rect *rect); + +/** + * Check whether the platform has screen keyboard support. + * + * \returns SDL_TRUE if the platform has some screen keyboard support or + * SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_StartTextInput + * \sa SDL_IsScreenKeyboardShown + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasScreenKeyboardSupport(void); + +/** + * Check whether the screen keyboard is shown for given window. + * + * \param window the window for which screen keyboard should be queried + * \returns SDL_TRUE if screen keyboard is shown or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasScreenKeyboardSupport + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenKeyboardShown(SDL_Window *window); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_keyboard_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keycode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keycode.h new file mode 100644 index 0000000..cc08478 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_keycode.h @@ -0,0 +1,358 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_keycode.h + * + * Defines constants which identify keyboard keys and modifiers. + */ + +#ifndef SDL_keycode_h_ +#define SDL_keycode_h_ + +#include +#include + +/** + * \brief The SDL virtual key representation. + * + * Values of this type are used to represent keyboard keys using the current + * layout of the keyboard. These values include Unicode values representing + * the unmodified character that would be generated by pressing the key, or + * an SDLK_* constant for those keys that do not generate characters. + * + * A special exception is the number keys at the top of the keyboard which + * map to SDLK_0...SDLK_9 on AZERTY layouts. + */ +typedef Sint32 SDL_Keycode; + +#define SDLK_SCANCODE_MASK (1<<30) +#define SDL_SCANCODE_TO_KEYCODE(X) (X | SDLK_SCANCODE_MASK) + +typedef enum +{ + SDLK_UNKNOWN = 0, + + SDLK_RETURN = '\r', + SDLK_ESCAPE = '\x1B', + SDLK_BACKSPACE = '\b', + SDLK_TAB = '\t', + SDLK_SPACE = ' ', + SDLK_EXCLAIM = '!', + SDLK_QUOTEDBL = '"', + SDLK_HASH = '#', + SDLK_PERCENT = '%', + SDLK_DOLLAR = '$', + SDLK_AMPERSAND = '&', + SDLK_QUOTE = '\'', + SDLK_LEFTPAREN = '(', + SDLK_RIGHTPAREN = ')', + SDLK_ASTERISK = '*', + SDLK_PLUS = '+', + SDLK_COMMA = ',', + SDLK_MINUS = '-', + SDLK_PERIOD = '.', + SDLK_SLASH = '/', + SDLK_0 = '0', + SDLK_1 = '1', + SDLK_2 = '2', + SDLK_3 = '3', + SDLK_4 = '4', + SDLK_5 = '5', + SDLK_6 = '6', + SDLK_7 = '7', + SDLK_8 = '8', + SDLK_9 = '9', + SDLK_COLON = ':', + SDLK_SEMICOLON = ';', + SDLK_LESS = '<', + SDLK_EQUALS = '=', + SDLK_GREATER = '>', + SDLK_QUESTION = '?', + SDLK_AT = '@', + + /* + Skip uppercase letters + */ + + SDLK_LEFTBRACKET = '[', + SDLK_BACKSLASH = '\\', + SDLK_RIGHTBRACKET = ']', + SDLK_CARET = '^', + SDLK_UNDERSCORE = '_', + SDLK_BACKQUOTE = '`', + SDLK_a = 'a', + SDLK_b = 'b', + SDLK_c = 'c', + SDLK_d = 'd', + SDLK_e = 'e', + SDLK_f = 'f', + SDLK_g = 'g', + SDLK_h = 'h', + SDLK_i = 'i', + SDLK_j = 'j', + SDLK_k = 'k', + SDLK_l = 'l', + SDLK_m = 'm', + SDLK_n = 'n', + SDLK_o = 'o', + SDLK_p = 'p', + SDLK_q = 'q', + SDLK_r = 'r', + SDLK_s = 's', + SDLK_t = 't', + SDLK_u = 'u', + SDLK_v = 'v', + SDLK_w = 'w', + SDLK_x = 'x', + SDLK_y = 'y', + SDLK_z = 'z', + + SDLK_CAPSLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CAPSLOCK), + + SDLK_F1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F1), + SDLK_F2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F2), + SDLK_F3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F3), + SDLK_F4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F4), + SDLK_F5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F5), + SDLK_F6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F6), + SDLK_F7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F7), + SDLK_F8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F8), + SDLK_F9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F9), + SDLK_F10 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F10), + SDLK_F11 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F11), + SDLK_F12 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F12), + + SDLK_PRINTSCREEN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRINTSCREEN), + SDLK_SCROLLLOCK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SCROLLLOCK), + SDLK_PAUSE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAUSE), + SDLK_INSERT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_INSERT), + SDLK_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HOME), + SDLK_PAGEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEUP), + SDLK_DELETE = '\x7F', + SDLK_END = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_END), + SDLK_PAGEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PAGEDOWN), + SDLK_RIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RIGHT), + SDLK_LEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LEFT), + SDLK_DOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DOWN), + SDLK_UP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UP), + + SDLK_NUMLOCKCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_NUMLOCKCLEAR), + SDLK_KP_DIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DIVIDE), + SDLK_KP_MULTIPLY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MULTIPLY), + SDLK_KP_MINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MINUS), + SDLK_KP_PLUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUS), + SDLK_KP_ENTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_ENTER), + SDLK_KP_1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_1), + SDLK_KP_2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_2), + SDLK_KP_3 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_3), + SDLK_KP_4 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_4), + SDLK_KP_5 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_5), + SDLK_KP_6 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_6), + SDLK_KP_7 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_7), + SDLK_KP_8 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_8), + SDLK_KP_9 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_9), + SDLK_KP_0 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_0), + SDLK_KP_PERIOD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERIOD), + + SDLK_APPLICATION = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APPLICATION), + SDLK_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_POWER), + SDLK_KP_EQUALS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALS), + SDLK_F13 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F13), + SDLK_F14 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F14), + SDLK_F15 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F15), + SDLK_F16 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F16), + SDLK_F17 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F17), + SDLK_F18 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F18), + SDLK_F19 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F19), + SDLK_F20 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F20), + SDLK_F21 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F21), + SDLK_F22 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F22), + SDLK_F23 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F23), + SDLK_F24 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_F24), + SDLK_EXECUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXECUTE), + SDLK_HELP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_HELP), + SDLK_MENU = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MENU), + SDLK_SELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SELECT), + SDLK_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_STOP), + SDLK_AGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AGAIN), + SDLK_UNDO = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_UNDO), + SDLK_CUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CUT), + SDLK_COPY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COPY), + SDLK_PASTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PASTE), + SDLK_FIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_FIND), + SDLK_MUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MUTE), + SDLK_VOLUMEUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEUP), + SDLK_VOLUMEDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_VOLUMEDOWN), + SDLK_KP_COMMA = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COMMA), + SDLK_KP_EQUALSAS400 = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EQUALSAS400), + + SDLK_ALTERASE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ALTERASE), + SDLK_SYSREQ = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SYSREQ), + SDLK_CANCEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CANCEL), + SDLK_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEAR), + SDLK_PRIOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_PRIOR), + SDLK_RETURN2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RETURN2), + SDLK_SEPARATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SEPARATOR), + SDLK_OUT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OUT), + SDLK_OPER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_OPER), + SDLK_CLEARAGAIN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CLEARAGAIN), + SDLK_CRSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CRSEL), + SDLK_EXSEL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EXSEL), + + SDLK_KP_00 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_00), + SDLK_KP_000 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_000), + SDLK_THOUSANDSSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_THOUSANDSSEPARATOR), + SDLK_DECIMALSEPARATOR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DECIMALSEPARATOR), + SDLK_CURRENCYUNIT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYUNIT), + SDLK_CURRENCYSUBUNIT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CURRENCYSUBUNIT), + SDLK_KP_LEFTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTPAREN), + SDLK_KP_RIGHTPAREN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTPAREN), + SDLK_KP_LEFTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LEFTBRACE), + SDLK_KP_RIGHTBRACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_RIGHTBRACE), + SDLK_KP_TAB = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_TAB), + SDLK_KP_BACKSPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BACKSPACE), + SDLK_KP_A = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_A), + SDLK_KP_B = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_B), + SDLK_KP_C = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_C), + SDLK_KP_D = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_D), + SDLK_KP_E = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_E), + SDLK_KP_F = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_F), + SDLK_KP_XOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_XOR), + SDLK_KP_POWER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_POWER), + SDLK_KP_PERCENT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PERCENT), + SDLK_KP_LESS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_LESS), + SDLK_KP_GREATER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_GREATER), + SDLK_KP_AMPERSAND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AMPERSAND), + SDLK_KP_DBLAMPERSAND = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLAMPERSAND), + SDLK_KP_VERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_VERTICALBAR), + SDLK_KP_DBLVERTICALBAR = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DBLVERTICALBAR), + SDLK_KP_COLON = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_COLON), + SDLK_KP_HASH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HASH), + SDLK_KP_SPACE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_SPACE), + SDLK_KP_AT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_AT), + SDLK_KP_EXCLAM = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_EXCLAM), + SDLK_KP_MEMSTORE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSTORE), + SDLK_KP_MEMRECALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMRECALL), + SDLK_KP_MEMCLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMCLEAR), + SDLK_KP_MEMADD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMADD), + SDLK_KP_MEMSUBTRACT = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMSUBTRACT), + SDLK_KP_MEMMULTIPLY = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMMULTIPLY), + SDLK_KP_MEMDIVIDE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_MEMDIVIDE), + SDLK_KP_PLUSMINUS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_PLUSMINUS), + SDLK_KP_CLEAR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEAR), + SDLK_KP_CLEARENTRY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_CLEARENTRY), + SDLK_KP_BINARY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_BINARY), + SDLK_KP_OCTAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_OCTAL), + SDLK_KP_DECIMAL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_DECIMAL), + SDLK_KP_HEXADECIMAL = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KP_HEXADECIMAL), + + SDLK_LCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LCTRL), + SDLK_LSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LSHIFT), + SDLK_LALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LALT), + SDLK_LGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_LGUI), + SDLK_RCTRL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RCTRL), + SDLK_RSHIFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RSHIFT), + SDLK_RALT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RALT), + SDLK_RGUI = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_RGUI), + + SDLK_MODE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MODE), + + SDLK_AUDIONEXT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIONEXT), + SDLK_AUDIOPREV = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPREV), + SDLK_AUDIOSTOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOSTOP), + SDLK_AUDIOPLAY = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOPLAY), + SDLK_AUDIOMUTE = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOMUTE), + SDLK_MEDIASELECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MEDIASELECT), + SDLK_WWW = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_WWW), + SDLK_MAIL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_MAIL), + SDLK_CALCULATOR = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALCULATOR), + SDLK_COMPUTER = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_COMPUTER), + SDLK_AC_SEARCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_SEARCH), + SDLK_AC_HOME = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_HOME), + SDLK_AC_BACK = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BACK), + SDLK_AC_FORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_FORWARD), + SDLK_AC_STOP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_STOP), + SDLK_AC_REFRESH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_REFRESH), + SDLK_AC_BOOKMARKS = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AC_BOOKMARKS), + + SDLK_BRIGHTNESSDOWN = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSDOWN), + SDLK_BRIGHTNESSUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_BRIGHTNESSUP), + SDLK_DISPLAYSWITCH = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_DISPLAYSWITCH), + SDLK_KBDILLUMTOGGLE = + SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMTOGGLE), + SDLK_KBDILLUMDOWN = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMDOWN), + SDLK_KBDILLUMUP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_KBDILLUMUP), + SDLK_EJECT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_EJECT), + SDLK_SLEEP = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SLEEP), + SDLK_APP1 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP1), + SDLK_APP2 = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_APP2), + + SDLK_AUDIOREWIND = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOREWIND), + SDLK_AUDIOFASTFORWARD = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_AUDIOFASTFORWARD), + + SDLK_SOFTLEFT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTLEFT), + SDLK_SOFTRIGHT = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_SOFTRIGHT), + SDLK_CALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_CALL), + SDLK_ENDCALL = SDL_SCANCODE_TO_KEYCODE(SDL_SCANCODE_ENDCALL) +} SDL_KeyCode; + +/** + * \brief Enumeration of valid key mods (possibly OR'd together). + */ +typedef enum +{ + KMOD_NONE = 0x0000, + KMOD_LSHIFT = 0x0001, + KMOD_RSHIFT = 0x0002, + KMOD_LCTRL = 0x0040, + KMOD_RCTRL = 0x0080, + KMOD_LALT = 0x0100, + KMOD_RALT = 0x0200, + KMOD_LGUI = 0x0400, + KMOD_RGUI = 0x0800, + KMOD_NUM = 0x1000, + KMOD_CAPS = 0x2000, + KMOD_MODE = 0x4000, + KMOD_SCROLL = 0x8000, + + KMOD_CTRL = KMOD_LCTRL | KMOD_RCTRL, + KMOD_SHIFT = KMOD_LSHIFT | KMOD_RSHIFT, + KMOD_ALT = KMOD_LALT | KMOD_RALT, + KMOD_GUI = KMOD_LGUI | KMOD_RGUI, + + KMOD_RESERVED = KMOD_SCROLL /* This is for source-level compatibility with SDL 2.0.0. */ +} SDL_Keymod; + +#endif /* SDL_keycode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_loadso.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_loadso.h new file mode 100644 index 0000000..c2b4f0a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_loadso.h @@ -0,0 +1,115 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_loadso.h + * + * System dependent library loading routines + * + * Some things to keep in mind: + * \li These functions only work on C function names. Other languages may + * have name mangling and intrinsic language support that varies from + * compiler to compiler. + * \li Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * \li Avoid namespace collisions. If you load a symbol from the library, + * it is not defined whether or not it goes into the global symbol + * namespace for the application. If it does and it conflicts with + * symbols in your code or other shared libraries, you will not get + * the results you expect. :) + */ + +#ifndef SDL_loadso_h_ +#define SDL_loadso_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Dynamically load a shared object. + * + * \param sofile a system-dependent name of the object file + * \returns an opaque pointer to the object handle or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadObject(const char *sofile); + +/** + * Look up the address of the named function in a shared object. + * + * This function pointer is no longer valid after calling SDL_UnloadObject(). + * + * This function can only look up C function names. Other languages may have + * name mangling and intrinsic language support that varies from compiler to + * compiler. + * + * Make sure you declare your function pointers with the same calling + * convention as the actual library function. Your code will crash + * mysteriously if you do not do this. + * + * If the requested function doesn't exist, NULL is returned. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * \param name the name of the function to look up + * \returns a pointer to the function or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadObject + * \sa SDL_UnloadObject + */ +extern DECLSPEC void *SDLCALL SDL_LoadFunction(void *handle, + const char *name); + +/** + * Unload a shared object from memory. + * + * \param handle a valid shared object handle returned by SDL_LoadObject() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadFunction + * \sa SDL_LoadObject + */ +extern DECLSPEC void SDLCALL SDL_UnloadObject(void *handle); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_loadso_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_locale.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_locale.h new file mode 100644 index 0000000..a0e5923 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_locale.h @@ -0,0 +1,103 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_locale.h + * + * Include file for SDL locale services + */ + +#ifndef _SDL_locale_h +#define _SDL_locale_h + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + + +typedef struct SDL_Locale +{ + const char *language; /**< A language name, like "en" for English. */ + const char *country; /**< A country, like "US" for America. Can be NULL. */ +} SDL_Locale; + +/** + * Report the user's preferred locale. + * + * This returns an array of SDL_Locale structs, the final item zeroed out. + * When the caller is done with this array, it should call SDL_free() on the + * returned value; all the memory involved is allocated in a single block, so + * a single SDL_free() will suffice. + * + * Returned language strings are in the format xx, where 'xx' is an ISO-639 + * language specifier (such as "en" for English, "de" for German, etc). + * Country strings are in the format YY, where "YY" is an ISO-3166 country + * code (such as "US" for the United States, "CA" for Canada, etc). Country + * might be NULL if there's no specific guidance on them (so you might get { + * "en", "US" } for American English, but { "en", NULL } means "English + * language, generically"). Language strings are never NULL, except to + * terminate the array. + * + * Please note that not all of these strings are 2 characters; some are three + * or more. + * + * The returned list of locales are in the order of the user's preference. For + * example, a German citizen that is fluent in US English and knows enough + * Japanese to navigate around Tokyo might have a list like: { "de", "en_US", + * "jp", NULL }. Someone from England might prefer British English (where + * "color" is spelled "colour", etc), but will settle for anything like it: { + * "en_GB", "en", NULL }. + * + * This function returns NULL on error, including when the platform does not + * supply this information at all. + * + * This might be a "slow" call that has to query the operating system. It's + * best to ask for this once and save the results. However, this list can + * change, usually because the user has changed a system preference outside of + * your program; SDL will send an SDL_LOCALECHANGED event in this case, if + * possible, and you can call this function again to get an updated copy of + * preferred locales. + * + * \return array of locales, terminated with a locale with a NULL language + * field. Will return NULL on error. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_Locale * SDLCALL SDL_GetPreferredLocales(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* _SDL_locale_h */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_log.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_log.h new file mode 100644 index 0000000..0afb9fe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_log.h @@ -0,0 +1,404 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_log.h + * + * Simple log messages with categories and priorities. + * + * By default logs are quiet, but if you're debugging SDL you might want: + * + * SDL_LogSetAllPriority(SDL_LOG_PRIORITY_WARN); + * + * Here's where the messages go on different platforms: + * Windows: debug output stream + * Android: log output + * Others: standard error output (stderr) + */ + +#ifndef SDL_log_h_ +#define SDL_log_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief The maximum size of a log message prior to SDL 2.0.24 + * + * As of 2.0.24 there is no limit to the length of SDL log messages. + */ +#define SDL_MAX_LOG_MESSAGE 4096 + +/** + * \brief The predefined log categories + * + * By default the application category is enabled at the INFO level, + * the assert category is enabled at the WARN level, test is enabled + * at the VERBOSE level and all other categories are enabled at the + * CRITICAL level. + */ +typedef enum +{ + SDL_LOG_CATEGORY_APPLICATION, + SDL_LOG_CATEGORY_ERROR, + SDL_LOG_CATEGORY_ASSERT, + SDL_LOG_CATEGORY_SYSTEM, + SDL_LOG_CATEGORY_AUDIO, + SDL_LOG_CATEGORY_VIDEO, + SDL_LOG_CATEGORY_RENDER, + SDL_LOG_CATEGORY_INPUT, + SDL_LOG_CATEGORY_TEST, + + /* Reserved for future SDL library use */ + SDL_LOG_CATEGORY_RESERVED1, + SDL_LOG_CATEGORY_RESERVED2, + SDL_LOG_CATEGORY_RESERVED3, + SDL_LOG_CATEGORY_RESERVED4, + SDL_LOG_CATEGORY_RESERVED5, + SDL_LOG_CATEGORY_RESERVED6, + SDL_LOG_CATEGORY_RESERVED7, + SDL_LOG_CATEGORY_RESERVED8, + SDL_LOG_CATEGORY_RESERVED9, + SDL_LOG_CATEGORY_RESERVED10, + + /* Beyond this point is reserved for application use, e.g. + enum { + MYAPP_CATEGORY_AWESOME1 = SDL_LOG_CATEGORY_CUSTOM, + MYAPP_CATEGORY_AWESOME2, + MYAPP_CATEGORY_AWESOME3, + ... + }; + */ + SDL_LOG_CATEGORY_CUSTOM +} SDL_LogCategory; + +/** + * \brief The predefined log priorities + */ +typedef enum +{ + SDL_LOG_PRIORITY_VERBOSE = 1, + SDL_LOG_PRIORITY_DEBUG, + SDL_LOG_PRIORITY_INFO, + SDL_LOG_PRIORITY_WARN, + SDL_LOG_PRIORITY_ERROR, + SDL_LOG_PRIORITY_CRITICAL, + SDL_NUM_LOG_PRIORITIES +} SDL_LogPriority; + + +/** + * Set the priority of all log categories. + * + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetAllPriority(SDL_LogPriority priority); + +/** + * Set the priority of a particular log category. + * + * \param category the category to assign a priority to + * \param priority the SDL_LogPriority to assign + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetPriority + * \sa SDL_LogSetAllPriority + */ +extern DECLSPEC void SDLCALL SDL_LogSetPriority(int category, + SDL_LogPriority priority); + +/** + * Get the priority of a particular log category. + * + * \param category the category to query + * \returns the SDL_LogPriority for the requested category + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetPriority + */ +extern DECLSPEC SDL_LogPriority SDLCALL SDL_LogGetPriority(int category); + +/** + * Reset all priorities to default. + * + * This is called by SDL_Quit(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetAllPriority + * \sa SDL_LogSetPriority + */ +extern DECLSPEC void SDLCALL SDL_LogResetPriorities(void); + +/** + * Log a message with SDL_LOG_CATEGORY_APPLICATION and SDL_LOG_PRIORITY_INFO. + * + * = * \param fmt a printf() style message format string + * + * \param ... additional parameters matching % tokens in the `fmt` string, if + * any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_Log(SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(1); + +/** + * Log a message with SDL_LOG_PRIORITY_VERBOSE. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogVerbose(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_DEBUG. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogDebug(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_INFO. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogInfo(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_WARN. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + */ +extern DECLSPEC void SDLCALL SDL_LogWarn(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_ERROR. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogError(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with SDL_LOG_PRIORITY_CRITICAL. + * + * \param category the category of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogCritical(int category, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ... additional parameters matching % tokens in the **fmt** string, + * if any + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessageV + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessage(int category, + SDL_LogPriority priority, + SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(3); + +/** + * Log a message with the specified category and priority. + * + * \param category the category of the message + * \param priority the priority of the message + * \param fmt a printf() style message format string + * \param ap a variable argument list + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Log + * \sa SDL_LogCritical + * \sa SDL_LogDebug + * \sa SDL_LogError + * \sa SDL_LogInfo + * \sa SDL_LogMessage + * \sa SDL_LogVerbose + * \sa SDL_LogWarn + */ +extern DECLSPEC void SDLCALL SDL_LogMessageV(int category, + SDL_LogPriority priority, + const char *fmt, va_list ap); + +/** + * The prototype for the log output callback function. + * + * This function is called by SDL when there is new text to be logged. + * + * \param userdata what was passed as `userdata` to SDL_LogSetOutputFunction() + * \param category the category of the message + * \param priority the priority of the message + * \param message the message being output + */ +typedef void (SDLCALL *SDL_LogOutputFunction)(void *userdata, int category, SDL_LogPriority priority, const char *message); + +/** + * Get the current log output function. + * + * \param callback an SDL_LogOutputFunction filled in with the current log + * callback + * \param userdata a pointer filled in with the pointer that is passed to + * `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogSetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogGetOutputFunction(SDL_LogOutputFunction *callback, void **userdata); + +/** + * Replace the default log output function with one of your own. + * + * \param callback an SDL_LogOutputFunction to call instead of the default + * \param userdata a pointer that is passed to `callback` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LogGetOutputFunction + */ +extern DECLSPEC void SDLCALL SDL_LogSetOutputFunction(SDL_LogOutputFunction callback, void *userdata); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_log_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_main.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_main.h new file mode 100644 index 0000000..8e938ca --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_main.h @@ -0,0 +1,282 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_main_h_ +#define SDL_main_h_ + +#include + +/** + * \file SDL_main.h + * + * Redefine main() on some platforms so that it is called by SDL. + */ + +#ifndef SDL_MAIN_HANDLED +#if defined(__WIN32__) +/* On Windows SDL provides WinMain(), which parses the command line and passes + the arguments to your main function. + + If you provide your own WinMain(), you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__WINRT__) +/* On WinRT, SDL provides a main function that initializes CoreApplication, + creating an instance of IFrameworkView in the process. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. In non-XAML apps, the file, + src/main/winrt/SDL_WinRT_main_NonXAML.cpp, or a copy of it, must be compiled + into the app itself. In XAML apps, the function, SDL_WinRTRunApp must be + called, with a pointer to the Direct3D-hosted XAML control passed in. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__GDK__) +/* On GDK, SDL provides a main function that initializes the game runtime. + + Please note that #include'ing SDL_main.h is not enough to get a main() + function working. You must either link against SDL2main or, if not possible, + call the SDL_GDKRunApp function from your entry point. +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__IPHONEOS__) +/* On iOS SDL provides a main function that creates an application delegate + and starts the iOS application run loop. + + If you link with SDL dynamically on iOS, the main function can't be in a + shared library, so you need to link with libSDLmain.a, which includes a + stub main function that calls into the shared library to start execution. + + See src/video/uikit/SDL_uikitappdelegate.m for more details. + */ +#define SDL_MAIN_NEEDED + +#elif defined(__ANDROID__) +/* On Android SDL provides a Java class in SDLActivity.java that is the + main activity entry point. + + See docs/README-android.md for more details on extending that class. + */ +#define SDL_MAIN_NEEDED + +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + +#elif defined(__NACL__) +/* On NACL we use ppapi_simple to set up the application helper code, + then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before + starting the user main function. + All user code is run in a separate thread by ppapi_simple, thus + allowing for blocking io to take place via nacl_io +*/ +#define SDL_MAIN_NEEDED + +#elif defined(__PSP__) +/* On PSP SDL provides a main function that sets the module info, + activates the GPU and starts the thread required to be able to exit + the software. + + If you provide this yourself, you may define SDL_MAIN_HANDLED + */ +#define SDL_MAIN_AVAILABLE + +#elif defined(__PS2__) +#define SDL_MAIN_AVAILABLE + +#define SDL_PS2_SKIP_IOP_RESET() \ + void reset_IOP(); \ + void reset_IOP() {} + +#elif defined(__3DS__) +/* + On N3DS, SDL provides a main function that sets up the screens + and storage. + + If you provide this yourself, you may define SDL_MAIN_HANDLED +*/ +#define SDL_MAIN_AVAILABLE + +#endif +#endif /* SDL_MAIN_HANDLED */ + +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + +/** + * \file SDL_main.h + * + * The application's main() function must be called with C linkage, + * and should be declared like this: + * \code + * #ifdef __cplusplus + * extern "C" + * #endif + * int main(int argc, char *argv[]) + * { + * } + * \endcode + */ + +#if defined(SDL_MAIN_NEEDED) || defined(SDL_MAIN_AVAILABLE) +#define main SDL_main +#endif + +#include +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The prototype for the application's main() function + */ +typedef int (*SDL_main_func)(int argc, char *argv[]); +extern SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); + + +/** + * Circumvent failure of SDL_Init() when not using SDL_main() as an entry + * point. + * + * This function is defined in SDL_main.h, along with the preprocessor rule to + * redefine main() as SDL_main(). Thus to ensure that your main() function + * will not be changed it is necessary to define SDL_MAIN_HANDLED before + * including SDL.h. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_Init + */ +extern DECLSPEC void SDLCALL SDL_SetMainReady(void); + +#if defined(__WIN32__) || defined(__GDK__) + +/** + * Register a win32 window class for SDL's use. + * + * This can be called to set the application window class at startup. It is + * safe to call this multiple times, as long as every call is eventually + * paired with a call to SDL_UnregisterApp, but a second registration attempt + * while a previous registration is still active will be ignored, other than + * to increment a counter. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when initializing the video subsystem. + * + * \param name the window class name, in UTF-8 encoding. If NULL, SDL + * currently uses "SDL_app" but this isn't guaranteed. + * \param style the value to use in WNDCLASSEX::style. If `name` is NULL, SDL + * currently uses `(CS_BYTEALIGNCLIENT | CS_OWNDC)` regardless of + * what is specified here. + * \param hInst the HINSTANCE to use in WNDCLASSEX::hInstance. If zero, SDL + * will use `GetModuleHandle(NULL)` instead. + * \returns 0 on success, -1 on error. SDL_GetError() may have details. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC int SDLCALL SDL_RegisterApp(const char *name, Uint32 style, void *hInst); + +/** + * Deregister the win32 window class from an SDL_RegisterApp call. + * + * This can be called to undo the effects of SDL_RegisterApp. + * + * Most applications do not need to, and should not, call this directly; SDL + * will call it when deinitializing the video subsystem. + * + * It is safe to call this multiple times, as long as every call is eventually + * paired with a prior call to SDL_RegisterApp. The window class will only be + * deregistered when the registration counter in SDL_RegisterApp decrements to + * zero through calls to this function. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC void SDLCALL SDL_UnregisterApp(void); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + + +#ifdef __WINRT__ + +/** + * Initialize and launch an SDL/WinRT application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.0.3. + */ +extern DECLSPEC int SDLCALL SDL_WinRTRunApp(SDL_main_func mainFunction, void * reserved); + +#endif /* __WINRT__ */ + +#if defined(__IPHONEOS__) + +/** + * Initializes and launches an SDL application. + * + * \param argc The argc parameter from the application's main() function + * \param argv The argv parameter from the application's main() function + * \param mainFunction The SDL app's C-style main(), an SDL_main_func + * \return the return value from mainFunction + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_UIKitRunApp(int argc, char *argv[], SDL_main_func mainFunction); + +#endif /* __IPHONEOS__ */ + +#ifdef __GDK__ + +/** + * Initialize and launch an SDL GDK application. + * + * \param mainFunction the SDL app's C-style main(), an SDL_main_func + * \param reserved reserved for future use; should be NULL + * \returns 0 on success or -1 on failure; call SDL_GetError() to retrieve + * more information on the failure. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKRunApp(SDL_main_func mainFunction, void *reserved); + +/** + * Callback from the application to let the suspend continue. + * + * \since This function is available since SDL 2.28.0. + */ +extern DECLSPEC void SDLCALL SDL_GDKSuspendComplete(void); + +#endif /* __GDK__ */ + +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_main_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h new file mode 100644 index 0000000..3edafdb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_messagebox.h @@ -0,0 +1,193 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_messagebox_h_ +#define SDL_messagebox_h_ + +#include +#include /* For SDL_Window */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * SDL_MessageBox flags. If supported will display warning icon, etc. + */ +typedef enum +{ + SDL_MESSAGEBOX_ERROR = 0x00000010, /**< error dialog */ + SDL_MESSAGEBOX_WARNING = 0x00000020, /**< warning dialog */ + SDL_MESSAGEBOX_INFORMATION = 0x00000040, /**< informational dialog */ + SDL_MESSAGEBOX_BUTTONS_LEFT_TO_RIGHT = 0x00000080, /**< buttons placed left to right */ + SDL_MESSAGEBOX_BUTTONS_RIGHT_TO_LEFT = 0x00000100 /**< buttons placed right to left */ +} SDL_MessageBoxFlags; + +/** + * Flags for SDL_MessageBoxButtonData. + */ +typedef enum +{ + SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 0x00000001, /**< Marks the default button when return is hit */ + SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 0x00000002 /**< Marks the default button when escape is hit */ +} SDL_MessageBoxButtonFlags; + +/** + * Individual button data. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxButtonFlags */ + int buttonid; /**< User defined button id (value returned via SDL_ShowMessageBox) */ + const char * text; /**< The UTF-8 button text */ +} SDL_MessageBoxButtonData; + +/** + * RGB value used in a message box color scheme + */ +typedef struct +{ + Uint8 r, g, b; +} SDL_MessageBoxColor; + +typedef enum +{ + SDL_MESSAGEBOX_COLOR_BACKGROUND, + SDL_MESSAGEBOX_COLOR_TEXT, + SDL_MESSAGEBOX_COLOR_BUTTON_BORDER, + SDL_MESSAGEBOX_COLOR_BUTTON_BACKGROUND, + SDL_MESSAGEBOX_COLOR_BUTTON_SELECTED, + SDL_MESSAGEBOX_COLOR_MAX +} SDL_MessageBoxColorType; + +/** + * A set of colors to use for message box dialogs + */ +typedef struct +{ + SDL_MessageBoxColor colors[SDL_MESSAGEBOX_COLOR_MAX]; +} SDL_MessageBoxColorScheme; + +/** + * MessageBox structure containing title, text, window, etc. + */ +typedef struct +{ + Uint32 flags; /**< ::SDL_MessageBoxFlags */ + SDL_Window *window; /**< Parent window, can be NULL */ + const char *title; /**< UTF-8 title */ + const char *message; /**< UTF-8 message text */ + + int numbuttons; + const SDL_MessageBoxButtonData *buttons; + + const SDL_MessageBoxColorScheme *colorScheme; /**< ::SDL_MessageBoxColorScheme, can be NULL to use system settings */ +} SDL_MessageBoxData; + +/** + * Create a modal message box. + * + * If your needs aren't complex, it might be easier to use + * SDL_ShowSimpleMessageBox. + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param messageboxdata the SDL_MessageBoxData structure with title, text and + * other options + * \param buttonid the pointer to which user id of hit button should be copied + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowSimpleMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowMessageBox(const SDL_MessageBoxData *messageboxdata, int *buttonid); + +/** + * Display a simple modal message box. + * + * If your needs aren't complex, this function is preferred over + * SDL_ShowMessageBox. + * + * `flags` may be any of the following: + * + * - `SDL_MESSAGEBOX_ERROR`: error dialog + * - `SDL_MESSAGEBOX_WARNING`: warning dialog + * - `SDL_MESSAGEBOX_INFORMATION`: informational dialog + * + * This function should be called on the thread that created the parent + * window, or on the main thread if the messagebox has no parent. It will + * block execution of that thread until the user clicks a button or closes the + * messagebox. + * + * This function may be called at any time, even before SDL_Init(). This makes + * it useful for reporting errors like a failure to create a renderer or + * OpenGL context. + * + * On X11, SDL rolls its own dialog box with X11 primitives instead of a + * formal toolkit like GTK+ or Qt. + * + * Note that if SDL_Init() would fail because there isn't any available video + * target, this function is likely to fail for the same reasons. If this is a + * concern, check the return value from this function and fall back to writing + * to stderr if you can. + * + * \param flags an SDL_MessageBoxFlags value + * \param title UTF-8 title text + * \param message UTF-8 message text + * \param window the parent window, or NULL for no parent + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowMessageBox + */ +extern DECLSPEC int SDLCALL SDL_ShowSimpleMessageBox(Uint32 flags, const char *title, const char *message, SDL_Window *window); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_messagebox_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_metal.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_metal.h new file mode 100644 index 0000000..b4c0df8 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_metal.h @@ -0,0 +1,113 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_metal.h + * + * Header file for functions to creating Metal layers and views on SDL windows. + */ + +#ifndef SDL_metal_h_ +#define SDL_metal_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief A handle to a CAMetalLayer-backed NSView (macOS) or UIView (iOS/tvOS). + * + * \note This can be cast directly to an NSView or UIView. + */ +typedef void *SDL_MetalView; + +/** + * \name Metal support functions + */ +/* @{ */ + +/** + * Create a CAMetalLayer-backed NSView/UIView and attach it to the specified + * window. + * + * On macOS, this does *not* associate a MTLDevice with the CAMetalLayer on + * its own. It is up to user code to do that. + * + * The returned handle can be casted directly to a NSView or UIView. To access + * the backing CAMetalLayer, call SDL_Metal_GetLayer(). + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_DestroyView + * \sa SDL_Metal_GetLayer + */ +extern DECLSPEC SDL_MetalView SDLCALL SDL_Metal_CreateView(SDL_Window * window); + +/** + * Destroy an existing SDL_MetalView object. + * + * This should be called before SDL_DestroyWindow, if SDL_Metal_CreateView was + * called after SDL_CreateWindow. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void SDLCALL SDL_Metal_DestroyView(SDL_MetalView view); + +/** + * Get a pointer to the backing CAMetalLayer for the given view. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_Metal_CreateView + */ +extern DECLSPEC void *SDLCALL SDL_Metal_GetLayer(SDL_MetalView view); + +/** + * Get the size of a window's underlying drawable in pixels (for use with + * setting viewport, scissor & etc). + * + * \param window SDL_Window from which the drawable size should be queried + * \param w Pointer to variable for storing the width in pixels, may be NULL + * \param h Pointer to variable for storing the height in pixels, may be NULL + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + */ +extern DECLSPEC void SDLCALL SDL_Metal_GetDrawableSize(SDL_Window* window, int *w, + int *h); + +/* @} *//* Metal support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_metal_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_misc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_misc.h new file mode 100644 index 0000000..64e0f78 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_misc.h @@ -0,0 +1,79 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_misc.h + * + * \brief Include file for SDL API functions that don't fit elsewhere. + */ + +#ifndef SDL_misc_h_ +#define SDL_misc_h_ + +#include + +#include + +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Open a URL/URI in the browser or other appropriate external application. + * + * Open a URL in a separate, system-provided application. How this works will + * vary wildly depending on the platform. This will likely launch what makes + * sense to handle a specific URL's protocol (a web browser for `http://`, + * etc), but it might also be able to launch file managers for directories and + * other things. + * + * What happens when you open a URL varies wildly as well: your game window + * may lose focus (and may or may not lose focus if your game was fullscreen + * or grabbing input at the time). On mobile devices, your app will likely + * move to the background or your process might be paused. Any given platform + * may or may not handle a given URL. + * + * If this is unimplemented (or simply unavailable) for a platform, this will + * fail with an error. A successful result does not mean the URL loaded, just + * that we launched _something_ to handle it (or at least believe we did). + * + * All this to say: this function can be useful, but you should definitely + * test it on every platform you target. + * + * \param url A valid URL/URI to open. Use `file:///full/path/to/file` for + * local files, if supported. + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC int SDLCALL SDL_OpenURL(const char *url); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_misc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mouse.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mouse.h new file mode 100644 index 0000000..5b224ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mouse.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_mouse.h + * + * Include file for SDL mouse event handling. + */ + +#ifndef SDL_mouse_h_ +#define SDL_mouse_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct SDL_Cursor SDL_Cursor; /**< Implementation dependent */ + +/** + * \brief Cursor types for SDL_CreateSystemCursor(). + */ +typedef enum +{ + SDL_SYSTEM_CURSOR_ARROW, /**< Arrow */ + SDL_SYSTEM_CURSOR_IBEAM, /**< I-beam */ + SDL_SYSTEM_CURSOR_WAIT, /**< Wait */ + SDL_SYSTEM_CURSOR_CROSSHAIR, /**< Crosshair */ + SDL_SYSTEM_CURSOR_WAITARROW, /**< Small wait cursor (or Wait if not available) */ + SDL_SYSTEM_CURSOR_SIZENWSE, /**< Double arrow pointing northwest and southeast */ + SDL_SYSTEM_CURSOR_SIZENESW, /**< Double arrow pointing northeast and southwest */ + SDL_SYSTEM_CURSOR_SIZEWE, /**< Double arrow pointing west and east */ + SDL_SYSTEM_CURSOR_SIZENS, /**< Double arrow pointing north and south */ + SDL_SYSTEM_CURSOR_SIZEALL, /**< Four pointed arrow pointing north, south, east, and west */ + SDL_SYSTEM_CURSOR_NO, /**< Slashed circle or crossbones */ + SDL_SYSTEM_CURSOR_HAND, /**< Hand */ + SDL_NUM_SYSTEM_CURSORS +} SDL_SystemCursor; + +/** + * \brief Scroll direction types for the Scroll event + */ +typedef enum +{ + SDL_MOUSEWHEEL_NORMAL, /**< The scroll direction is normal */ + SDL_MOUSEWHEEL_FLIPPED /**< The scroll direction is flipped / natural */ +} SDL_MouseWheelDirection; + +/* Function prototypes */ + +/** + * Get the window which currently has mouse focus. + * + * \returns the window with mouse focus. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetMouseFocus(void); + +/** + * Retrieve the current state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse cursor position relative to the focus window. You can pass NULL for + * either `x` or `y`. + * + * \param x the x coordinate of the mouse cursor position relative to the + * focus window + * \param y the y coordinate of the mouse cursor position relative to the + * focus window + * \returns a 32-bit button bitmask of the current button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGlobalMouseState + * \sa SDL_GetRelativeMouseState + * \sa SDL_PumpEvents + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetMouseState(int *x, int *y); + +/** + * Get the current state of the mouse in relation to the desktop. + * + * This works similarly to SDL_GetMouseState(), but the coordinates will be + * reported relative to the top-left of the desktop. This can be useful if you + * need to track the mouse outside of a specific window and SDL_CaptureMouse() + * doesn't fit your needs. For example, it could be useful if you need to + * track the mouse while dragging a window, where coordinates relative to a + * window might not be in sync at all times. + * + * Note: SDL_GetMouseState() returns the mouse position as SDL understands it + * from the last pump of the event queue. This function, however, queries the + * OS for the current mouse position, and as such, might be a slightly less + * efficient function. Unless you know what you're doing and have a good + * reason to use this function, you probably want SDL_GetMouseState() instead. + * + * \param x filled in with the current X coord relative to the desktop; can be + * NULL + * \param y filled in with the current Y coord relative to the desktop; can be + * NULL + * \returns the current button state as a bitmask which can be tested using + * the SDL_BUTTON(X) macros. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_CaptureMouse + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetGlobalMouseState(int *x, int *y); + +/** + * Retrieve the relative state of the mouse. + * + * The current button state is returned as a button bitmask, which can be + * tested using the `SDL_BUTTON(X)` macros (where `X` is generally 1 for the + * left, 2 for middle, 3 for the right button), and `x` and `y` are set to the + * mouse deltas since the last call to SDL_GetRelativeMouseState() or since + * event initialization. You can pass NULL for either `x` or `y`. + * + * \param x a pointer filled with the last recorded x coordinate of the mouse + * \param y a pointer filled with the last recorded y coordinate of the mouse + * \returns a 32-bit button bitmask of the relative button state. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetMouseState + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetRelativeMouseState(int *x, int *y); + +/** + * Move the mouse cursor to the given position within the window. + * + * This function generates a mouse motion event if relative mode is not + * enabled. If relative mode is enabled, you can force mouse events for the + * warp by setting the SDL_HINT_MOUSE_RELATIVE_WARP_MOTION hint. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param window the window to move the mouse into, or NULL for the current + * mouse focus + * \param x the x coordinate within the window + * \param y the y coordinate within the window + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WarpMouseGlobal + */ +extern DECLSPEC void SDLCALL SDL_WarpMouseInWindow(SDL_Window * window, + int x, int y); + +/** + * Move the mouse to the given position in global screen space. + * + * This function generates a mouse motion event. + * + * A failure of this function usually means that it is unsupported by a + * platform. + * + * Note that this function will appear to succeed, but not actually move the + * mouse when used over Microsoft Remote Desktop. + * + * \param x the x coordinate + * \param y the y coordinate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_WarpMouseInWindow + */ +extern DECLSPEC int SDLCALL SDL_WarpMouseGlobal(int x, int y); + +/** + * Set relative mouse mode. + * + * While the mouse is in relative mode, the cursor is hidden, the mouse + * position is constrained to the window, and SDL will report continuous + * relative mouse motion even if the mouse is at the edge of the window. + * + * This function will flush any pending mouse motion. + * + * \param enabled SDL_TRUE to enable relative mode, SDL_FALSE to disable. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * If relative mode is not supported, this returns -1. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRelativeMouseMode + */ +extern DECLSPEC int SDLCALL SDL_SetRelativeMouseMode(SDL_bool enabled); + +/** + * Capture the mouse and to track input outside an SDL window. + * + * Capturing enables your app to obtain mouse events globally, instead of just + * within your window. Not all video targets support this function. When + * capturing is enabled, the current window will get all mouse events, but + * unlike relative mode, no change is made to the cursor and it is not + * restrained to your window. + * + * This function may also deny mouse input to other windows--both those in + * your application and others on the system--so you should use this function + * sparingly, and in small bursts. For example, you might want to track the + * mouse while the user is dragging something, until the user releases a mouse + * button. It is not recommended that you capture the mouse for long periods + * of time, such as the entire time your app is running. For that, you should + * probably use SDL_SetRelativeMouseMode() or SDL_SetWindowGrab(), depending + * on your goals. + * + * While captured, mouse events still report coordinates relative to the + * current (foreground) window, but those coordinates may be outside the + * bounds of the window (including negative values). Capturing is only allowed + * for the foreground window. If the window loses focus while capturing, the + * capture will be disabled automatically. + * + * While capturing is enabled, the current window will have the + * `SDL_WINDOW_MOUSE_CAPTURE` flag set. + * + * Please note that as of SDL 2.0.22, SDL will attempt to "auto capture" the + * mouse while the user is pressing a button; this is to try and make mouse + * behavior more consistent between platforms, and deal with the common case + * of a user dragging the mouse outside of the window. This means that if you + * are calling SDL_CaptureMouse() only to deal with this situation, you no + * longer have to (although it is safe to do so). If this causes problems for + * your app, you can disable auto capture by setting the + * `SDL_HINT_MOUSE_AUTO_CAPTURE` hint to zero. + * + * \param enabled SDL_TRUE to enable capturing, SDL_FALSE to disable. + * \returns 0 on success or -1 if not supported; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetGlobalMouseState + */ +extern DECLSPEC int SDLCALL SDL_CaptureMouse(SDL_bool enabled); + +/** + * Query whether relative mouse mode is enabled. + * + * \returns SDL_TRUE if relative mode is enabled or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRelativeMouseMode + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetRelativeMouseMode(void); + +/** + * Create a cursor using the specified bitmap data and mask (in MSB format). + * + * `mask` has to be in MSB (Most Significant Bit) format. + * + * The cursor width (`w`) must be a multiple of 8 bits. + * + * The cursor is created in black and white according to the following: + * + * - data=0, mask=1: white + * - data=1, mask=1: black + * - data=0, mask=0: transparent + * - data=1, mask=0: inverted color if possible, black if not. + * + * Cursors created with this function must be freed with SDL_FreeCursor(). + * + * If you want to have a color cursor, or create your cursor from an + * SDL_Surface, you should use SDL_CreateColorCursor(). Alternately, you can + * hide the cursor and draw your own as part of your game's rendering, but it + * will be bound to the framerate. + * + * Also, since SDL 2.0.0, SDL_CreateSystemCursor() is available, which + * provides twelve readily available system cursors to pick from. + * + * \param data the color value for each pixel of the cursor + * \param mask the mask value for each pixel of the cursor + * \param w the width of the cursor + * \param h the height of the cursor + * \param hot_x the X-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \param hot_y the Y-axis location of the upper left corner of the cursor + * relative to the actual mouse position + * \returns a new cursor with the specified parameters on success or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + * \sa SDL_SetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateCursor(const Uint8 * data, + const Uint8 * mask, + int w, int h, int hot_x, + int hot_y); + +/** + * Create a color cursor. + * + * \param surface an SDL_Surface structure representing the cursor image + * \param hot_x the x position of the cursor hot spot + * \param hot_y the y position of the cursor hot spot + * \returns the new cursor on success or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateColorCursor(SDL_Surface *surface, + int hot_x, + int hot_y); + +/** + * Create a system cursor. + * + * \param id an SDL_SystemCursor enum value + * \returns a cursor on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_CreateSystemCursor(SDL_SystemCursor id); + +/** + * Set the active cursor. + * + * This function sets the currently active cursor to the specified one. If the + * cursor is currently visible, the change will be immediately represented on + * the display. SDL_SetCursor(NULL) can be used to force cursor redraw, if + * this is desired for any reason. + * + * \param cursor a cursor to make active + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_GetCursor + * \sa SDL_ShowCursor + */ +extern DECLSPEC void SDLCALL SDL_SetCursor(SDL_Cursor * cursor); + +/** + * Get the active cursor. + * + * This function returns a pointer to the current cursor which is owned by the + * library. It is not necessary to free the cursor with SDL_FreeCursor(). + * + * \returns the active cursor or NULL if there is no mouse. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetCursor(void); + +/** + * Get the default cursor. + * + * You do not have to call SDL_FreeCursor() on the return value, but it is + * safe to do so. + * + * \returns the default cursor on success or NULL on failure. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC SDL_Cursor *SDLCALL SDL_GetDefaultCursor(void); + +/** + * Free a previously-created cursor. + * + * Use this function to free cursor resources created with SDL_CreateCursor(), + * SDL_CreateColorCursor() or SDL_CreateSystemCursor(). + * + * \param cursor the cursor to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateColorCursor + * \sa SDL_CreateCursor + * \sa SDL_CreateSystemCursor + */ +extern DECLSPEC void SDLCALL SDL_FreeCursor(SDL_Cursor * cursor); + +/** + * Toggle whether or not the cursor is shown. + * + * The cursor starts off displayed but can be turned off. Passing `SDL_ENABLE` + * displays the cursor and passing `SDL_DISABLE` hides it. + * + * The current state of the mouse cursor can be queried by passing + * `SDL_QUERY`; either `SDL_DISABLE` or `SDL_ENABLE` will be returned. + * + * \param toggle `SDL_ENABLE` to show the cursor, `SDL_DISABLE` to hide it, + * `SDL_QUERY` to query the current state without changing it. + * \returns `SDL_ENABLE` if the cursor is shown, or `SDL_DISABLE` if the + * cursor is hidden, or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateCursor + * \sa SDL_SetCursor + */ +extern DECLSPEC int SDLCALL SDL_ShowCursor(int toggle); + +/** + * Used as a mask when testing buttons in buttonstate. + * + * - Button 1: Left mouse button + * - Button 2: Middle mouse button + * - Button 3: Right mouse button + */ +#define SDL_BUTTON(X) (1 << ((X)-1)) +#define SDL_BUTTON_LEFT 1 +#define SDL_BUTTON_MIDDLE 2 +#define SDL_BUTTON_RIGHT 3 +#define SDL_BUTTON_X1 4 +#define SDL_BUTTON_X2 5 +#define SDL_BUTTON_LMASK SDL_BUTTON(SDL_BUTTON_LEFT) +#define SDL_BUTTON_MMASK SDL_BUTTON(SDL_BUTTON_MIDDLE) +#define SDL_BUTTON_RMASK SDL_BUTTON(SDL_BUTTON_RIGHT) +#define SDL_BUTTON_X1MASK SDL_BUTTON(SDL_BUTTON_X1) +#define SDL_BUTTON_X2MASK SDL_BUTTON(SDL_BUTTON_X2) + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mouse_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mutex.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mutex.h new file mode 100644 index 0000000..d4afb6f --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_mutex.h @@ -0,0 +1,545 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_mutex_h_ +#define SDL_mutex_h_ + +/** + * \file SDL_mutex.h + * + * Functions to provide thread synchronization primitives. + */ + +#include +#include + +/******************************************************************************/ +/* Enable thread safety attributes only with clang. + * The attributes can be safely erased when compiling with other compilers. + */ +#if defined(SDL_THREAD_SAFETY_ANALYSIS) && \ + defined(__clang__) && (!defined(SWIG)) +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) __attribute__((x)) +#else +#define SDL_THREAD_ANNOTATION_ATTRIBUTE__(x) /* no-op */ +#endif + +#define SDL_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(capability(x)) + +#define SDL_SCOPED_CAPABILITY \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(scoped_lockable) + +#define SDL_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(guarded_by(x)) + +#define SDL_PT_GUARDED_BY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(pt_guarded_by(x)) + +#define SDL_ACQUIRED_BEFORE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_before(x)) + +#define SDL_ACQUIRED_AFTER(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquired_after(x)) + +#define SDL_REQUIRES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_capability(x)) + +#define SDL_REQUIRES_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(requires_shared_capability(x)) + +#define SDL_ACQUIRE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_capability(x)) + +#define SDL_ACQUIRE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(acquire_shared_capability(x)) + +#define SDL_RELEASE(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_capability(x)) + +#define SDL_RELEASE_SHARED(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_shared_capability(x)) + +#define SDL_RELEASE_GENERIC(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(release_generic_capability(x)) + +#define SDL_TRY_ACQUIRE(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_capability(x, y)) + +#define SDL_TRY_ACQUIRE_SHARED(x, y) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(try_acquire_shared_capability(x, y)) + +#define SDL_EXCLUDES(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(locks_excluded(x)) + +#define SDL_ASSERT_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_capability(x)) + +#define SDL_ASSERT_SHARED_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(assert_shared_capability(x)) + +#define SDL_RETURN_CAPABILITY(x) \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(lock_returned(x)) + +#define SDL_NO_THREAD_SAFETY_ANALYSIS \ + SDL_THREAD_ANNOTATION_ATTRIBUTE__(no_thread_safety_analysis) + +/******************************************************************************/ + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Synchronization functions which can time out return this value + * if they time out. + */ +#define SDL_MUTEX_TIMEDOUT 1 + +/** + * This is the timeout value which corresponds to never time out. + */ +#define SDL_MUTEX_MAXWAIT (~(Uint32)0) + + +/** + * \name Mutex functions + */ +/* @{ */ + +/* The SDL mutex structure, defined in SDL_sysmutex.c */ +struct SDL_mutex; +typedef struct SDL_mutex SDL_mutex; + +/** + * Create a new mutex. + * + * All newly-created mutexes begin in the _unlocked_ state. + * + * Calls to SDL_LockMutex() will not return while the mutex is locked by + * another thread. See SDL_TryLockMutex() to attempt to lock without blocking. + * + * SDL mutexes are reentrant. + * + * \returns the initialized and unlocked mutex or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC SDL_mutex *SDLCALL SDL_CreateMutex(void); + +/** + * Lock the mutex. + * + * This will block until the mutex is available, which is to say it is in the + * unlocked state and the OS has chosen the caller as the next thread to lock + * it. Of all threads waiting to lock the mutex, only one may do so at a time. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * \param mutex the mutex to lock + * \return 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_LockMutex(SDL_mutex * mutex) SDL_ACQUIRE(mutex); +#define SDL_mutexP(m) SDL_LockMutex(m) + +/** + * Try to lock a mutex without blocking. + * + * This works just like SDL_LockMutex(), but if the mutex is not available, + * this function returns `SDL_MUTEX_TIMEOUT` immediately. + * + * This technique is useful if you need exclusive access to a resource but + * don't want to wait for it, and will return to it to try again later. + * + * \param mutex the mutex to try to lock + * \returns 0, `SDL_MUTEX_TIMEDOUT`, or -1 on error; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_DestroyMutex + * \sa SDL_LockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC int SDLCALL SDL_TryLockMutex(SDL_mutex * mutex) SDL_TRY_ACQUIRE(0, mutex); + +/** + * Unlock the mutex. + * + * It is legal for the owning thread to lock an already-locked mutex. It must + * unlock it the same number of times before it is actually made available for + * other threads in the system (this is known as a "recursive mutex"). + * + * It is an error to unlock a mutex that has not been locked by the current + * thread, and doing so results in undefined behavior. + * + * It is also an error to unlock a mutex that isn't locked at all. + * + * \param mutex the mutex to unlock. + * \returns 0, or -1 on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_UnlockMutex(SDL_mutex * mutex) SDL_RELEASE(mutex); +#define SDL_mutexV(m) SDL_UnlockMutex(m) + +/** + * Destroy a mutex created with SDL_CreateMutex(). + * + * This function must be called on any mutex that is no longer needed. Failure + * to destroy a mutex will result in a system memory or resource leak. While + * it is safe to destroy a mutex that is _unlocked_, it is not safe to attempt + * to destroy a locked mutex, and may result in undefined behavior depending + * on the platform. + * + * \param mutex the mutex to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateMutex + * \sa SDL_LockMutex + * \sa SDL_TryLockMutex + * \sa SDL_UnlockMutex + */ +extern DECLSPEC void SDLCALL SDL_DestroyMutex(SDL_mutex * mutex); + +/* @} *//* Mutex functions */ + + +/** + * \name Semaphore functions + */ +/* @{ */ + +/* The SDL semaphore structure, defined in SDL_syssem.c */ +struct SDL_semaphore; +typedef struct SDL_semaphore SDL_sem; + +/** + * Create a semaphore. + * + * This function creates a new semaphore and initializes it with the value + * `initial_value`. Each wait operation on the semaphore will atomically + * decrement the semaphore value and potentially block if the semaphore value + * is 0. Each post operation will atomically increment the semaphore value and + * wake waiting threads and allow them to retry the wait operation. + * + * \param initial_value the starting value of the semaphore + * \returns a new semaphore or NULL on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC SDL_sem *SDLCALL SDL_CreateSemaphore(Uint32 initial_value); + +/** + * Destroy a semaphore. + * + * It is not safe to destroy a semaphore if there are threads currently + * waiting on it. + * + * \param sem the semaphore to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC void SDLCALL SDL_DestroySemaphore(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value or the call is interrupted by a + * signal or error. If the call is successful it will atomically decrement the + * semaphore value. + * + * This function is the equivalent of calling SDL_SemWaitTimeout() with a time + * length of `SDL_MUTEX_MAXWAIT`. + * + * \param sem the semaphore wait on + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemWait(SDL_sem * sem); + +/** + * See if a semaphore has a positive value and decrement it if it does. + * + * This function checks to see if the semaphore pointed to by `sem` has a + * positive value and atomically decrements the semaphore value if it does. If + * the semaphore doesn't have a positive value, the function immediately + * returns SDL_MUTEX_TIMEDOUT. + * + * \param sem the semaphore to wait on + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait would + * block, or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemTryWait(SDL_sem * sem); + +/** + * Wait until a semaphore has a positive value and then decrements it. + * + * This function suspends the calling thread until either the semaphore + * pointed to by `sem` has a positive value, the call is interrupted by a + * signal or error, or the specified time has elapsed. If the call is + * successful it will atomically decrement the semaphore value. + * + * \param sem the semaphore to wait on + * \param timeout the length of the timeout, in milliseconds + * \returns 0 if the wait succeeds, `SDL_MUTEX_TIMEDOUT` if the wait does not + * succeed in the allotted time, or a negative error code on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemPost + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + */ +extern DECLSPEC int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 timeout); + +/** + * Atomically increment a semaphore's value and wake waiting threads. + * + * \param sem the semaphore to increment + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + * \sa SDL_DestroySemaphore + * \sa SDL_SemTryWait + * \sa SDL_SemValue + * \sa SDL_SemWait + * \sa SDL_SemWaitTimeout + */ +extern DECLSPEC int SDLCALL SDL_SemPost(SDL_sem * sem); + +/** + * Get the current value of a semaphore. + * + * \param sem the semaphore to query + * \returns the current value of the semaphore. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSemaphore + */ +extern DECLSPEC Uint32 SDLCALL SDL_SemValue(SDL_sem * sem); + +/* @} *//* Semaphore functions */ + + +/** + * \name Condition variable functions + */ +/* @{ */ + +/* The SDL condition variable structure, defined in SDL_syscond.c */ +struct SDL_cond; +typedef struct SDL_cond SDL_cond; + +/** + * Create a condition variable. + * + * \returns a new condition variable or NULL on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_DestroyCond + */ +extern DECLSPEC SDL_cond *SDLCALL SDL_CreateCond(void); + +/** + * Destroy a condition variable. + * + * \param cond the condition variable to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + */ +extern DECLSPEC void SDLCALL SDL_DestroyCond(SDL_cond * cond); + +/** + * Restart one of the threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondSignal(SDL_cond * cond); + +/** + * Restart all threads that are waiting on the condition variable. + * + * \param cond the condition variable to signal + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondBroadcast(SDL_cond * cond); + +/** + * Wait until a condition variable is signaled. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`. Once the condition variable is signaled, the mutex is re-locked and + * the function returns. + * + * The mutex must be locked before calling this function. + * + * This function is the equivalent of calling SDL_CondWaitTimeout() with a + * time length of `SDL_MUTEX_MAXWAIT`. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \returns 0 when it is signaled or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWaitTimeout + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWait(SDL_cond * cond, SDL_mutex * mutex); + +/** + * Wait until a condition variable is signaled or a certain time has passed. + * + * This function unlocks the specified `mutex` and waits for another thread to + * call SDL_CondSignal() or SDL_CondBroadcast() on the condition variable + * `cond`, or for the specified time to elapse. Once the condition variable is + * signaled or the time elapsed, the mutex is re-locked and the function + * returns. + * + * The mutex must be locked before calling this function. + * + * \param cond the condition variable to wait on + * \param mutex the mutex used to coordinate thread access + * \param ms the maximum time to wait, in milliseconds, or `SDL_MUTEX_MAXWAIT` + * to wait indefinitely + * \returns 0 if the condition variable is signaled, `SDL_MUTEX_TIMEDOUT` if + * the condition is not signaled in the allotted time, or a negative + * error code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CondBroadcast + * \sa SDL_CondSignal + * \sa SDL_CondWait + * \sa SDL_CreateCond + * \sa SDL_DestroyCond + */ +extern DECLSPEC int SDLCALL SDL_CondWaitTimeout(SDL_cond * cond, + SDL_mutex * mutex, Uint32 ms); + +/* @} *//* Condition variable functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_mutex_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_name.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_name.h new file mode 100644 index 0000000..5c3e07a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_name.h @@ -0,0 +1,33 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDLname_h_ +#define SDLname_h_ + +#if defined(__STDC__) || defined(__cplusplus) +#define NeedFunctionPrototypes 1 +#endif + +#define SDL_NAME(X) SDL_##X + +#endif /* SDLname_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl.h new file mode 100644 index 0000000..e1bc5ef --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl.h @@ -0,0 +1,2132 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengl.h + * + * This is a simple file to encapsulate the OpenGL API headers. + */ + +/** + * \def NO_SDL_GLEXT + * + * Define this if you have your own version of glext.h and want to disable the + * version included in SDL_opengl.h. + */ + +#ifndef SDL_opengl_h_ +#define SDL_opengl_h_ + +#include + +#ifndef __IPHONEOS__ /* No OpenGL on iOS. */ + +/* + * 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_ + +#if defined(USE_MGL_NAMESPACE) +#include +#endif + + +/********************************************************************** + * 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 /* _STATIC_MESA support */ +# 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(__OS2__) || defined(__EMX__) /* native os/2 opengl */ +# define GLAPI extern +# define GLAPIENTRY _System +# define APIENTRY _System +# if defined(__GNUC__) && !defined(_System) +# define _System +# endif +#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 /* don't define min() and max(). */ +#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 + +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export on +#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 0x000FFFFF + + +/* 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(NO_SDL_GLEXT) && !defined(GL_GLEXT_LEGACY) +#include +#endif /* GL_GLEXT_LEGACY */ + + + +/********************************************************************** + * Begin system-specific stuff + */ +#if defined(PRAGMA_EXPORT_SUPPORTED) +#pragma export off +#endif + +/* + * End system-specific stuff + **********************************************************************/ + + +#ifdef __cplusplus +} +#endif + +#endif /* __gl_h_ */ + +#endif /* !__IPHONEOS__ */ + +#endif /* SDL_opengl_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl_glext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl_glext.h new file mode 100644 index 0000000..ff6ad12 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengl_glext.h @@ -0,0 +1,13213 @@ +/* SDL modified the include guard to be compatible with Mesa and Apple include guards: + * - Mesa uses: __gl_glext_h_ + * - Apple uses: __glext_h_ */ +#if !defined(__glext_h_) && !defined(__gl_glext_h_) +#define __glext_h_ 1 +#define __gl_glext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN 1 +#endif +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif +#ifndef GLAPI +#define GLAPI extern +#endif + +#define GL_GLEXT_VERSION 20220530 + +/*#include */ +#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_ */ + +/* 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, GLuint *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, GLuint *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_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_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_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_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 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); +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); +#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 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); +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); +#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_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); +#ifdef GL_GLEXT_PROTOTYPES +GLAPI void APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles.h new file mode 100644 index 0000000..b564351 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles.h @@ -0,0 +1,39 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles.h + * + * This is a simple file to encapsulate the OpenGL ES 1.X API headers. + */ +#include + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#endif + +#ifndef APIENTRY +#define APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h new file mode 100644 index 0000000..e385448 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2.h @@ -0,0 +1,52 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_opengles2.h + * + * This is a simple file to encapsulate the OpenGL ES 2.0 API headers. + */ +#include + +#if !defined(_MSC_VER) && !defined(SDL_USE_BUILTIN_OPENGL_DEFINITIONS) + +#ifdef __IPHONEOS__ +#include +#include +#else +#include +#include +#include +#endif + +#else /* _MSC_VER */ + +/* OpenGL ES2 headers for Visual Studio */ +#include +#include +#include +#include + +#endif /* _MSC_VER */ + +#ifndef APIENTRY +#define APIENTRY GL_APIENTRY +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2.h new file mode 100644 index 0000000..d13622a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2.h @@ -0,0 +1,656 @@ +#ifndef __gles2_gl2_h_ +#define __gles2_gl2_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +/*#include */ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +#ifndef GL_GLES_PROTOTYPES +#define GL_GLES_PROTOTYPES 1 +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: .* + * Default extensions included: None + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#ifndef GL_ES_VERSION_2_0 +#define GL_ES_VERSION_2_0 1 +/*#include */ +typedef khronos_int8_t GLbyte; +typedef khronos_float_t GLclampf; +typedef khronos_int32_t GLfixed; +typedef khronos_int16_t GLshort; +typedef khronos_uint16_t GLushort; +typedef void GLvoid; +typedef struct __GLsync *GLsync; +typedef khronos_int64_t GLint64; +typedef khronos_uint64_t GLuint64; +typedef unsigned int GLenum; +typedef unsigned int GLuint; +typedef char GLchar; +typedef khronos_float_t GLfloat; +typedef khronos_ssize_t GLsizeiptr; +typedef khronos_intptr_t GLintptr; +typedef unsigned int GLbitfield; +typedef int GLint; +typedef unsigned char GLboolean; +typedef int GLsizei; +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_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_FUNC_ADD 0x8006 +#define GL_BLEND_EQUATION 0x8009 +#define GL_BLEND_EQUATION_RGB 0x8009 +#define GL_BLEND_EQUATION_ALPHA 0x883D +#define GL_FUNC_SUBTRACT 0x800A +#define GL_FUNC_REVERSE_SUBTRACT 0x800B +#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_CONSTANT_COLOR 0x8001 +#define GL_ONE_MINUS_CONSTANT_COLOR 0x8002 +#define GL_CONSTANT_ALPHA 0x8003 +#define GL_ONE_MINUS_CONSTANT_ALPHA 0x8004 +#define GL_BLEND_COLOR 0x8005 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_ELEMENT_ARRAY_BUFFER 0x8893 +#define GL_ARRAY_BUFFER_BINDING 0x8894 +#define GL_ELEMENT_ARRAY_BUFFER_BINDING 0x8895 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STATIC_DRAW 0x88E4 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_BUFFER_SIZE 0x8764 +#define GL_BUFFER_USAGE 0x8765 +#define GL_CURRENT_VERTEX_ATTRIB 0x8626 +#define GL_FRONT 0x0404 +#define GL_BACK 0x0405 +#define GL_FRONT_AND_BACK 0x0408 +#define GL_TEXTURE_2D 0x0DE1 +#define GL_CULL_FACE 0x0B44 +#define GL_BLEND 0x0BE2 +#define GL_DITHER 0x0BD0 +#define GL_STENCIL_TEST 0x0B90 +#define GL_DEPTH_TEST 0x0B71 +#define GL_SCISSOR_TEST 0x0C11 +#define GL_POLYGON_OFFSET_FILL 0x8037 +#define GL_SAMPLE_ALPHA_TO_COVERAGE 0x809E +#define GL_SAMPLE_COVERAGE 0x80A0 +#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_LINE_WIDTH 0x0B21 +#define GL_ALIASED_POINT_SIZE_RANGE 0x846D +#define GL_ALIASED_LINE_WIDTH_RANGE 0x846E +#define GL_CULL_FACE_MODE 0x0B45 +#define GL_FRONT_FACE 0x0B46 +#define GL_DEPTH_RANGE 0x0B70 +#define GL_DEPTH_WRITEMASK 0x0B72 +#define GL_DEPTH_CLEAR_VALUE 0x0B73 +#define GL_DEPTH_FUNC 0x0B74 +#define GL_STENCIL_CLEAR_VALUE 0x0B91 +#define GL_STENCIL_FUNC 0x0B92 +#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_VALUE_MASK 0x0B93 +#define GL_STENCIL_WRITEMASK 0x0B98 +#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_STENCIL_BACK_REF 0x8CA3 +#define GL_STENCIL_BACK_VALUE_MASK 0x8CA4 +#define GL_STENCIL_BACK_WRITEMASK 0x8CA5 +#define GL_VIEWPORT 0x0BA2 +#define GL_SCISSOR_BOX 0x0C10 +#define GL_COLOR_CLEAR_VALUE 0x0C22 +#define GL_COLOR_WRITEMASK 0x0C23 +#define GL_UNPACK_ALIGNMENT 0x0CF5 +#define GL_PACK_ALIGNMENT 0x0D05 +#define GL_MAX_TEXTURE_SIZE 0x0D33 +#define GL_MAX_VIEWPORT_DIMS 0x0D3A +#define GL_SUBPIXEL_BITS 0x0D50 +#define GL_RED_BITS 0x0D52 +#define GL_GREEN_BITS 0x0D53 +#define GL_BLUE_BITS 0x0D54 +#define GL_ALPHA_BITS 0x0D55 +#define GL_DEPTH_BITS 0x0D56 +#define GL_STENCIL_BITS 0x0D57 +#define GL_POLYGON_OFFSET_UNITS 0x2A00 +#define GL_POLYGON_OFFSET_FACTOR 0x8038 +#define GL_TEXTURE_BINDING_2D 0x8069 +#define GL_SAMPLE_BUFFERS 0x80A8 +#define GL_SAMPLES 0x80A9 +#define GL_SAMPLE_COVERAGE_VALUE 0x80AA +#define GL_SAMPLE_COVERAGE_INVERT 0x80AB +#define GL_NUM_COMPRESSED_TEXTURE_FORMATS 0x86A2 +#define GL_COMPRESSED_TEXTURE_FORMATS 0x86A3 +#define GL_DONT_CARE 0x1100 +#define GL_FASTEST 0x1101 +#define GL_NICEST 0x1102 +#define GL_GENERATE_MIPMAP_HINT 0x8192 +#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_FIXED 0x140C +#define GL_DEPTH_COMPONENT 0x1902 +#define GL_ALPHA 0x1906 +#define GL_RGB 0x1907 +#define GL_RGBA 0x1908 +#define GL_LUMINANCE 0x1909 +#define GL_LUMINANCE_ALPHA 0x190A +#define GL_UNSIGNED_SHORT_4_4_4_4 0x8033 +#define GL_UNSIGNED_SHORT_5_5_5_1 0x8034 +#define GL_UNSIGNED_SHORT_5_6_5 0x8363 +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_MAX_VERTEX_ATTRIBS 0x8869 +#define GL_MAX_VERTEX_UNIFORM_VECTORS 0x8DFB +#define GL_MAX_VARYING_VECTORS 0x8DFC +#define GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS 0x8B4D +#define GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS 0x8B4C +#define GL_MAX_TEXTURE_IMAGE_UNITS 0x8872 +#define GL_MAX_FRAGMENT_UNIFORM_VECTORS 0x8DFD +#define GL_SHADER_TYPE 0x8B4F +#define GL_DELETE_STATUS 0x8B80 +#define GL_LINK_STATUS 0x8B82 +#define GL_VALIDATE_STATUS 0x8B83 +#define GL_ATTACHED_SHADERS 0x8B85 +#define GL_ACTIVE_UNIFORMS 0x8B86 +#define GL_ACTIVE_UNIFORM_MAX_LENGTH 0x8B87 +#define GL_ACTIVE_ATTRIBUTES 0x8B89 +#define GL_ACTIVE_ATTRIBUTE_MAX_LENGTH 0x8B8A +#define GL_SHADING_LANGUAGE_VERSION 0x8B8C +#define GL_CURRENT_PROGRAM 0x8B8D +#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_KEEP 0x1E00 +#define GL_REPLACE 0x1E01 +#define GL_INCR 0x1E02 +#define GL_DECR 0x1E03 +#define GL_INVERT 0x150A +#define GL_INCR_WRAP 0x8507 +#define GL_DECR_WRAP 0x8508 +#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_TEXTURE 0x1702 +#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_MAX_CUBE_MAP_TEXTURE_SIZE 0x851C +#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_REPEAT 0x2901 +#define GL_CLAMP_TO_EDGE 0x812F +#define GL_MIRRORED_REPEAT 0x8370 +#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_2D 0x8B5E +#define GL_SAMPLER_CUBE 0x8B60 +#define GL_VERTEX_ATTRIB_ARRAY_ENABLED 0x8622 +#define GL_VERTEX_ATTRIB_ARRAY_SIZE 0x8623 +#define GL_VERTEX_ATTRIB_ARRAY_STRIDE 0x8624 +#define GL_VERTEX_ATTRIB_ARRAY_TYPE 0x8625 +#define GL_VERTEX_ATTRIB_ARRAY_NORMALIZED 0x886A +#define GL_VERTEX_ATTRIB_ARRAY_POINTER 0x8645 +#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING 0x889F +#define GL_IMPLEMENTATION_COLOR_READ_TYPE 0x8B9A +#define GL_IMPLEMENTATION_COLOR_READ_FORMAT 0x8B9B +#define GL_COMPILE_STATUS 0x8B81 +#define GL_INFO_LOG_LENGTH 0x8B84 +#define GL_SHADER_SOURCE_LENGTH 0x8B88 +#define GL_SHADER_COMPILER 0x8DFA +#define GL_SHADER_BINARY_FORMATS 0x8DF8 +#define GL_NUM_SHADER_BINARY_FORMATS 0x8DF9 +#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_FRAMEBUFFER 0x8D40 +#define GL_RENDERBUFFER 0x8D41 +#define GL_RGBA4 0x8056 +#define GL_RGB5_A1 0x8057 +#define GL_RGB565 0x8D62 +#define GL_DEPTH_COMPONENT16 0x81A5 +#define GL_STENCIL_INDEX8 0x8D48 +#define GL_RENDERBUFFER_WIDTH 0x8D42 +#define GL_RENDERBUFFER_HEIGHT 0x8D43 +#define GL_RENDERBUFFER_INTERNAL_FORMAT 0x8D44 +#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_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_COLOR_ATTACHMENT0 0x8CE0 +#define GL_DEPTH_ATTACHMENT 0x8D00 +#define GL_STENCIL_ATTACHMENT 0x8D20 +#define GL_NONE 0 +#define GL_FRAMEBUFFER_COMPLETE 0x8CD5 +#define GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 0x8CD6 +#define GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT 0x8CD7 +#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 0x8CD9 +#define GL_FRAMEBUFFER_UNSUPPORTED 0x8CDD +#define GL_FRAMEBUFFER_BINDING 0x8CA6 +#define GL_RENDERBUFFER_BINDING 0x8CA7 +#define GL_MAX_RENDERBUFFER_SIZE 0x84E8 +#define GL_INVALID_FRAMEBUFFER_OPERATION 0x0506 +typedef void (GL_APIENTRYP PFNGLACTIVETEXTUREPROC) (GLenum texture); +typedef void (GL_APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLBINDATTRIBLOCATIONPROC) (GLuint program, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLBINDFRAMEBUFFERPROC) (GLenum target, GLuint framebuffer); +typedef void (GL_APIENTRYP PFNGLBINDRENDERBUFFERPROC) (GLenum target, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLBINDTEXTUREPROC) (GLenum target, GLuint texture); +typedef void (GL_APIENTRYP PFNGLBLENDCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEPROC) (GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCPROC) (GLenum sfactor, GLenum dfactor); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEPROC) (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +typedef void (GL_APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +typedef void (GL_APIENTRYP PFNGLBUFFERSUBDATAPROC) (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +typedef GLenum (GL_APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLCLEARPROC) (GLbitfield mask); +typedef void (GL_APIENTRYP PFNGLCLEARCOLORPROC) (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +typedef void (GL_APIENTRYP PFNGLCLEARDEPTHFPROC) (GLfloat d); +typedef void (GL_APIENTRYP PFNGLCLEARSTENCILPROC) (GLint s); +typedef void (GL_APIENTRYP PFNGLCOLORMASKPROC) (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +typedef void (GL_APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOPYTEXIMAGE2DPROC) (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +typedef void (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef GLuint (GL_APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (GL_APIENTRYP PFNGLCULLFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLDELETEFRAMEBUFFERSPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLDELETERENDERBUFFERSPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLDELETESHADERPROC) (GLuint shader); +typedef void (GL_APIENTRYP PFNGLDELETETEXTURESPROC) (GLsizei n, const GLuint *textures); +typedef void (GL_APIENTRYP PFNGLDEPTHFUNCPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLDEPTHMASKPROC) (GLboolean flag); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEFPROC) (GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLDETACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (GL_APIENTRYP PFNGLDISABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLDISABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSPROC) (GLenum mode, GLint first, GLsizei count); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices); +typedef void (GL_APIENTRYP PFNGLENABLEPROC) (GLenum cap); +typedef void (GL_APIENTRYP PFNGLENABLEVERTEXATTRIBARRAYPROC) (GLuint index); +typedef void (GL_APIENTRYP PFNGLFINISHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFLUSHPROC) (void); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFERPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (GL_APIENTRYP PFNGLFRONTFACEPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (GL_APIENTRYP PFNGLGENERATEMIPMAPPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGENFRAMEBUFFERSPROC) (GLsizei n, GLuint *framebuffers); +typedef void (GL_APIENTRYP PFNGLGENRENDERBUFFERSPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (GL_APIENTRYP PFNGLGENTEXTURESPROC) (GLsizei n, GLuint *textures); +typedef void (GL_APIENTRYP PFNGLGETACTIVEATTRIBPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETACTIVEUNIFORMPROC) (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETATTACHEDSHADERSPROC) (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +typedef GLint (GL_APIENTRYP PFNGLGETATTRIBLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETBOOLEANVPROC) (GLenum pname, GLboolean *data); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef GLenum (GL_APIENTRYP PFNGLGETERRORPROC) (void); +typedef void (GL_APIENTRYP PFNGLGETFLOATVPROC) (GLenum pname, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC) (GLenum target, GLenum attachment, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGERVPROC) (GLenum pname, GLint *data); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETRENDERBUFFERPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETSHADERPRECISIONFORMATPROC) (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +typedef void (GL_APIENTRYP PFNGLGETSHADERSOURCEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +typedef const GLubyte *(GL_APIENTRYP PFNGLGETSTRINGPROC) (GLenum name); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERFVPROC) (GLenum target, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIVPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMFVPROC) (GLuint program, GLint location, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMIVPROC) (GLuint program, GLint location, GLint *params); +typedef GLint (GL_APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBFVPROC) (GLuint index, GLenum pname, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBIVPROC) (GLuint index, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETVERTEXATTRIBPOINTERVPROC) (GLuint index, GLenum pname, void **pointer); +typedef void (GL_APIENTRYP PFNGLHINTPROC) (GLenum target, GLenum mode); +typedef GLboolean (GL_APIENTRYP PFNGLISBUFFERPROC) (GLuint buffer); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDPROC) (GLenum cap); +typedef GLboolean (GL_APIENTRYP PFNGLISFRAMEBUFFERPROC) (GLuint framebuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPROC) (GLuint program); +typedef GLboolean (GL_APIENTRYP PFNGLISRENDERBUFFERPROC) (GLuint renderbuffer); +typedef GLboolean (GL_APIENTRYP PFNGLISSHADERPROC) (GLuint shader); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLLINEWIDTHPROC) (GLfloat width); +typedef void (GL_APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLPIXELSTOREIPROC) (GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLREADPIXELSPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +typedef void (GL_APIENTRYP PFNGLRELEASESHADERCOMPILERPROC) (void); +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSAMPLECOVERAGEPROC) (GLfloat value, GLboolean invert); +typedef void (GL_APIENTRYP PFNGLSCISSORPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSHADERBINARYPROC) (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +typedef void (GL_APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFUNCSEPARATEPROC) (GLenum face, GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKPROC) (GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILMASKSEPARATEPROC) (GLenum face, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILOPPROC) (GLenum fail, GLenum zfail, GLenum zpass); +typedef void (GL_APIENTRYP PFNGLSTENCILOPSEPARATEPROC) (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +typedef void (GL_APIENTRYP PFNGLTEXIMAGE2DPROC) (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFPROC) (GLenum target, GLenum pname, GLfloat param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERFVPROC) (GLenum target, GLenum pname, const GLfloat *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIVPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE2DPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLUNIFORM1IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FPROC) (GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IPROC) (GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLUNIFORM2IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IPROC) (GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLUNIFORM3IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FPROC) (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4FVPROC) (GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IPROC) (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLUNIFORM4IVPROC) (GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FPROC) (GLuint index, GLfloat x); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB1FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FPROC) (GLuint index, GLfloat x, GLfloat y); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB2FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB3FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIB4FVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBPOINTERPROC) (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +typedef void (GL_APIENTRYP PFNGLVIEWPORTPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +#if GL_GLES_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveTexture (GLenum texture); +GL_APICALL void GL_APIENTRY glAttachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glBindAttribLocation (GLuint program, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindBuffer (GLenum target, GLuint buffer); +GL_APICALL void GL_APIENTRY glBindFramebuffer (GLenum target, GLuint framebuffer); +GL_APICALL void GL_APIENTRY glBindRenderbuffer (GLenum target, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glBindTexture (GLenum target, GLuint texture); +GL_APICALL void GL_APIENTRY glBlendColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glBlendEquation (GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparate (GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunc (GLenum sfactor, GLenum dfactor); +GL_APICALL void GL_APIENTRY glBlendFuncSeparate (GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); +GL_APICALL void GL_APIENTRY glBufferData (GLenum target, GLsizeiptr size, const void *data, GLenum usage); +GL_APICALL void GL_APIENTRY glBufferSubData (GLenum target, GLintptr offset, GLsizeiptr size, const void *data); +GL_APICALL GLenum GL_APIENTRY glCheckFramebufferStatus (GLenum target); +GL_APICALL void GL_APIENTRY glClear (GLbitfield mask); +GL_APICALL void GL_APIENTRY glClearColor (GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); +GL_APICALL void GL_APIENTRY glClearDepthf (GLfloat d); +GL_APICALL void GL_APIENTRY glClearStencil (GLint s); +GL_APICALL void GL_APIENTRY glColorMask (GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); +GL_APICALL void GL_APIENTRY glCompileShader (GLuint shader); +GL_APICALL void GL_APIENTRY glCompressedTexImage2D (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCopyTexImage2D (GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); +GL_APICALL void GL_APIENTRY glCopyTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL GLuint GL_APIENTRY glCreateProgram (void); +GL_APICALL GLuint GL_APIENTRY glCreateShader (GLenum type); +GL_APICALL void GL_APIENTRY glCullFace (GLenum mode); +GL_APICALL void GL_APIENTRY glDeleteBuffers (GLsizei n, const GLuint *buffers); +GL_APICALL void GL_APIENTRY glDeleteFramebuffers (GLsizei n, const GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glDeleteProgram (GLuint program); +GL_APICALL void GL_APIENTRY glDeleteRenderbuffers (GLsizei n, const GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glDeleteShader (GLuint shader); +GL_APICALL void GL_APIENTRY glDeleteTextures (GLsizei n, const GLuint *textures); +GL_APICALL void GL_APIENTRY glDepthFunc (GLenum func); +GL_APICALL void GL_APIENTRY glDepthMask (GLboolean flag); +GL_APICALL void GL_APIENTRY glDepthRangef (GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glDetachShader (GLuint program, GLuint shader); +GL_APICALL void GL_APIENTRY glDisable (GLenum cap); +GL_APICALL void GL_APIENTRY glDisableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glDrawArrays (GLenum mode, GLint first, GLsizei count); +GL_APICALL void GL_APIENTRY glDrawElements (GLenum mode, GLsizei count, GLenum type, const void *indices); +GL_APICALL void GL_APIENTRY glEnable (GLenum cap); +GL_APICALL void GL_APIENTRY glEnableVertexAttribArray (GLuint index); +GL_APICALL void GL_APIENTRY glFinish (void); +GL_APICALL void GL_APIENTRY glFlush (void); +GL_APICALL void GL_APIENTRY glFramebufferRenderbuffer (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +GL_APICALL void GL_APIENTRY glFramebufferTexture2D (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +GL_APICALL void GL_APIENTRY glFrontFace (GLenum mode); +GL_APICALL void GL_APIENTRY glGenBuffers (GLsizei n, GLuint *buffers); +GL_APICALL void GL_APIENTRY glGenerateMipmap (GLenum target); +GL_APICALL void GL_APIENTRY glGenFramebuffers (GLsizei n, GLuint *framebuffers); +GL_APICALL void GL_APIENTRY glGenRenderbuffers (GLsizei n, GLuint *renderbuffers); +GL_APICALL void GL_APIENTRY glGenTextures (GLsizei n, GLuint *textures); +GL_APICALL void GL_APIENTRY glGetActiveAttrib (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetActiveUniform (GLuint program, GLuint index, GLsizei bufSize, GLsizei *length, GLint *size, GLenum *type, GLchar *name); +GL_APICALL void GL_APIENTRY glGetAttachedShaders (GLuint program, GLsizei maxCount, GLsizei *count, GLuint *shaders); +GL_APICALL GLint GL_APIENTRY glGetAttribLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetBooleanv (GLenum pname, GLboolean *data); +GL_APICALL void GL_APIENTRY glGetBufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL GLenum GL_APIENTRY glGetError (void); +GL_APICALL void GL_APIENTRY glGetFloatv (GLenum pname, GLfloat *data); +GL_APICALL void GL_APIENTRY glGetFramebufferAttachmentParameteriv (GLenum target, GLenum attachment, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetIntegerv (GLenum pname, GLint *data); +GL_APICALL void GL_APIENTRY glGetProgramiv (GLuint program, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetProgramInfoLog (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetRenderbufferParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderiv (GLuint shader, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetShaderInfoLog (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetShaderPrecisionFormat (GLenum shadertype, GLenum precisiontype, GLint *range, GLint *precision); +GL_APICALL void GL_APIENTRY glGetShaderSource (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +GL_APICALL const GLubyte *GL_APIENTRY glGetString (GLenum name); +GL_APICALL void GL_APIENTRY glGetTexParameterfv (GLenum target, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetTexParameteriv (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetUniformfv (GLuint program, GLint location, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetUniformiv (GLuint program, GLint location, GLint *params); +GL_APICALL GLint GL_APIENTRY glGetUniformLocation (GLuint program, const GLchar *name); +GL_APICALL void GL_APIENTRY glGetVertexAttribfv (GLuint index, GLenum pname, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribiv (GLuint index, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetVertexAttribPointerv (GLuint index, GLenum pname, void **pointer); +GL_APICALL void GL_APIENTRY glHint (GLenum target, GLenum mode); +GL_APICALL GLboolean GL_APIENTRY glIsBuffer (GLuint buffer); +GL_APICALL GLboolean GL_APIENTRY glIsEnabled (GLenum cap); +GL_APICALL GLboolean GL_APIENTRY glIsFramebuffer (GLuint framebuffer); +GL_APICALL GLboolean GL_APIENTRY glIsProgram (GLuint program); +GL_APICALL GLboolean GL_APIENTRY glIsRenderbuffer (GLuint renderbuffer); +GL_APICALL GLboolean GL_APIENTRY glIsShader (GLuint shader); +GL_APICALL GLboolean GL_APIENTRY glIsTexture (GLuint texture); +GL_APICALL void GL_APIENTRY glLineWidth (GLfloat width); +GL_APICALL void GL_APIENTRY glLinkProgram (GLuint program); +GL_APICALL void GL_APIENTRY glPixelStorei (GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glPolygonOffset (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glReadPixels (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, void *pixels); +GL_APICALL void GL_APIENTRY glReleaseShaderCompiler (void); +GL_APICALL void GL_APIENTRY glRenderbufferStorage (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glSampleCoverage (GLfloat value, GLboolean invert); +GL_APICALL void GL_APIENTRY glScissor (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glShaderBinary (GLsizei count, const GLuint *shaders, GLenum binaryFormat, const void *binary, GLsizei length); +GL_APICALL void GL_APIENTRY glShaderSource (GLuint shader, GLsizei count, const GLchar *const*string, const GLint *length); +GL_APICALL void GL_APIENTRY glStencilFunc (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFuncSeparate (GLenum face, GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMask (GLuint mask); +GL_APICALL void GL_APIENTRY glStencilMaskSeparate (GLenum face, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilOp (GLenum fail, GLenum zfail, GLenum zpass); +GL_APICALL void GL_APIENTRY glStencilOpSeparate (GLenum face, GLenum sfail, GLenum dpfail, GLenum dppass); +GL_APICALL void GL_APIENTRY glTexImage2D (GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexParameterf (GLenum target, GLenum pname, GLfloat param); +GL_APICALL void GL_APIENTRY glTexParameterfv (GLenum target, GLenum pname, const GLfloat *params); +GL_APICALL void GL_APIENTRY glTexParameteri (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glTexParameteriv (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexSubImage2D (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glUniform1f (GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glUniform1fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform1i (GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glUniform1iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform2f (GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glUniform2fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform2i (GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glUniform2iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform3f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glUniform3fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform3i (GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glUniform3iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniform4f (GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glUniform4fv (GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniform4i (GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glUniform4iv (GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4fv (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgram (GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgram (GLuint program); +GL_APICALL void GL_APIENTRY glVertexAttrib1f (GLuint index, GLfloat x); +GL_APICALL void GL_APIENTRY glVertexAttrib1fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib2f (GLuint index, GLfloat x, GLfloat y); +GL_APICALL void GL_APIENTRY glVertexAttrib2fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib3f (GLuint index, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glVertexAttrib3fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttrib4f (GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); +GL_APICALL void GL_APIENTRY glVertexAttrib4fv (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glVertexAttribPointer (GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const void *pointer); +GL_APICALL void GL_APIENTRY glViewport (GLint x, GLint y, GLsizei width, GLsizei height); +#endif +#endif /* GL_ES_VERSION_2_0 */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2ext.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2ext.h new file mode 100644 index 0000000..9448ce0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2ext.h @@ -0,0 +1,4033 @@ +#ifndef __gles2_gl2ext_h_ +#define __gles2_gl2ext_h_ 1 + +#ifdef __cplusplus +extern "C" { +#endif + +/* +** Copyright 2013-2020 The Khronos Group Inc. +** SPDX-License-Identifier: MIT +** +** This header is generated from the Khronos OpenGL / OpenGL ES XML +** API Registry. The current version of the Registry, generator scripts +** used to make the header, and the header can be found at +** https://github.com/KhronosGroup/OpenGL-Registry +*/ + +#ifndef GL_APIENTRYP +#define GL_APIENTRYP GL_APIENTRY* +#endif + +/* Generated on date 20220530 */ + +/* Generated C header for: + * API: gles2 + * Profile: common + * Versions considered: 2\.[0-9] + * Versions emitted: _nomatch_^ + * Default extensions included: gles2 + * Additional extensions included: _nomatch_^ + * Extensions removed: _nomatch_^ + */ + +#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 (GL_APIENTRYP PFNGLBLENDBARRIERKHRPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 +#define GL_CONTEXT_RELEASE_BEHAVIOR_KHR 0x82FB +#define GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR 0x82FC +#endif /* GL_KHR_context_flush_control */ + +#ifndef GL_KHR_debug +#define GL_KHR_debug 1 +typedef void (GL_APIENTRY *GLDEBUGPROCKHR)(GLenum source,GLenum type,GLuint id,GLenum severity,GLsizei length,const GLchar *message,const void *userParam); +#define GL_SAMPLER 0x82E6 +#define GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR 0x8242 +#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR 0x8243 +#define GL_DEBUG_CALLBACK_FUNCTION_KHR 0x8244 +#define GL_DEBUG_CALLBACK_USER_PARAM_KHR 0x8245 +#define GL_DEBUG_SOURCE_API_KHR 0x8246 +#define GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR 0x8247 +#define GL_DEBUG_SOURCE_SHADER_COMPILER_KHR 0x8248 +#define GL_DEBUG_SOURCE_THIRD_PARTY_KHR 0x8249 +#define GL_DEBUG_SOURCE_APPLICATION_KHR 0x824A +#define GL_DEBUG_SOURCE_OTHER_KHR 0x824B +#define GL_DEBUG_TYPE_ERROR_KHR 0x824C +#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR 0x824D +#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR 0x824E +#define GL_DEBUG_TYPE_PORTABILITY_KHR 0x824F +#define GL_DEBUG_TYPE_PERFORMANCE_KHR 0x8250 +#define GL_DEBUG_TYPE_OTHER_KHR 0x8251 +#define GL_DEBUG_TYPE_MARKER_KHR 0x8268 +#define GL_DEBUG_TYPE_PUSH_GROUP_KHR 0x8269 +#define GL_DEBUG_TYPE_POP_GROUP_KHR 0x826A +#define GL_DEBUG_SEVERITY_NOTIFICATION_KHR 0x826B +#define GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR 0x826C +#define GL_DEBUG_GROUP_STACK_DEPTH_KHR 0x826D +#define GL_BUFFER_KHR 0x82E0 +#define GL_SHADER_KHR 0x82E1 +#define GL_PROGRAM_KHR 0x82E2 +#define GL_VERTEX_ARRAY_KHR 0x8074 +#define GL_QUERY_KHR 0x82E3 +#define GL_PROGRAM_PIPELINE_KHR 0x82E4 +#define GL_SAMPLER_KHR 0x82E6 +#define GL_MAX_LABEL_LENGTH_KHR 0x82E8 +#define GL_MAX_DEBUG_MESSAGE_LENGTH_KHR 0x9143 +#define GL_MAX_DEBUG_LOGGED_MESSAGES_KHR 0x9144 +#define GL_DEBUG_LOGGED_MESSAGES_KHR 0x9145 +#define GL_DEBUG_SEVERITY_HIGH_KHR 0x9146 +#define GL_DEBUG_SEVERITY_MEDIUM_KHR 0x9147 +#define GL_DEBUG_SEVERITY_LOW_KHR 0x9148 +#define GL_DEBUG_OUTPUT_KHR 0x92E0 +#define GL_CONTEXT_FLAG_DEBUG_BIT_KHR 0x00000002 +#define GL_STACK_OVERFLOW_KHR 0x0503 +#define GL_STACK_UNDERFLOW_KHR 0x0504 +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECONTROLKHRPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGEINSERTKHRPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +typedef void (GL_APIENTRYP PFNGLDEBUGMESSAGECALLBACKKHRPROC) (GLDEBUGPROCKHR callback, const void *userParam); +typedef GLuint (GL_APIENTRYP PFNGLGETDEBUGMESSAGELOGKHRPROC) (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +typedef void (GL_APIENTRYP PFNGLPUSHDEBUGGROUPKHRPROC) (GLenum source, GLuint id, GLsizei length, const GLchar *message); +typedef void (GL_APIENTRYP PFNGLPOPDEBUGGROUPKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELKHRPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTPTRLABELKHRPROC) (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETPOINTERVKHRPROC) (GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDebugMessageControlKHR (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint *ids, GLboolean enabled); +GL_APICALL void GL_APIENTRY glDebugMessageInsertKHR (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *buf); +GL_APICALL void GL_APIENTRY glDebugMessageCallbackKHR (GLDEBUGPROCKHR callback, const void *userParam); +GL_APICALL GLuint GL_APIENTRY glGetDebugMessageLogKHR (GLuint count, GLsizei bufSize, GLenum *sources, GLenum *types, GLuint *ids, GLenum *severities, GLsizei *lengths, GLchar *messageLog); +GL_APICALL void GL_APIENTRY glPushDebugGroupKHR (GLenum source, GLuint id, GLsizei length, const GLchar *message); +GL_APICALL void GL_APIENTRY glPopDebugGroupKHR (void); +GL_APICALL void GL_APIENTRY glObjectLabelKHR (GLenum identifier, GLuint name, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectLabelKHR (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glObjectPtrLabelKHR (const void *ptr, GLsizei length, const GLchar *label); +GL_APICALL void GL_APIENTRY glGetObjectPtrLabelKHR (const void *ptr, GLsizei bufSize, GLsizei *length, GLchar *label); +GL_APICALL void GL_APIENTRY glGetPointervKHR (GLenum pname, void **params); +#endif +#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 (GL_APIENTRYP PFNGLMAXSHADERCOMPILERTHREADSKHRPROC) (GLuint count); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_KHR 0x90F3 +#define GL_LOSE_CONTEXT_ON_RESET_KHR 0x8252 +#define GL_GUILTY_CONTEXT_RESET_KHR 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_KHR 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_KHR 0x8255 +#define GL_RESET_NOTIFICATION_STRATEGY_KHR 0x8256 +#define GL_NO_RESET_NOTIFICATION_KHR 0x8261 +#define GL_CONTEXT_LOST_KHR 0x0507 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSKHRPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSKHRPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMUIVKHRPROC) (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusKHR (void); +GL_APICALL void GL_APIENTRY glReadnPixelsKHR (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvKHR (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivKHR (GLuint program, GLint location, GLsizei bufSize, GLint *params); +GL_APICALL void GL_APIENTRY glGetnUniformuivKHR (GLuint program, GLint location, GLsizei bufSize, GLuint *params); +#endif +#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_EGL_image +#define GL_OES_EGL_image 1 +typedef void *GLeglImageOES; +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURE2DOESPROC) (GLenum target, GLeglImageOES image); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETRENDERBUFFERSTORAGEOESPROC) (GLenum target, GLeglImageOES image); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexture2DOES (GLenum target, GLeglImageOES image); +GL_APICALL void GL_APIENTRY glEGLImageTargetRenderbufferStorageOES (GLenum target, GLeglImageOES image); +#endif +#endif /* GL_OES_EGL_image */ + +#ifndef GL_OES_EGL_image_external +#define GL_OES_EGL_image_external 1 +#define GL_TEXTURE_EXTERNAL_OES 0x8D65 +#define GL_TEXTURE_BINDING_EXTERNAL_OES 0x8D67 +#define GL_REQUIRED_TEXTURE_IMAGE_UNITS_OES 0x8D68 +#define GL_SAMPLER_EXTERNAL_OES 0x8D66 +#endif /* GL_OES_EGL_image_external */ + +#ifndef GL_OES_EGL_image_external_essl3 +#define GL_OES_EGL_image_external_essl3 1 +#endif /* GL_OES_EGL_image_external_essl3 */ + +#ifndef GL_OES_compressed_ETC1_RGB8_sub_texture +#define GL_OES_compressed_ETC1_RGB8_sub_texture 1 +#endif /* GL_OES_compressed_ETC1_RGB8_sub_texture */ + +#ifndef GL_OES_compressed_ETC1_RGB8_texture +#define GL_OES_compressed_ETC1_RGB8_texture 1 +#define GL_ETC1_RGB8_OES 0x8D64 +#endif /* GL_OES_compressed_ETC1_RGB8_texture */ + +#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_copy_image +#define GL_OES_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAOESPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataOES (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); +#endif +#endif /* GL_OES_copy_image */ + +#ifndef GL_OES_depth24 +#define GL_OES_depth24 1 +#define GL_DEPTH_COMPONENT24_OES 0x81A6 +#endif /* GL_OES_depth24 */ + +#ifndef GL_OES_depth32 +#define GL_OES_depth32 1 +#define GL_DEPTH_COMPONENT32_OES 0x81A7 +#endif /* GL_OES_depth32 */ + +#ifndef GL_OES_depth_texture +#define GL_OES_depth_texture 1 +#endif /* GL_OES_depth_texture */ + +#ifndef GL_OES_draw_buffers_indexed +#define GL_OES_draw_buffers_indexed 1 +#define GL_MIN 0x8007 +#define GL_MAX 0x8008 +typedef void (GL_APIENTRYP PFNGLENABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIOESPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIOESPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIOESPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIOESPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIOESPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIOESPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIOESPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiOES (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiOES (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiOES (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciOES (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiOES (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiOES (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediOES (GLenum target, GLuint index); +#endif +#endif /* GL_OES_draw_buffers_indexed */ + +#ifndef GL_OES_draw_elements_base_vertex +#define GL_OES_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXOESPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXOESPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexOES (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexOES (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +GL_APICALL void GL_APIENTRY glMultiDrawElementsBaseVertexEXT (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei drawcount, const GLint *basevertex); +#endif +#endif /* GL_OES_draw_elements_base_vertex */ + +#ifndef GL_OES_element_index_uint +#define GL_OES_element_index_uint 1 +#endif /* GL_OES_element_index_uint */ + +#ifndef GL_OES_fbo_render_mipmap +#define GL_OES_fbo_render_mipmap 1 +#endif /* GL_OES_fbo_render_mipmap */ + +#ifndef GL_OES_fragment_precision_high +#define GL_OES_fragment_precision_high 1 +#endif /* GL_OES_fragment_precision_high */ + +#ifndef GL_OES_geometry_point_size +#define GL_OES_geometry_point_size 1 +#endif /* GL_OES_geometry_point_size */ + +#ifndef GL_OES_geometry_shader +#define GL_OES_geometry_shader 1 +#define GL_GEOMETRY_SHADER_OES 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_OES 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_OES 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_OES 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_OES 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_OES 0x887F +#define GL_LAYER_PROVOKING_VERTEX_OES 0x825E +#define GL_LINES_ADJACENCY_OES 0x000A +#define GL_LINE_STRIP_ADJACENCY_OES 0x000B +#define GL_TRIANGLES_ADJACENCY_OES 0x000C +#define GL_TRIANGLE_STRIP_ADJACENCY_OES 0x000D +#define GL_MAX_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_OES 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_OES 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_OES 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_OES 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_OES 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_OES 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_OES 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_OES 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_OES 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_OES 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_OES 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_OES 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_OES 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_OES 0x8E4E +#define GL_UNDEFINED_VERTEX_OES 0x8260 +#define GL_PRIMITIVES_GENERATED_OES 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_OES 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_OES 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_OES 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_OES 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_OES 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREOESPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureOES (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_OES_geometry_shader */ + +#ifndef GL_OES_get_program_binary +#define GL_OES_get_program_binary 1 +#define GL_PROGRAM_BINARY_LENGTH_OES 0x8741 +#define GL_NUM_PROGRAM_BINARY_FORMATS_OES 0x87FE +#define GL_PROGRAM_BINARY_FORMATS_OES 0x87FF +typedef void (GL_APIENTRYP PFNGLGETPROGRAMBINARYOESPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +typedef void (GL_APIENTRYP PFNGLPROGRAMBINARYOESPROC) (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetProgramBinaryOES (GLuint program, GLsizei bufSize, GLsizei *length, GLenum *binaryFormat, void *binary); +GL_APICALL void GL_APIENTRY glProgramBinaryOES (GLuint program, GLenum binaryFormat, const void *binary, GLint length); +#endif +#endif /* GL_OES_get_program_binary */ + +#ifndef GL_OES_gpu_shader5 +#define GL_OES_gpu_shader5 1 +#endif /* GL_OES_gpu_shader5 */ + +#ifndef GL_OES_mapbuffer +#define GL_OES_mapbuffer 1 +#define GL_WRITE_ONLY_OES 0x88B9 +#define GL_BUFFER_ACCESS_OES 0x88BB +#define GL_BUFFER_MAPPED_OES 0x88BC +#define GL_BUFFER_MAP_POINTER_OES 0x88BD +typedef void *(GL_APIENTRYP PFNGLMAPBUFFEROESPROC) (GLenum target, GLenum access); +typedef GLboolean (GL_APIENTRYP PFNGLUNMAPBUFFEROESPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLGETBUFFERPOINTERVOESPROC) (GLenum target, GLenum pname, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferOES (GLenum target, GLenum access); +GL_APICALL GLboolean GL_APIENTRY glUnmapBufferOES (GLenum target); +GL_APICALL void GL_APIENTRY glGetBufferPointervOES (GLenum target, GLenum pname, void **params); +#endif +#endif /* GL_OES_mapbuffer */ + +#ifndef GL_OES_packed_depth_stencil +#define GL_OES_packed_depth_stencil 1 +#define GL_DEPTH_STENCIL_OES 0x84F9 +#define GL_UNSIGNED_INT_24_8_OES 0x84FA +#define GL_DEPTH24_STENCIL8_OES 0x88F0 +#endif /* GL_OES_packed_depth_stencil */ + +#ifndef GL_OES_primitive_bounding_box +#define GL_OES_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_OES 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXOESPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxOES (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_OES_primitive_bounding_box */ + +#ifndef GL_OES_required_internalformat +#define GL_OES_required_internalformat 1 +#define GL_ALPHA8_OES 0x803C +#define GL_DEPTH_COMPONENT16_OES 0x81A5 +#define GL_LUMINANCE4_ALPHA4_OES 0x8043 +#define GL_LUMINANCE8_ALPHA8_OES 0x8045 +#define GL_LUMINANCE8_OES 0x8040 +#define GL_RGBA4_OES 0x8056 +#define GL_RGB5_A1_OES 0x8057 +#define GL_RGB565_OES 0x8D62 +#define GL_RGB8_OES 0x8051 +#define GL_RGBA8_OES 0x8058 +#define GL_RGB10_EXT 0x8052 +#define GL_RGB10_A2_EXT 0x8059 +#endif /* GL_OES_required_internalformat */ + +#ifndef GL_OES_rgb8_rgba8 +#define GL_OES_rgb8_rgba8 1 +#endif /* GL_OES_rgb8_rgba8 */ + +#ifndef GL_OES_sample_shading +#define GL_OES_sample_shading 1 +#define GL_SAMPLE_SHADING_OES 0x8C36 +#define GL_MIN_SAMPLE_SHADING_VALUE_OES 0x8C37 +typedef void (GL_APIENTRYP PFNGLMINSAMPLESHADINGOESPROC) (GLfloat value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMinSampleShadingOES (GLfloat value); +#endif +#endif /* GL_OES_sample_shading */ + +#ifndef GL_OES_sample_variables +#define GL_OES_sample_variables 1 +#endif /* GL_OES_sample_variables */ + +#ifndef GL_OES_shader_image_atomic +#define GL_OES_shader_image_atomic 1 +#endif /* GL_OES_shader_image_atomic */ + +#ifndef GL_OES_shader_io_blocks +#define GL_OES_shader_io_blocks 1 +#endif /* GL_OES_shader_io_blocks */ + +#ifndef GL_OES_shader_multisample_interpolation +#define GL_OES_shader_multisample_interpolation 1 +#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5B +#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_OES 0x8E5C +#define GL_FRAGMENT_INTERPOLATION_OFFSET_BITS_OES 0x8E5D +#endif /* GL_OES_shader_multisample_interpolation */ + +#ifndef GL_OES_standard_derivatives +#define GL_OES_standard_derivatives 1 +#define GL_FRAGMENT_SHADER_DERIVATIVE_HINT_OES 0x8B8B +#endif /* GL_OES_standard_derivatives */ + +#ifndef GL_OES_stencil1 +#define GL_OES_stencil1 1 +#define GL_STENCIL_INDEX1_OES 0x8D46 +#endif /* GL_OES_stencil1 */ + +#ifndef GL_OES_stencil4 +#define GL_OES_stencil4 1 +#define GL_STENCIL_INDEX4_OES 0x8D47 +#endif /* GL_OES_stencil4 */ + +#ifndef GL_OES_surfaceless_context +#define GL_OES_surfaceless_context 1 +#define GL_FRAMEBUFFER_UNDEFINED_OES 0x8219 +#endif /* GL_OES_surfaceless_context */ + +#ifndef GL_OES_tessellation_point_size +#define GL_OES_tessellation_point_size 1 +#endif /* GL_OES_tessellation_point_size */ + +#ifndef GL_OES_tessellation_shader +#define GL_OES_tessellation_shader 1 +#define GL_PATCHES_OES 0x000E +#define GL_PATCH_VERTICES_OES 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_OES 0x8E75 +#define GL_TESS_GEN_MODE_OES 0x8E76 +#define GL_TESS_GEN_SPACING_OES 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_OES 0x8E78 +#define GL_TESS_GEN_POINT_MODE_OES 0x8E79 +#define GL_ISOLINES_OES 0x8E7A +#define GL_QUADS_OES 0x0007 +#define GL_FRACTIONAL_ODD_OES 0x8E7B +#define GL_FRACTIONAL_EVEN_OES 0x8E7C +#define GL_MAX_PATCH_VERTICES_OES 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_OES 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_OES 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_OES 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_OES 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_OES 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_OES 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_OES 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_OES 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_OES 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_OES 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_OES 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_OES 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_OES 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_OES 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_OES 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_OES 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_OES 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_OES 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_OES 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_OES 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_OES 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED_OES 0x8221 +#define GL_IS_PER_PATCH_OES 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_OES 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_OES 0x9308 +#define GL_TESS_CONTROL_SHADER_OES 0x8E88 +#define GL_TESS_EVALUATION_SHADER_OES 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_OES 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_OES 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIOESPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriOES (GLenum pname, GLint value); +#endif +#endif /* GL_OES_tessellation_shader */ + +#ifndef GL_OES_texture_3D +#define GL_OES_texture_3D 1 +#define GL_TEXTURE_WRAP_R_OES 0x8072 +#define GL_TEXTURE_3D_OES 0x806F +#define GL_TEXTURE_BINDING_3D_OES 0x806A +#define GL_MAX_3D_TEXTURE_SIZE_OES 0x8073 +#define GL_SAMPLER_3D_OES 0x8B5F +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES 0x8CD4 +typedef void (GL_APIENTRYP PFNGLTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +typedef void (GL_APIENTRYP PFNGLTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLCOPYTEXSUBIMAGE3DOESPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXIMAGE3DOESPROC) (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +typedef void (GL_APIENTRYP PFNGLCOMPRESSEDTEXSUBIMAGE3DOESPROC) (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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE3DOESPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *pixels); +GL_APICALL void GL_APIENTRY glCopyTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glCompressedTexImage3DOES (GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glCompressedTexSubImage3DOES (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const void *data); +GL_APICALL void GL_APIENTRY glFramebufferTexture3DOES (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); +#endif +#endif /* GL_OES_texture_3D */ + +#ifndef GL_OES_texture_border_clamp +#define GL_OES_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_OES 0x1004 +#define GL_CLAMP_TO_BORDER_OES 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVOESPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVOESPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVOESPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVOESPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivOES (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivOES (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivOES (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivOES (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivOES (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivOES (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivOES (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivOES (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_OES_texture_border_clamp */ + +#ifndef GL_OES_texture_buffer +#define GL_OES_texture_buffer 1 +#define GL_TEXTURE_BUFFER_OES 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_OES 0x8C2A +#define GL_MAX_TEXTURE_BUFFER_SIZE_OES 0x8C2B +#define GL_TEXTURE_BINDING_BUFFER_OES 0x8C2C +#define GL_TEXTURE_BUFFER_DATA_STORE_BINDING_OES 0x8C2D +#define GL_TEXTURE_BUFFER_OFFSET_ALIGNMENT_OES 0x919F +#define GL_SAMPLER_BUFFER_OES 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_OES 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_OES 0x8DD8 +#define GL_IMAGE_BUFFER_OES 0x9051 +#define GL_INT_IMAGE_BUFFER_OES 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_OES 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_OES 0x919D +#define GL_TEXTURE_BUFFER_SIZE_OES 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEROESPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEOESPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferOES (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeOES (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_OES_texture_buffer */ + +#ifndef GL_OES_texture_compression_astc +#define GL_OES_texture_compression_astc 1 +#define GL_COMPRESSED_RGBA_ASTC_3x3x3_OES 0x93C0 +#define GL_COMPRESSED_RGBA_ASTC_4x3x3_OES 0x93C1 +#define GL_COMPRESSED_RGBA_ASTC_4x4x3_OES 0x93C2 +#define GL_COMPRESSED_RGBA_ASTC_4x4x4_OES 0x93C3 +#define GL_COMPRESSED_RGBA_ASTC_5x4x4_OES 0x93C4 +#define GL_COMPRESSED_RGBA_ASTC_5x5x4_OES 0x93C5 +#define GL_COMPRESSED_RGBA_ASTC_5x5x5_OES 0x93C6 +#define GL_COMPRESSED_RGBA_ASTC_6x5x5_OES 0x93C7 +#define GL_COMPRESSED_RGBA_ASTC_6x6x5_OES 0x93C8 +#define GL_COMPRESSED_RGBA_ASTC_6x6x6_OES 0x93C9 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_3x3x3_OES 0x93E0 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x3x3_OES 0x93E1 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x3_OES 0x93E2 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_4x4x4_OES 0x93E3 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x4x4_OES 0x93E4 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x4_OES 0x93E5 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_5x5x5_OES 0x93E6 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x5x5_OES 0x93E7 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x5_OES 0x93E8 +#define GL_COMPRESSED_SRGB8_ALPHA8_ASTC_6x6x6_OES 0x93E9 +#endif /* GL_OES_texture_compression_astc */ + +#ifndef GL_OES_texture_cube_map_array +#define GL_OES_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_OES 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_OES 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_OES 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_OES 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_OES 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_OES 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_OES 0x906A +#endif /* GL_OES_texture_cube_map_array */ + +#ifndef GL_OES_texture_float +#define GL_OES_texture_float 1 +#endif /* GL_OES_texture_float */ + +#ifndef GL_OES_texture_float_linear +#define GL_OES_texture_float_linear 1 +#endif /* GL_OES_texture_float_linear */ + +#ifndef GL_OES_texture_half_float +#define GL_OES_texture_half_float 1 +#define GL_HALF_FLOAT_OES 0x8D61 +#endif /* GL_OES_texture_half_float */ + +#ifndef GL_OES_texture_half_float_linear +#define GL_OES_texture_half_float_linear 1 +#endif /* GL_OES_texture_half_float_linear */ + +#ifndef GL_OES_texture_npot +#define GL_OES_texture_npot 1 +#endif /* GL_OES_texture_npot */ + +#ifndef GL_OES_texture_stencil8 +#define GL_OES_texture_stencil8 1 +#define GL_STENCIL_INDEX_OES 0x1901 +#define GL_STENCIL_INDEX8_OES 0x8D48 +#endif /* GL_OES_texture_stencil8 */ + +#ifndef GL_OES_texture_storage_multisample_2d_array +#define GL_OES_texture_storage_multisample_2d_array 1 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY_OES 0x9102 +#define GL_TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY_OES 0x9105 +#define GL_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910B +#define GL_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910C +#define GL_UNSIGNED_INT_SAMPLER_2D_MULTISAMPLE_ARRAY_OES 0x910D +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DMULTISAMPLEOESPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage3DMultisampleOES (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations); +#endif +#endif /* GL_OES_texture_storage_multisample_2d_array */ + +#ifndef GL_OES_texture_view +#define GL_OES_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_OES 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_OES 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_OES 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_OES 0x82DE +#define GL_TEXTURE_IMMUTABLE_LEVELS 0x82DF +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWOESPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewOES (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_OES_texture_view */ + +#ifndef GL_OES_vertex_array_object +#define GL_OES_vertex_array_object 1 +#define GL_VERTEX_ARRAY_BINDING_OES 0x85B5 +typedef void (GL_APIENTRYP PFNGLBINDVERTEXARRAYOESPROC) (GLuint array); +typedef void (GL_APIENTRYP PFNGLDELETEVERTEXARRAYSOESPROC) (GLsizei n, const GLuint *arrays); +typedef void (GL_APIENTRYP PFNGLGENVERTEXARRAYSOESPROC) (GLsizei n, GLuint *arrays); +typedef GLboolean (GL_APIENTRYP PFNGLISVERTEXARRAYOESPROC) (GLuint array); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindVertexArrayOES (GLuint array); +GL_APICALL void GL_APIENTRY glDeleteVertexArraysOES (GLsizei n, const GLuint *arrays); +GL_APICALL void GL_APIENTRY glGenVertexArraysOES (GLsizei n, GLuint *arrays); +GL_APICALL GLboolean GL_APIENTRY glIsVertexArrayOES (GLuint array); +#endif +#endif /* GL_OES_vertex_array_object */ + +#ifndef GL_OES_vertex_half_float +#define GL_OES_vertex_half_float 1 +#endif /* GL_OES_vertex_half_float */ + +#ifndef GL_OES_vertex_type_10_10_10_2 +#define GL_OES_vertex_type_10_10_10_2 1 +#define GL_UNSIGNED_INT_10_10_10_2_OES 0x8DF6 +#define GL_INT_10_10_10_2_OES 0x8DF7 +#endif /* GL_OES_vertex_type_10_10_10_2 */ + +#ifndef GL_OES_viewport_array +#define GL_OES_viewport_array 1 +#define GL_MAX_VIEWPORTS_OES 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_OES 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_OES 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_OES 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFOESPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVOESPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVOESPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDOESPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVOESPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVOESPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFOESPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VOESPROC) (GLenum target, GLuint index, GLfloat *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfOES (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvOES (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvOES (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedOES (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvOES (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvOES (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfOES (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vOES (GLenum target, GLuint index, GLfloat *data); +#endif +#endif /* GL_OES_viewport_array */ + +#ifndef GL_AMD_compressed_3DC_texture +#define GL_AMD_compressed_3DC_texture 1 +#define GL_3DC_X_AMD 0x87F9 +#define GL_3DC_XY_AMD 0x87FA +#endif /* GL_AMD_compressed_3DC_texture */ + +#ifndef GL_AMD_compressed_ATC_texture +#define GL_AMD_compressed_ATC_texture 1 +#define GL_ATC_RGB_AMD 0x8C92 +#define GL_ATC_RGBA_EXPLICIT_ALPHA_AMD 0x8C93 +#define GL_ATC_RGBA_INTERPOLATED_ALPHA_AMD 0x87EE +#endif /* GL_AMD_compressed_ATC_texture */ + +#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 (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLNAMEDRENDERBUFFERSTORAGEMULTISAMPLEADVANCEDAMDPROC) (GLuint renderbuffer, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAdvancedAMD (GLenum target, GLsizei samples, GLsizei storageSamples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSAMDPROC) (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSAMDPROC) (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORGROUPSTRINGAMDPROC) (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERSTRINGAMDPROC) (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERINFOAMDPROC) (GLuint group, GLuint counter, GLenum pname, void *data); +typedef void (GL_APIENTRYP PFNGLGENPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLDELETEPERFMONITORSAMDPROC) (GLsizei n, GLuint *monitors); +typedef void (GL_APIENTRYP PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +typedef void (GL_APIENTRYP PFNGLBEGINPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLENDPERFMONITORAMDPROC) (GLuint monitor); +typedef void (GL_APIENTRYP PFNGLGETPERFMONITORCOUNTERDATAAMDPROC) (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupsAMD (GLint *numGroups, GLsizei groupsSize, GLuint *groups); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCountersAMD (GLuint group, GLint *numCounters, GLint *maxActiveCounters, GLsizei counterSize, GLuint *counters); +GL_APICALL void GL_APIENTRY glGetPerfMonitorGroupStringAMD (GLuint group, GLsizei bufSize, GLsizei *length, GLchar *groupString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterStringAMD (GLuint group, GLuint counter, GLsizei bufSize, GLsizei *length, GLchar *counterString); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterInfoAMD (GLuint group, GLuint counter, GLenum pname, void *data); +GL_APICALL void GL_APIENTRY glGenPerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glDeletePerfMonitorsAMD (GLsizei n, GLuint *monitors); +GL_APICALL void GL_APIENTRY glSelectPerfMonitorCountersAMD (GLuint monitor, GLboolean enable, GLuint group, GLint numCounters, GLuint *counterList); +GL_APICALL void GL_APIENTRY glBeginPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glEndPerfMonitorAMD (GLuint monitor); +GL_APICALL void GL_APIENTRY glGetPerfMonitorCounterDataAMD (GLuint monitor, GLenum pname, GLsizei dataSize, GLuint *data, GLint *bytesWritten); +#endif +#endif /* GL_AMD_performance_monitor */ + +#ifndef GL_AMD_program_binary_Z400 +#define GL_AMD_program_binary_Z400 1 +#define GL_Z400_BINARY_AMD 0x8740 +#endif /* GL_AMD_program_binary_Z400 */ + +#ifndef GL_ANDROID_extension_pack_es31a +#define GL_ANDROID_extension_pack_es31a 1 +#endif /* GL_ANDROID_extension_pack_es31a */ + +#ifndef GL_ANGLE_depth_texture +#define GL_ANGLE_depth_texture 1 +#endif /* GL_ANGLE_depth_texture */ + +#ifndef GL_ANGLE_framebuffer_blit +#define GL_ANGLE_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_ANGLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_ANGLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_ANGLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_ANGLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERANGLEPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferANGLE (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_ANGLE_framebuffer_blit */ + +#ifndef GL_ANGLE_framebuffer_multisample +#define GL_ANGLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_ANGLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_ANGLE 0x8D56 +#define GL_MAX_SAMPLES_ANGLE 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEANGLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleANGLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_ANGLE_framebuffer_multisample */ + +#ifndef GL_ANGLE_instanced_arrays +#define GL_ANGLE_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE 0x88FE +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDANGLEPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDANGLEPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORANGLEPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedANGLE (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedANGLE (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +GL_APICALL void GL_APIENTRY glVertexAttribDivisorANGLE (GLuint index, GLuint divisor); +#endif +#endif /* GL_ANGLE_instanced_arrays */ + +#ifndef GL_ANGLE_pack_reverse_row_order +#define GL_ANGLE_pack_reverse_row_order 1 +#define GL_PACK_REVERSE_ROW_ORDER_ANGLE 0x93A4 +#endif /* GL_ANGLE_pack_reverse_row_order */ + +#ifndef GL_ANGLE_program_binary +#define GL_ANGLE_program_binary 1 +#define GL_PROGRAM_BINARY_ANGLE 0x93A6 +#endif /* GL_ANGLE_program_binary */ + +#ifndef GL_ANGLE_texture_compression_dxt3 +#define GL_ANGLE_texture_compression_dxt3 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT3_ANGLE 0x83F2 +#endif /* GL_ANGLE_texture_compression_dxt3 */ + +#ifndef GL_ANGLE_texture_compression_dxt5 +#define GL_ANGLE_texture_compression_dxt5 1 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_ANGLE 0x83F3 +#endif /* GL_ANGLE_texture_compression_dxt5 */ + +#ifndef GL_ANGLE_texture_usage +#define GL_ANGLE_texture_usage 1 +#define GL_TEXTURE_USAGE_ANGLE 0x93A2 +#define GL_FRAMEBUFFER_ATTACHMENT_ANGLE 0x93A3 +#endif /* GL_ANGLE_texture_usage */ + +#ifndef GL_ANGLE_translated_shader_source +#define GL_ANGLE_translated_shader_source 1 +#define GL_TRANSLATED_SHADER_SOURCE_LENGTH_ANGLE 0x93A0 +typedef void (GL_APIENTRYP PFNGLGETTRANSLATEDSHADERSOURCEANGLEPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetTranslatedShaderSourceANGLE (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *source); +#endif +#endif /* GL_ANGLE_translated_shader_source */ + +#ifndef GL_APPLE_clip_distance +#define GL_APPLE_clip_distance 1 +#define GL_MAX_CLIP_DISTANCES_APPLE 0x0D32 +#define GL_CLIP_DISTANCE0_APPLE 0x3000 +#define GL_CLIP_DISTANCE1_APPLE 0x3001 +#define GL_CLIP_DISTANCE2_APPLE 0x3002 +#define GL_CLIP_DISTANCE3_APPLE 0x3003 +#define GL_CLIP_DISTANCE4_APPLE 0x3004 +#define GL_CLIP_DISTANCE5_APPLE 0x3005 +#define GL_CLIP_DISTANCE6_APPLE 0x3006 +#define GL_CLIP_DISTANCE7_APPLE 0x3007 +#endif /* GL_APPLE_clip_distance */ + +#ifndef GL_APPLE_color_buffer_packed_float +#define GL_APPLE_color_buffer_packed_float 1 +#endif /* GL_APPLE_color_buffer_packed_float */ + +#ifndef GL_APPLE_copy_texture_levels +#define GL_APPLE_copy_texture_levels 1 +typedef void (GL_APIENTRYP PFNGLCOPYTEXTURELEVELSAPPLEPROC) (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyTextureLevelsAPPLE (GLuint destinationTexture, GLuint sourceTexture, GLint sourceBaseLevel, GLsizei sourceLevelCount); +#endif +#endif /* GL_APPLE_copy_texture_levels */ + +#ifndef GL_APPLE_framebuffer_multisample +#define GL_APPLE_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_APPLE 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_APPLE 0x8D56 +#define GL_MAX_SAMPLES_APPLE 0x8D57 +#define GL_READ_FRAMEBUFFER_APPLE 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_APPLE 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_APPLE 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_APPLE 0x8CAA +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEAPPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLRESOLVEMULTISAMPLEFRAMEBUFFERAPPLEPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleAPPLE (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glResolveMultisampleFramebufferAPPLE (void); +#endif +#endif /* GL_APPLE_framebuffer_multisample */ + +#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_sync +#define GL_APPLE_sync 1 +#define GL_SYNC_OBJECT_APPLE 0x8A53 +#define GL_MAX_SERVER_WAIT_TIMEOUT_APPLE 0x9111 +#define GL_OBJECT_TYPE_APPLE 0x9112 +#define GL_SYNC_CONDITION_APPLE 0x9113 +#define GL_SYNC_STATUS_APPLE 0x9114 +#define GL_SYNC_FLAGS_APPLE 0x9115 +#define GL_SYNC_FENCE_APPLE 0x9116 +#define GL_SYNC_GPU_COMMANDS_COMPLETE_APPLE 0x9117 +#define GL_UNSIGNALED_APPLE 0x9118 +#define GL_SIGNALED_APPLE 0x9119 +#define GL_ALREADY_SIGNALED_APPLE 0x911A +#define GL_TIMEOUT_EXPIRED_APPLE 0x911B +#define GL_CONDITION_SATISFIED_APPLE 0x911C +#define GL_WAIT_FAILED_APPLE 0x911D +#define GL_SYNC_FLUSH_COMMANDS_BIT_APPLE 0x00000001 +#define GL_TIMEOUT_IGNORED_APPLE 0xFFFFFFFFFFFFFFFFull +typedef GLsync (GL_APIENTRYP PFNGLFENCESYNCAPPLEPROC) (GLenum condition, GLbitfield flags); +typedef GLboolean (GL_APIENTRYP PFNGLISSYNCAPPLEPROC) (GLsync sync); +typedef void (GL_APIENTRYP PFNGLDELETESYNCAPPLEPROC) (GLsync sync); +typedef GLenum (GL_APIENTRYP PFNGLCLIENTWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLWAITSYNCAPPLEPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VAPPLEPROC) (GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSYNCIVAPPLEPROC) (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLsync GL_APIENTRY glFenceSyncAPPLE (GLenum condition, GLbitfield flags); +GL_APICALL GLboolean GL_APIENTRY glIsSyncAPPLE (GLsync sync); +GL_APICALL void GL_APIENTRY glDeleteSyncAPPLE (GLsync sync); +GL_APICALL GLenum GL_APIENTRY glClientWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glWaitSyncAPPLE (GLsync sync, GLbitfield flags, GLuint64 timeout); +GL_APICALL void GL_APIENTRY glGetInteger64vAPPLE (GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetSyncivAPPLE (GLsync sync, GLenum pname, GLsizei count, GLsizei *length, GLint *values); +#endif +#endif /* GL_APPLE_sync */ + +#ifndef GL_APPLE_texture_format_BGRA8888 +#define GL_APPLE_texture_format_BGRA8888 1 +#define GL_BGRA_EXT 0x80E1 +#define GL_BGRA8_EXT 0x93A1 +#endif /* GL_APPLE_texture_format_BGRA8888 */ + +#ifndef GL_APPLE_texture_max_level +#define GL_APPLE_texture_max_level 1 +#define GL_TEXTURE_MAX_LEVEL_APPLE 0x813D +#endif /* GL_APPLE_texture_max_level */ + +#ifndef GL_APPLE_texture_packed_float +#define GL_APPLE_texture_packed_float 1 +#define GL_UNSIGNED_INT_10F_11F_11F_REV_APPLE 0x8C3B +#define GL_UNSIGNED_INT_5_9_9_9_REV_APPLE 0x8C3E +#define GL_R11F_G11F_B10F_APPLE 0x8C3A +#define GL_RGB9_E5_APPLE 0x8C3D +#endif /* GL_APPLE_texture_packed_float */ + +#ifndef GL_ARM_mali_program_binary +#define GL_ARM_mali_program_binary 1 +#define GL_MALI_PROGRAM_BINARY_ARM 0x8F61 +#endif /* GL_ARM_mali_program_binary */ + +#ifndef GL_ARM_mali_shader_binary +#define GL_ARM_mali_shader_binary 1 +#define GL_MALI_SHADER_BINARY_ARM 0x8F60 +#endif /* GL_ARM_mali_shader_binary */ + +#ifndef GL_ARM_rgba8 +#define GL_ARM_rgba8 1 +#endif /* GL_ARM_rgba8 */ + +#ifndef GL_ARM_shader_framebuffer_fetch +#define GL_ARM_shader_framebuffer_fetch 1 +#define GL_FETCH_PER_SAMPLE_ARM 0x8F65 +#define GL_FRAGMENT_SHADER_FRAMEBUFFER_FETCH_MRT_ARM 0x8F66 +#endif /* GL_ARM_shader_framebuffer_fetch */ + +#ifndef GL_ARM_shader_framebuffer_fetch_depth_stencil +#define GL_ARM_shader_framebuffer_fetch_depth_stencil 1 +#endif /* GL_ARM_shader_framebuffer_fetch_depth_stencil */ + +#ifndef GL_ARM_texture_unnormalized_coordinates +#define GL_ARM_texture_unnormalized_coordinates 1 +#define GL_TEXTURE_UNNORMALIZED_COORDINATES_ARM 0x8F6A +#endif /* GL_ARM_texture_unnormalized_coordinates */ + +#ifndef GL_DMP_program_binary +#define GL_DMP_program_binary 1 +#define GL_SMAPHS30_PROGRAM_BINARY_DMP 0x9251 +#define GL_SMAPHS_PROGRAM_BINARY_DMP 0x9252 +#define GL_DMP_PROGRAM_BINARY_DMP 0x9253 +#endif /* GL_DMP_program_binary */ + +#ifndef GL_DMP_shader_binary +#define GL_DMP_shader_binary 1 +#define GL_SHADER_BINARY_DMP 0x9250 +#endif /* GL_DMP_shader_binary */ + +#ifndef GL_EXT_EGL_image_array +#define GL_EXT_EGL_image_array 1 +#endif /* GL_EXT_EGL_image_array */ + +#ifndef GL_EXT_EGL_image_storage +#define GL_EXT_EGL_image_storage 1 +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXSTORAGEEXTPROC) (GLenum target, GLeglImageOES image, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLEGLIMAGETARGETTEXTURESTORAGEEXTPROC) (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEGLImageTargetTexStorageEXT (GLenum target, GLeglImageOES image, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glEGLImageTargetTextureStorageEXT (GLuint texture, GLeglImageOES image, const GLint* attrib_list); +#endif +#endif /* GL_EXT_EGL_image_storage */ + +#ifndef GL_EXT_EGL_image_storage_compression +#define GL_EXT_EGL_image_storage_compression 1 +#define GL_SURFACE_COMPRESSION_EXT 0x96C0 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_NONE_EXT 0x96C1 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_DEFAULT_EXT 0x96C2 +#endif /* GL_EXT_EGL_image_storage_compression */ + +#ifndef GL_EXT_YUV_target +#define GL_EXT_YUV_target 1 +#define GL_SAMPLER_EXTERNAL_2D_Y2Y_EXT 0x8BE7 +#endif /* GL_EXT_YUV_target */ + +#ifndef GL_EXT_base_instance +#define GL_EXT_base_instance 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXBASEINSTANCEEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedBaseInstanceEXT (GLenum mode, GLint first, GLsizei count, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLuint baseinstance); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexBaseInstanceEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex, GLuint baseinstance); +#endif +#endif /* GL_EXT_base_instance */ + +#ifndef GL_EXT_blend_func_extended +#define GL_EXT_blend_func_extended 1 +#define GL_SRC1_COLOR_EXT 0x88F9 +#define GL_SRC1_ALPHA_EXT 0x8589 +#define GL_ONE_MINUS_SRC1_COLOR_EXT 0x88FA +#define GL_ONE_MINUS_SRC1_ALPHA_EXT 0x88FB +#define GL_SRC_ALPHA_SATURATE_EXT 0x0308 +#define GL_LOCATION_INDEX_EXT 0x930F +#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS_EXT 0x88FC +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONINDEXEDEXTPROC) (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +typedef void (GL_APIENTRYP PFNGLBINDFRAGDATALOCATIONEXTPROC) (GLuint program, GLuint color, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETPROGRAMRESOURCELOCATIONINDEXEXTPROC) (GLuint program, GLenum programInterface, const GLchar *name); +typedef GLint (GL_APIENTRYP PFNGLGETFRAGDATAINDEXEXTPROC) (GLuint program, const GLchar *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindFragDataLocationIndexedEXT (GLuint program, GLuint colorNumber, GLuint index, const GLchar *name); +GL_APICALL void GL_APIENTRY glBindFragDataLocationEXT (GLuint program, GLuint color, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetProgramResourceLocationIndexEXT (GLuint program, GLenum programInterface, const GLchar *name); +GL_APICALL GLint GL_APIENTRY glGetFragDataIndexEXT (GLuint program, const GLchar *name); +#endif +#endif /* GL_EXT_blend_func_extended */ + +#ifndef GL_EXT_blend_minmax +#define GL_EXT_blend_minmax 1 +#define GL_MIN_EXT 0x8007 +#define GL_MAX_EXT 0x8008 +#endif /* GL_EXT_blend_minmax */ + +#ifndef GL_EXT_buffer_storage +#define GL_EXT_buffer_storage 1 +#define GL_MAP_READ_BIT 0x0001 +#define GL_MAP_WRITE_BIT 0x0002 +#define GL_MAP_PERSISTENT_BIT_EXT 0x0040 +#define GL_MAP_COHERENT_BIT_EXT 0x0080 +#define GL_DYNAMIC_STORAGE_BIT_EXT 0x0100 +#define GL_CLIENT_STORAGE_BIT_EXT 0x0200 +#define GL_CLIENT_MAPPED_BUFFER_BARRIER_BIT_EXT 0x00004000 +#define GL_BUFFER_IMMUTABLE_STORAGE_EXT 0x821F +#define GL_BUFFER_STORAGE_FLAGS_EXT 0x8220 +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTPROC) (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageEXT (GLenum target, GLsizeiptr size, const void *data, GLbitfield flags); +#endif +#endif /* GL_EXT_buffer_storage */ + +#ifndef GL_EXT_clear_texture +#define GL_EXT_clear_texture 1 +typedef void (GL_APIENTRYP PFNGLCLEARTEXIMAGEEXTPROC) (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +typedef void (GL_APIENTRYP PFNGLCLEARTEXSUBIMAGEEXTPROC) (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClearTexImageEXT (GLuint texture, GLint level, GLenum format, GLenum type, const void *data); +GL_APICALL void GL_APIENTRY glClearTexSubImageEXT (GLuint texture, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data); +#endif +#endif /* GL_EXT_clear_texture */ + +#ifndef GL_EXT_clip_control +#define GL_EXT_clip_control 1 +#define GL_LOWER_LEFT_EXT 0x8CA1 +#define GL_UPPER_LEFT_EXT 0x8CA2 +#define GL_NEGATIVE_ONE_TO_ONE_EXT 0x935E +#define GL_ZERO_TO_ONE_EXT 0x935F +#define GL_CLIP_ORIGIN_EXT 0x935C +#define GL_CLIP_DEPTH_MODE_EXT 0x935D +typedef void (GL_APIENTRYP PFNGLCLIPCONTROLEXTPROC) (GLenum origin, GLenum depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glClipControlEXT (GLenum origin, GLenum depth); +#endif +#endif /* GL_EXT_clip_control */ + +#ifndef GL_EXT_clip_cull_distance +#define GL_EXT_clip_cull_distance 1 +#define GL_MAX_CLIP_DISTANCES_EXT 0x0D32 +#define GL_MAX_CULL_DISTANCES_EXT 0x82F9 +#define GL_MAX_COMBINED_CLIP_AND_CULL_DISTANCES_EXT 0x82FA +#define GL_CLIP_DISTANCE0_EXT 0x3000 +#define GL_CLIP_DISTANCE1_EXT 0x3001 +#define GL_CLIP_DISTANCE2_EXT 0x3002 +#define GL_CLIP_DISTANCE3_EXT 0x3003 +#define GL_CLIP_DISTANCE4_EXT 0x3004 +#define GL_CLIP_DISTANCE5_EXT 0x3005 +#define GL_CLIP_DISTANCE6_EXT 0x3006 +#define GL_CLIP_DISTANCE7_EXT 0x3007 +#endif /* GL_EXT_clip_cull_distance */ + +#ifndef GL_EXT_color_buffer_float +#define GL_EXT_color_buffer_float 1 +#endif /* GL_EXT_color_buffer_float */ + +#ifndef GL_EXT_color_buffer_half_float +#define GL_EXT_color_buffer_half_float 1 +#define GL_RGBA16F_EXT 0x881A +#define GL_RGB16F_EXT 0x881B +#define GL_RG16F_EXT 0x822F +#define GL_R16F_EXT 0x822D +#define GL_FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE_EXT 0x8211 +#define GL_UNSIGNED_NORMALIZED_EXT 0x8C17 +#endif /* GL_EXT_color_buffer_half_float */ + +#ifndef GL_EXT_conservative_depth +#define GL_EXT_conservative_depth 1 +#endif /* GL_EXT_conservative_depth */ + +#ifndef GL_EXT_copy_image +#define GL_EXT_copy_image 1 +typedef void (GL_APIENTRYP PFNGLCOPYIMAGESUBDATAEXTPROC) (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); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyImageSubDataEXT (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); +#endif +#endif /* GL_EXT_copy_image */ + +#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 +#define GL_TRANSFORM_FEEDBACK 0x8E22 +typedef void (GL_APIENTRYP PFNGLLABELOBJECTEXTPROC) (GLenum type, GLuint object, GLsizei length, const GLchar *label); +typedef void (GL_APIENTRYP PFNGLGETOBJECTLABELEXTPROC) (GLenum type, GLuint object, GLsizei bufSize, GLsizei *length, GLchar *label); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glLabelObjectEXT (GLenum type, GLuint object, GLsizei length, const GLchar *label); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLINSERTEVENTMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPUSHGROUPMARKEREXTPROC) (GLsizei length, const GLchar *marker); +typedef void (GL_APIENTRYP PFNGLPOPGROUPMARKEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glInsertEventMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPushGroupMarkerEXT (GLsizei length, const GLchar *marker); +GL_APICALL void GL_APIENTRY glPopGroupMarkerEXT (void); +#endif +#endif /* GL_EXT_debug_marker */ + +#ifndef GL_EXT_depth_clamp +#define GL_EXT_depth_clamp 1 +#define GL_DEPTH_CLAMP_EXT 0x864F +#endif /* GL_EXT_depth_clamp */ + +#ifndef GL_EXT_discard_framebuffer +#define GL_EXT_discard_framebuffer 1 +#define GL_COLOR_EXT 0x1800 +#define GL_DEPTH_EXT 0x1801 +#define GL_STENCIL_EXT 0x1802 +typedef void (GL_APIENTRYP PFNGLDISCARDFRAMEBUFFEREXTPROC) (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDiscardFramebufferEXT (GLenum target, GLsizei numAttachments, const GLenum *attachments); +#endif +#endif /* GL_EXT_discard_framebuffer */ + +#ifndef GL_EXT_disjoint_timer_query +#define GL_EXT_disjoint_timer_query 1 +#define GL_QUERY_COUNTER_BITS_EXT 0x8864 +#define GL_CURRENT_QUERY_EXT 0x8865 +#define GL_QUERY_RESULT_EXT 0x8866 +#define GL_QUERY_RESULT_AVAILABLE_EXT 0x8867 +#define GL_TIME_ELAPSED_EXT 0x88BF +#define GL_TIMESTAMP_EXT 0x8E28 +#define GL_GPU_DISJOINT_EXT 0x8FBB +typedef void (GL_APIENTRYP PFNGLGENQUERIESEXTPROC) (GLsizei n, GLuint *ids); +typedef void (GL_APIENTRYP PFNGLDELETEQUERIESEXTPROC) (GLsizei n, const GLuint *ids); +typedef GLboolean (GL_APIENTRYP PFNGLISQUERYEXTPROC) (GLuint id); +typedef void (GL_APIENTRYP PFNGLBEGINQUERYEXTPROC) (GLenum target, GLuint id); +typedef void (GL_APIENTRYP PFNGLENDQUERYEXTPROC) (GLenum target); +typedef void (GL_APIENTRYP PFNGLQUERYCOUNTEREXTPROC) (GLuint id, GLenum target); +typedef void (GL_APIENTRYP PFNGLGETQUERYIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTIVEXTPROC) (GLuint id, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUIVEXTPROC) (GLuint id, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTI64VEXTPROC) (GLuint id, GLenum pname, GLint64 *params); +typedef void (GL_APIENTRYP PFNGLGETQUERYOBJECTUI64VEXTPROC) (GLuint id, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETINTEGER64VEXTPROC) (GLenum pname, GLint64 *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenQueriesEXT (GLsizei n, GLuint *ids); +GL_APICALL void GL_APIENTRY glDeleteQueriesEXT (GLsizei n, const GLuint *ids); +GL_APICALL GLboolean GL_APIENTRY glIsQueryEXT (GLuint id); +GL_APICALL void GL_APIENTRY glBeginQueryEXT (GLenum target, GLuint id); +GL_APICALL void GL_APIENTRY glEndQueryEXT (GLenum target); +GL_APICALL void GL_APIENTRY glQueryCounterEXT (GLuint id, GLenum target); +GL_APICALL void GL_APIENTRY glGetQueryivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectivEXT (GLuint id, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectuivEXT (GLuint id, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glGetQueryObjecti64vEXT (GLuint id, GLenum pname, GLint64 *params); +GL_APICALL void GL_APIENTRY glGetQueryObjectui64vEXT (GLuint id, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetInteger64vEXT (GLenum pname, GLint64 *data); +#endif +#endif /* GL_EXT_disjoint_timer_query */ + +#ifndef GL_EXT_draw_buffers +#define GL_EXT_draw_buffers 1 +#define GL_MAX_COLOR_ATTACHMENTS_EXT 0x8CDF +#define GL_MAX_DRAW_BUFFERS_EXT 0x8824 +#define GL_DRAW_BUFFER0_EXT 0x8825 +#define GL_DRAW_BUFFER1_EXT 0x8826 +#define GL_DRAW_BUFFER2_EXT 0x8827 +#define GL_DRAW_BUFFER3_EXT 0x8828 +#define GL_DRAW_BUFFER4_EXT 0x8829 +#define GL_DRAW_BUFFER5_EXT 0x882A +#define GL_DRAW_BUFFER6_EXT 0x882B +#define GL_DRAW_BUFFER7_EXT 0x882C +#define GL_DRAW_BUFFER8_EXT 0x882D +#define GL_DRAW_BUFFER9_EXT 0x882E +#define GL_DRAW_BUFFER10_EXT 0x882F +#define GL_DRAW_BUFFER11_EXT 0x8830 +#define GL_DRAW_BUFFER12_EXT 0x8831 +#define GL_DRAW_BUFFER13_EXT 0x8832 +#define GL_DRAW_BUFFER14_EXT 0x8833 +#define GL_DRAW_BUFFER15_EXT 0x8834 +#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 +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSEXTPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersEXT (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_EXT_draw_buffers */ + +#ifndef GL_EXT_draw_buffers_indexed +#define GL_EXT_draw_buffers_indexed 1 +typedef void (GL_APIENTRYP PFNGLENABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEIEXTPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONIEXTPROC) (GLuint buf, GLenum mode); +typedef void (GL_APIENTRYP PFNGLBLENDEQUATIONSEPARATEIEXTPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCIEXTPROC) (GLuint buf, GLenum src, GLenum dst); +typedef void (GL_APIENTRYP PFNGLBLENDFUNCSEPARATEIEXTPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +typedef void (GL_APIENTRYP PFNGLCOLORMASKIEXTPROC) (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDIEXTPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glEnableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiEXT (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glBlendEquationiEXT (GLuint buf, GLenum mode); +GL_APICALL void GL_APIENTRY glBlendEquationSeparateiEXT (GLuint buf, GLenum modeRGB, GLenum modeAlpha); +GL_APICALL void GL_APIENTRY glBlendFunciEXT (GLuint buf, GLenum src, GLenum dst); +GL_APICALL void GL_APIENTRY glBlendFuncSeparateiEXT (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha); +GL_APICALL void GL_APIENTRY glColorMaskiEXT (GLuint index, GLboolean r, GLboolean g, GLboolean b, GLboolean a); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediEXT (GLenum target, GLuint index); +#endif +#endif /* GL_EXT_draw_buffers_indexed */ + +#ifndef GL_EXT_draw_elements_base_vertex +#define GL_EXT_draw_elements_base_vertex 1 +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWRANGEELEMENTSBASEVERTEXEXTPROC) (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawElementsBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawRangeElementsBaseVertexEXT (GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const void *indices, GLint basevertex); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedBaseVertexEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei instancecount, GLint basevertex); +#endif +#endif /* GL_EXT_draw_elements_base_vertex */ + +#ifndef GL_EXT_draw_instanced +#define GL_EXT_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDEXTPROC) (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDEXTPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedEXT (GLenum mode, GLint start, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedEXT (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_EXT_draw_instanced */ + +#ifndef GL_EXT_draw_transform_feedback +#define GL_EXT_draw_transform_feedback 1 +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKEXTPROC) (GLenum mode, GLuint id); +typedef void (GL_APIENTRYP PFNGLDRAWTRANSFORMFEEDBACKINSTANCEDEXTPROC) (GLenum mode, GLuint id, GLsizei instancecount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackEXT (GLenum mode, GLuint id); +GL_APICALL void GL_APIENTRY glDrawTransformFeedbackInstancedEXT (GLenum mode, GLuint id, GLsizei instancecount); +#endif +#endif /* GL_EXT_draw_transform_feedback */ + +#ifndef GL_EXT_external_buffer +#define GL_EXT_external_buffer 1 +typedef void *GLeglClientBufferEXT; +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEEXTERNALEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEEXTERNALEXTPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBufferStorageExternalEXT (GLenum target, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +GL_APICALL void GL_APIENTRY glNamedBufferStorageExternalEXT (GLuint buffer, GLintptr offset, GLsizeiptr size, GLeglClientBufferEXT clientBuffer, GLbitfield flags); +#endif +#endif /* GL_EXT_external_buffer */ + +#ifndef GL_EXT_float_blend +#define GL_EXT_float_blend 1 +#endif /* GL_EXT_float_blend */ + +#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 +typedef void (GL_APIENTRYP PFNGLGETFRAGMENTSHADINGRATESEXTPROC) (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEEXTPROC) (GLenum rate); +typedef void (GL_APIENTRYP PFNGLSHADINGRATECOMBINEROPSEXTPROC) (GLenum combinerOp0, GLenum combinerOp1); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERSHADINGRATEEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint baseLayer, GLsizei numLayers, GLsizei texelWidth, GLsizei texelHeight); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetFragmentShadingRatesEXT (GLsizei samples, GLsizei maxCount, GLsizei *count, GLenum *shadingRates); +GL_APICALL void GL_APIENTRY glShadingRateEXT (GLenum rate); +GL_APICALL void GL_APIENTRY glShadingRateCombinerOpsEXT (GLenum combinerOp0, GLenum combinerOp1); +GL_APICALL void GL_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_geometry_point_size +#define GL_EXT_geometry_point_size 1 +#endif /* GL_EXT_geometry_point_size */ + +#ifndef GL_EXT_geometry_shader +#define GL_EXT_geometry_shader 1 +#define GL_GEOMETRY_SHADER_EXT 0x8DD9 +#define GL_GEOMETRY_SHADER_BIT_EXT 0x00000004 +#define GL_GEOMETRY_LINKED_VERTICES_OUT_EXT 0x8916 +#define GL_GEOMETRY_LINKED_INPUT_TYPE_EXT 0x8917 +#define GL_GEOMETRY_LINKED_OUTPUT_TYPE_EXT 0x8918 +#define GL_GEOMETRY_SHADER_INVOCATIONS_EXT 0x887F +#define GL_LAYER_PROVOKING_VERTEX_EXT 0x825E +#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_MAX_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8DDF +#define GL_MAX_GEOMETRY_UNIFORM_BLOCKS_EXT 0x8A2C +#define GL_MAX_COMBINED_GEOMETRY_UNIFORM_COMPONENTS_EXT 0x8A32 +#define GL_MAX_GEOMETRY_INPUT_COMPONENTS_EXT 0x9123 +#define GL_MAX_GEOMETRY_OUTPUT_COMPONENTS_EXT 0x9124 +#define GL_MAX_GEOMETRY_OUTPUT_VERTICES_EXT 0x8DE0 +#define GL_MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS_EXT 0x8DE1 +#define GL_MAX_GEOMETRY_SHADER_INVOCATIONS_EXT 0x8E5A +#define GL_MAX_GEOMETRY_TEXTURE_IMAGE_UNITS_EXT 0x8C29 +#define GL_MAX_GEOMETRY_ATOMIC_COUNTER_BUFFERS_EXT 0x92CF +#define GL_MAX_GEOMETRY_ATOMIC_COUNTERS_EXT 0x92D5 +#define GL_MAX_GEOMETRY_IMAGE_UNIFORMS_EXT 0x90CD +#define GL_MAX_GEOMETRY_SHADER_STORAGE_BLOCKS_EXT 0x90D7 +#define GL_FIRST_VERTEX_CONVENTION_EXT 0x8E4D +#define GL_LAST_VERTEX_CONVENTION_EXT 0x8E4E +#define GL_UNDEFINED_VERTEX_EXT 0x8260 +#define GL_PRIMITIVES_GENERATED_EXT 0x8C87 +#define GL_FRAMEBUFFER_DEFAULT_LAYERS_EXT 0x9312 +#define GL_MAX_FRAMEBUFFER_LAYERS_EXT 0x9317 +#define GL_FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS_EXT 0x8DA8 +#define GL_FRAMEBUFFER_ATTACHMENT_LAYERED_EXT 0x8DA7 +#define GL_REFERENCED_BY_GEOMETRY_SHADER_EXT 0x9309 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREEXTPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureEXT (GLenum target, GLenum attachment, GLuint texture, GLint level); +#endif +#endif /* GL_EXT_geometry_shader */ + +#ifndef GL_EXT_gpu_shader5 +#define GL_EXT_gpu_shader5 1 +#endif /* GL_EXT_gpu_shader5 */ + +#ifndef GL_EXT_instanced_arrays +#define GL_EXT_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_EXT 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISOREXTPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorEXT (GLuint index, GLuint divisor); +#endif +#endif /* GL_EXT_instanced_arrays */ + +#ifndef GL_EXT_map_buffer_range +#define GL_EXT_map_buffer_range 1 +#define GL_MAP_READ_BIT_EXT 0x0001 +#define GL_MAP_WRITE_BIT_EXT 0x0002 +#define GL_MAP_INVALIDATE_RANGE_BIT_EXT 0x0004 +#define GL_MAP_INVALIDATE_BUFFER_BIT_EXT 0x0008 +#define GL_MAP_FLUSH_EXPLICIT_BIT_EXT 0x0010 +#define GL_MAP_UNSYNCHRONIZED_BIT_EXT 0x0020 +typedef void *(GL_APIENTRYP PFNGLMAPBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +typedef void (GL_APIENTRYP PFNGLFLUSHMAPPEDBUFFERRANGEEXTPROC) (GLenum target, GLintptr offset, GLsizeiptr length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void *GL_APIENTRY glMapBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); +GL_APICALL void GL_APIENTRY glFlushMappedBufferRangeEXT (GLenum target, GLintptr offset, GLsizeiptr length); +#endif +#endif /* GL_EXT_map_buffer_range */ + +#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 (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEVEXTPROC) (GLenum pname, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLGETUNSIGNEDBYTEI_VEXTPROC) (GLenum target, GLuint index, GLubyte *data); +typedef void (GL_APIENTRYP PFNGLDELETEMEMORYOBJECTSEXTPROC) (GLsizei n, const GLuint *memoryObjects); +typedef GLboolean (GL_APIENTRYP PFNGLISMEMORYOBJECTEXTPROC) (GLuint memoryObject); +typedef void (GL_APIENTRYP PFNGLCREATEMEMORYOBJECTSEXTPROC) (GLsizei n, GLuint *memoryObjects); +typedef void (GL_APIENTRYP PFNGLMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETMEMORYOBJECTPARAMETERIVEXTPROC) (GLuint memoryObject, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM2DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEMEM3DMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERSTORAGEMEMEXTPROC) (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM2DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DEXTPROC) (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGEMEM3DMULTISAMPLEEXTPROC) (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERSTORAGEMEMEXTPROC) (GLuint buffer, GLsizeiptr size, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetUnsignedBytevEXT (GLenum pname, GLubyte *data); +GL_APICALL void GL_APIENTRY glGetUnsignedBytei_vEXT (GLenum target, GLuint index, GLubyte *data); +GL_APICALL void GL_APIENTRY glDeleteMemoryObjectsEXT (GLsizei n, const GLuint *memoryObjects); +GL_APICALL GLboolean GL_APIENTRY glIsMemoryObjectEXT (GLuint memoryObject); +GL_APICALL void GL_APIENTRY glCreateMemoryObjectsEXT (GLsizei n, GLuint *memoryObjects); +GL_APICALL void GL_APIENTRY glMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetMemoryObjectParameterivEXT (GLuint memoryObject, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glTexStorageMem2DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem2DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DEXT (GLenum target, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTexStorageMem3DMultisampleEXT (GLenum target, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferStorageMemEXT (GLenum target, GLsizeiptr size, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem2DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DEXT (GLuint texture, GLsizei levels, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureStorageMem3DMultisampleEXT (GLuint texture, GLsizei samples, GLenum internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedSampleLocations, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glNamedBufferStorageMemEXT (GLuint buffer, GLsizeiptr size, 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 (GL_APIENTRYP PFNGLIMPORTMEMORYFDEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32HANDLEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTMEMORYWIN32NAMEEXTPROC) (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportMemoryWin32HandleEXT (GLuint memory, GLuint64 size, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportMemoryWin32NameEXT (GLuint memory, GLuint64 size, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_memory_object_win32 */ + +#ifndef GL_EXT_multi_draw_arrays +#define GL_EXT_multi_draw_arrays 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSEXTPROC) (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSEXTPROC) (GLenum mode, const GLsizei *count, GLenum type, const void *const*indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysEXT (GLenum mode, const GLint *first, const GLsizei *count, GLsizei primcount); +GL_APICALL void GL_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_multi_draw_indirect +#define GL_EXT_multi_draw_indirect 1 +typedef void (GL_APIENTRYP PFNGLMULTIDRAWARRAYSINDIRECTEXTPROC) (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWELEMENTSINDIRECTEXTPROC) (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glMultiDrawArraysIndirectEXT (GLenum mode, const void *indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawElementsIndirectEXT (GLenum mode, GLenum type, const void *indirect, GLsizei drawcount, GLsizei stride); +#endif +#endif /* GL_EXT_multi_draw_indirect */ + +#ifndef GL_EXT_multisampled_compatibility +#define GL_EXT_multisampled_compatibility 1 +#define GL_MULTISAMPLE_EXT 0x809D +#define GL_SAMPLE_ALPHA_TO_ONE_EXT 0x809F +#endif /* GL_EXT_multisampled_compatibility */ + +#ifndef GL_EXT_multisampled_render_to_texture +#define GL_EXT_multisampled_render_to_texture 1 +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SAMPLES_EXT 0x8D6C +#define GL_RENDERBUFFER_SAMPLES_EXT 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT 0x8D56 +#define GL_MAX_SAMPLES_EXT 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEEXTPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleEXT (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleEXT (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_EXT_multisampled_render_to_texture */ + +#ifndef GL_EXT_multisampled_render_to_texture2 +#define GL_EXT_multisampled_render_to_texture2 1 +#endif /* GL_EXT_multisampled_render_to_texture2 */ + +#ifndef GL_EXT_multiview_draw_buffers +#define GL_EXT_multiview_draw_buffers 1 +#define GL_COLOR_ATTACHMENT_EXT 0x90F0 +#define GL_MULTIVIEW_EXT 0x90F1 +#define GL_DRAW_BUFFER_EXT 0x0C01 +#define GL_READ_BUFFER_EXT 0x0C02 +#define GL_MAX_MULTIVIEW_BUFFERS_EXT 0x90F2 +typedef void (GL_APIENTRYP PFNGLREADBUFFERINDEXEDEXTPROC) (GLenum src, GLint index); +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSINDEXEDEXTPROC) (GLint n, const GLenum *location, const GLint *indices); +typedef void (GL_APIENTRYP PFNGLGETINTEGERI_VEXTPROC) (GLenum target, GLuint index, GLint *data); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferIndexedEXT (GLenum src, GLint index); +GL_APICALL void GL_APIENTRY glDrawBuffersIndexedEXT (GLint n, const GLenum *location, const GLint *indices); +GL_APICALL void GL_APIENTRY glGetIntegeri_vEXT (GLenum target, GLuint index, GLint *data); +#endif +#endif /* GL_EXT_multiview_draw_buffers */ + +#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_occlusion_query_boolean +#define GL_EXT_occlusion_query_boolean 1 +#define GL_ANY_SAMPLES_PASSED_EXT 0x8C2F +#define GL_ANY_SAMPLES_PASSED_CONSERVATIVE_EXT 0x8D6A +#endif /* GL_EXT_occlusion_query_boolean */ + +#ifndef GL_EXT_polygon_offset_clamp +#define GL_EXT_polygon_offset_clamp 1 +#define GL_POLYGON_OFFSET_CLAMP_EXT 0x8E1B +typedef void (GL_APIENTRYP PFNGLPOLYGONOFFSETCLAMPEXTPROC) (GLfloat factor, GLfloat units, GLfloat clamp); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_primitive_bounding_box +#define GL_EXT_primitive_bounding_box 1 +#define GL_PRIMITIVE_BOUNDING_BOX_EXT 0x92BE +typedef void (GL_APIENTRYP PFNGLPRIMITIVEBOUNDINGBOXEXTPROC) (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPrimitiveBoundingBoxEXT (GLfloat minX, GLfloat minY, GLfloat minZ, GLfloat minW, GLfloat maxX, GLfloat maxY, GLfloat maxZ, GLfloat maxW); +#endif +#endif /* GL_EXT_primitive_bounding_box */ + +#ifndef GL_EXT_protected_textures +#define GL_EXT_protected_textures 1 +#define GL_CONTEXT_FLAG_PROTECTED_CONTENT_BIT_EXT 0x00000010 +#define GL_TEXTURE_PROTECTED_EXT 0x8BFA +#endif /* GL_EXT_protected_textures */ + +#ifndef GL_EXT_pvrtc_sRGB +#define GL_EXT_pvrtc_sRGB 1 +#define GL_COMPRESSED_SRGB_PVRTC_2BPPV1_EXT 0x8A54 +#define GL_COMPRESSED_SRGB_PVRTC_4BPPV1_EXT 0x8A55 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV1_EXT 0x8A56 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV1_EXT 0x8A57 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_2BPPV2_IMG 0x93F0 +#define GL_COMPRESSED_SRGB_ALPHA_PVRTC_4BPPV2_IMG 0x93F1 +#endif /* GL_EXT_pvrtc_sRGB */ + +#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 (GL_APIENTRYP PFNGLRASTERSAMPLESEXTPROC) (GLuint samples, GLboolean fixedsamplelocations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRasterSamplesEXT (GLuint samples, GLboolean fixedsamplelocations); +#endif +#endif /* GL_EXT_raster_multisample */ + +#ifndef GL_EXT_read_format_bgra +#define GL_EXT_read_format_bgra 1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_EXT 0x8365 +#define GL_UNSIGNED_SHORT_1_5_5_5_REV_EXT 0x8366 +#endif /* GL_EXT_read_format_bgra */ + +#ifndef GL_EXT_render_snorm +#define GL_EXT_render_snorm 1 +#define GL_R8_SNORM 0x8F94 +#define GL_RG8_SNORM 0x8F95 +#define GL_RGBA8_SNORM 0x8F97 +#define GL_R16_SNORM_EXT 0x8F98 +#define GL_RG16_SNORM_EXT 0x8F99 +#define GL_RGBA16_SNORM_EXT 0x8F9B +#endif /* GL_EXT_render_snorm */ + +#ifndef GL_EXT_robustness +#define GL_EXT_robustness 1 +#define GL_GUILTY_CONTEXT_RESET_EXT 0x8253 +#define GL_INNOCENT_CONTEXT_RESET_EXT 0x8254 +#define GL_UNKNOWN_CONTEXT_RESET_EXT 0x8255 +#define GL_CONTEXT_ROBUST_ACCESS_EXT 0x90F3 +#define GL_RESET_NOTIFICATION_STRATEGY_EXT 0x8256 +#define GL_LOSE_CONTEXT_ON_RESET_EXT 0x8252 +#define GL_NO_RESET_NOTIFICATION_EXT 0x8261 +typedef GLenum (GL_APIENTRYP PFNGLGETGRAPHICSRESETSTATUSEXTPROC) (void); +typedef void (GL_APIENTRYP PFNGLREADNPIXELSEXTPROC) (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMFVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLGETNUNIFORMIVEXTPROC) (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLenum GL_APIENTRY glGetGraphicsResetStatusEXT (void); +GL_APICALL void GL_APIENTRY glReadnPixelsEXT (GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLsizei bufSize, void *data); +GL_APICALL void GL_APIENTRY glGetnUniformfvEXT (GLuint program, GLint location, GLsizei bufSize, GLfloat *params); +GL_APICALL void GL_APIENTRY glGetnUniformivEXT (GLuint program, GLint location, GLsizei bufSize, GLint *params); +#endif +#endif /* GL_EXT_robustness */ + +#ifndef GL_EXT_sRGB +#define GL_EXT_sRGB 1 +#define GL_SRGB_EXT 0x8C40 +#define GL_SRGB_ALPHA_EXT 0x8C42 +#define GL_SRGB8_ALPHA8_EXT 0x8C43 +#define GL_FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT 0x8210 +#endif /* GL_EXT_sRGB */ + +#ifndef GL_EXT_sRGB_write_control +#define GL_EXT_sRGB_write_control 1 +#define GL_FRAMEBUFFER_SRGB_EXT 0x8DB9 +#endif /* GL_EXT_sRGB_write_control */ + +#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 (GL_APIENTRYP PFNGLGENSEMAPHORESEXTPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLDELETESEMAPHORESEXTPROC) (GLsizei n, const GLuint *semaphores); +typedef GLboolean (GL_APIENTRYP PFNGLISSEMAPHOREEXTPROC) (GLuint semaphore); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, const GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERUI64VEXTPROC) (GLuint semaphore, GLenum pname, GLuint64 *params); +typedef void (GL_APIENTRYP PFNGLWAITSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +typedef void (GL_APIENTRYP PFNGLSIGNALSEMAPHOREEXTPROC) (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *dstLayouts); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGenSemaphoresEXT (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glDeleteSemaphoresEXT (GLsizei n, const GLuint *semaphores); +GL_APICALL GLboolean GL_APIENTRY glIsSemaphoreEXT (GLuint semaphore); +GL_APICALL void GL_APIENTRY glSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, const GLuint64 *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterui64vEXT (GLuint semaphore, GLenum pname, GLuint64 *params); +GL_APICALL void GL_APIENTRY glWaitSemaphoreEXT (GLuint semaphore, GLuint numBufferBarriers, const GLuint *buffers, GLuint numTextureBarriers, const GLuint *textures, const GLenum *srcLayouts); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREFDEXTPROC) (GLuint semaphore, GLenum handleType, GLint fd); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32HANDLEEXTPROC) (GLuint semaphore, GLenum handleType, void *handle); +typedef void (GL_APIENTRYP PFNGLIMPORTSEMAPHOREWIN32NAMEEXTPROC) (GLuint semaphore, GLenum handleType, const void *name); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32HandleEXT (GLuint semaphore, GLenum handleType, void *handle); +GL_APICALL void GL_APIENTRY glImportSemaphoreWin32NameEXT (GLuint semaphore, GLenum handleType, const void *name); +#endif +#endif /* GL_EXT_semaphore_win32 */ + +#ifndef GL_EXT_separate_depth_stencil +#define GL_EXT_separate_depth_stencil 1 +#endif /* GL_EXT_separate_depth_stencil */ + +#ifndef GL_EXT_separate_shader_objects +#define GL_EXT_separate_shader_objects 1 +#define GL_ACTIVE_PROGRAM_EXT 0x8259 +#define GL_VERTEX_SHADER_BIT_EXT 0x00000001 +#define GL_FRAGMENT_SHADER_BIT_EXT 0x00000002 +#define GL_ALL_SHADER_BITS_EXT 0xFFFFFFFF +#define GL_PROGRAM_SEPARABLE_EXT 0x8258 +#define GL_PROGRAM_PIPELINE_BINDING_EXT 0x825A +typedef void (GL_APIENTRYP PFNGLACTIVESHADERPROGRAMEXTPROC) (GLuint pipeline, GLuint program); +typedef void (GL_APIENTRYP PFNGLBINDPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef GLuint (GL_APIENTRYP PFNGLCREATESHADERPROGRAMVEXTPROC) (GLenum type, GLsizei count, const GLchar **strings); +typedef void (GL_APIENTRYP PFNGLDELETEPROGRAMPIPELINESEXTPROC) (GLsizei n, const GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGENPROGRAMPIPELINESEXTPROC) (GLsizei n, GLuint *pipelines); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEINFOLOGEXTPROC) (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMPIPELINEIVEXTPROC) (GLuint pipeline, GLenum pname, GLint *params); +typedef GLboolean (GL_APIENTRYP PFNGLISPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMPARAMETERIEXTPROC) (GLuint program, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FEXTPROC) (GLuint program, GLint location, GLfloat v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IEXTPROC) (GLuint program, GLint location, GLint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FEXTPROC) (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4FVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IEXTPROC) (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4IVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUSEPROGRAMSTAGESEXTPROC) (GLuint pipeline, GLbitfield stages, GLuint program); +typedef void (GL_APIENTRYP PFNGLVALIDATEPROGRAMPIPELINEEXTPROC) (GLuint pipeline); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIEXTPROC) (GLuint program, GLint location, GLuint v0); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIEXTPROC) (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UIVEXTPROC) (GLuint program, GLint location, GLsizei count, const GLuint *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX2X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X2FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX3X4FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMMATRIX4X3FVEXTPROC) (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glActiveShaderProgramEXT (GLuint pipeline, GLuint program); +GL_APICALL void GL_APIENTRY glBindProgramPipelineEXT (GLuint pipeline); +GL_APICALL GLuint GL_APIENTRY glCreateShaderProgramvEXT (GLenum type, GLsizei count, const GLchar **strings); +GL_APICALL void GL_APIENTRY glDeleteProgramPipelinesEXT (GLsizei n, const GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGenProgramPipelinesEXT (GLsizei n, GLuint *pipelines); +GL_APICALL void GL_APIENTRY glGetProgramPipelineInfoLogEXT (GLuint pipeline, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +GL_APICALL void GL_APIENTRY glGetProgramPipelineivEXT (GLuint pipeline, GLenum pname, GLint *params); +GL_APICALL GLboolean GL_APIENTRY glIsProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramParameteriEXT (GLuint program, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glProgramUniform1fEXT (GLuint program, GLint location, GLfloat v0); +GL_APICALL void GL_APIENTRY glProgramUniform1fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform1iEXT (GLuint program, GLint location, GLint v0); +GL_APICALL void GL_APIENTRY glProgramUniform1ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1); +GL_APICALL void GL_APIENTRY glProgramUniform2fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform2iEXT (GLuint program, GLint location, GLint v0, GLint v1); +GL_APICALL void GL_APIENTRY glProgramUniform2ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2); +GL_APICALL void GL_APIENTRY glProgramUniform3fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform3iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2); +GL_APICALL void GL_APIENTRY glProgramUniform3ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4fEXT (GLuint program, GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); +GL_APICALL void GL_APIENTRY glProgramUniform4fvEXT (GLuint program, GLint location, GLsizei count, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniform4iEXT (GLuint program, GLint location, GLint v0, GLint v1, GLint v2, GLint v3); +GL_APICALL void GL_APIENTRY glProgramUniform4ivEXT (GLuint program, GLint location, GLsizei count, const GLint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUseProgramStagesEXT (GLuint pipeline, GLbitfield stages, GLuint program); +GL_APICALL void GL_APIENTRY glValidateProgramPipelineEXT (GLuint pipeline); +GL_APICALL void GL_APIENTRY glProgramUniform1uiEXT (GLuint program, GLint location, GLuint v0); +GL_APICALL void GL_APIENTRY glProgramUniform2uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1); +GL_APICALL void GL_APIENTRY glProgramUniform3uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2); +GL_APICALL void GL_APIENTRY glProgramUniform4uiEXT (GLuint program, GLint location, GLuint v0, GLuint v1, GLuint v2, GLuint v3); +GL_APICALL void GL_APIENTRY glProgramUniform1uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform2uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform3uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniform4uivEXT (GLuint program, GLint location, GLsizei count, const GLuint *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix2x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x2fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix3x4fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glProgramUniformMatrix4x3fvEXT (GLuint program, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIEREXTPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierEXT (void); +#endif +#endif /* GL_EXT_shader_framebuffer_fetch_non_coherent */ + +#ifndef GL_EXT_shader_group_vote +#define GL_EXT_shader_group_vote 1 +#endif /* GL_EXT_shader_group_vote */ + +#ifndef GL_EXT_shader_implicit_conversions +#define GL_EXT_shader_implicit_conversions 1 +#endif /* GL_EXT_shader_implicit_conversions */ + +#ifndef GL_EXT_shader_integer_mix +#define GL_EXT_shader_integer_mix 1 +#endif /* GL_EXT_shader_integer_mix */ + +#ifndef GL_EXT_shader_io_blocks +#define GL_EXT_shader_io_blocks 1 +#endif /* GL_EXT_shader_io_blocks */ + +#ifndef GL_EXT_shader_non_constant_global_initializers +#define GL_EXT_shader_non_constant_global_initializers 1 +#endif /* GL_EXT_shader_non_constant_global_initializers */ + +#ifndef GL_EXT_shader_pixel_local_storage +#define GL_EXT_shader_pixel_local_storage 1 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_FAST_SIZE_EXT 0x8F63 +#define GL_MAX_SHADER_PIXEL_LOCAL_STORAGE_SIZE_EXT 0x8F67 +#define GL_SHADER_PIXEL_LOCAL_STORAGE_EXT 0x8F64 +#endif /* GL_EXT_shader_pixel_local_storage */ + +#ifndef GL_EXT_shader_pixel_local_storage2 +#define GL_EXT_shader_pixel_local_storage2 1 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_FAST_SIZE_EXT 0x9650 +#define GL_MAX_SHADER_COMBINED_LOCAL_STORAGE_SIZE_EXT 0x9651 +#define GL_FRAMEBUFFER_INCOMPLETE_INSUFFICIENT_SHADER_COMBINED_LOCAL_STORAGE_EXT 0x9652 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target, GLsizei size); +typedef GLsizei (GL_APIENTRYP PFNGLGETFRAMEBUFFERPIXELLOCALSTORAGESIZEEXTPROC) (GLuint target); +typedef void (GL_APIENTRYP PFNGLCLEARPIXELLOCALSTORAGEUIEXTPROC) (GLsizei offset, GLsizei n, const GLuint *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferPixelLocalStorageSizeEXT (GLuint target, GLsizei size); +GL_APICALL GLsizei GL_APIENTRY glGetFramebufferPixelLocalStorageSizeEXT (GLuint target); +GL_APICALL void GL_APIENTRY glClearPixelLocalStorageuiEXT (GLsizei offset, GLsizei n, const GLuint *values); +#endif +#endif /* GL_EXT_shader_pixel_local_storage2 */ + +#ifndef GL_EXT_shader_samples_identical +#define GL_EXT_shader_samples_identical 1 +#endif /* GL_EXT_shader_samples_identical */ + +#ifndef GL_EXT_shader_texture_lod +#define GL_EXT_shader_texture_lod 1 +#endif /* GL_EXT_shader_texture_lod */ + +#ifndef GL_EXT_shadow_samplers +#define GL_EXT_shadow_samplers 1 +#define GL_TEXTURE_COMPARE_MODE_EXT 0x884C +#define GL_TEXTURE_COMPARE_FUNC_EXT 0x884D +#define GL_COMPARE_REF_TO_TEXTURE_EXT 0x884E +#define GL_SAMPLER_2D_SHADOW_EXT 0x8B62 +#endif /* GL_EXT_shadow_samplers */ + +#ifndef GL_EXT_sparse_texture +#define GL_EXT_sparse_texture 1 +#define GL_TEXTURE_SPARSE_EXT 0x91A6 +#define GL_VIRTUAL_PAGE_SIZE_INDEX_EXT 0x91A7 +#define GL_NUM_SPARSE_LEVELS_EXT 0x91AA +#define GL_NUM_VIRTUAL_PAGE_SIZES_EXT 0x91A8 +#define GL_VIRTUAL_PAGE_SIZE_X_EXT 0x9195 +#define GL_VIRTUAL_PAGE_SIZE_Y_EXT 0x9196 +#define GL_VIRTUAL_PAGE_SIZE_Z_EXT 0x9197 +#define GL_TEXTURE_2D_ARRAY 0x8C1A +#define GL_TEXTURE_3D 0x806F +#define GL_MAX_SPARSE_TEXTURE_SIZE_EXT 0x9198 +#define GL_MAX_SPARSE_3D_TEXTURE_SIZE_EXT 0x9199 +#define GL_MAX_SPARSE_ARRAY_TEXTURE_LAYERS_EXT 0x919A +#define GL_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS_EXT 0x91A9 +typedef void (GL_APIENTRYP PFNGLTEXPAGECOMMITMENTEXTPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexPageCommitmentEXT (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLboolean commit); +#endif +#endif /* GL_EXT_sparse_texture */ + +#ifndef GL_EXT_sparse_texture2 +#define GL_EXT_sparse_texture2 1 +#endif /* GL_EXT_sparse_texture2 */ + +#ifndef GL_EXT_tessellation_point_size +#define GL_EXT_tessellation_point_size 1 +#endif /* GL_EXT_tessellation_point_size */ + +#ifndef GL_EXT_tessellation_shader +#define GL_EXT_tessellation_shader 1 +#define GL_PATCHES_EXT 0x000E +#define GL_PATCH_VERTICES_EXT 0x8E72 +#define GL_TESS_CONTROL_OUTPUT_VERTICES_EXT 0x8E75 +#define GL_TESS_GEN_MODE_EXT 0x8E76 +#define GL_TESS_GEN_SPACING_EXT 0x8E77 +#define GL_TESS_GEN_VERTEX_ORDER_EXT 0x8E78 +#define GL_TESS_GEN_POINT_MODE_EXT 0x8E79 +#define GL_ISOLINES_EXT 0x8E7A +#define GL_QUADS_EXT 0x0007 +#define GL_FRACTIONAL_ODD_EXT 0x8E7B +#define GL_FRACTIONAL_EVEN_EXT 0x8E7C +#define GL_MAX_PATCH_VERTICES_EXT 0x8E7D +#define GL_MAX_TESS_GEN_LEVEL_EXT 0x8E7E +#define GL_MAX_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E7F +#define GL_MAX_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E80 +#define GL_MAX_TESS_CONTROL_TEXTURE_IMAGE_UNITS_EXT 0x8E81 +#define GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS_EXT 0x8E82 +#define GL_MAX_TESS_CONTROL_OUTPUT_COMPONENTS_EXT 0x8E83 +#define GL_MAX_TESS_PATCH_COMPONENTS_EXT 0x8E84 +#define GL_MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS_EXT 0x8E85 +#define GL_MAX_TESS_EVALUATION_OUTPUT_COMPONENTS_EXT 0x8E86 +#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS_EXT 0x8E89 +#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS_EXT 0x8E8A +#define GL_MAX_TESS_CONTROL_INPUT_COMPONENTS_EXT 0x886C +#define GL_MAX_TESS_EVALUATION_INPUT_COMPONENTS_EXT 0x886D +#define GL_MAX_COMBINED_TESS_CONTROL_UNIFORM_COMPONENTS_EXT 0x8E1E +#define GL_MAX_COMBINED_TESS_EVALUATION_UNIFORM_COMPONENTS_EXT 0x8E1F +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTER_BUFFERS_EXT 0x92CD +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTER_BUFFERS_EXT 0x92CE +#define GL_MAX_TESS_CONTROL_ATOMIC_COUNTERS_EXT 0x92D3 +#define GL_MAX_TESS_EVALUATION_ATOMIC_COUNTERS_EXT 0x92D4 +#define GL_MAX_TESS_CONTROL_IMAGE_UNIFORMS_EXT 0x90CB +#define GL_MAX_TESS_EVALUATION_IMAGE_UNIFORMS_EXT 0x90CC +#define GL_MAX_TESS_CONTROL_SHADER_STORAGE_BLOCKS_EXT 0x90D8 +#define GL_MAX_TESS_EVALUATION_SHADER_STORAGE_BLOCKS_EXT 0x90D9 +#define GL_PRIMITIVE_RESTART_FOR_PATCHES_SUPPORTED 0x8221 +#define GL_IS_PER_PATCH_EXT 0x92E7 +#define GL_REFERENCED_BY_TESS_CONTROL_SHADER_EXT 0x9307 +#define GL_REFERENCED_BY_TESS_EVALUATION_SHADER_EXT 0x9308 +#define GL_TESS_CONTROL_SHADER_EXT 0x8E88 +#define GL_TESS_EVALUATION_SHADER_EXT 0x8E87 +#define GL_TESS_CONTROL_SHADER_BIT_EXT 0x00000008 +#define GL_TESS_EVALUATION_SHADER_BIT_EXT 0x00000010 +typedef void (GL_APIENTRYP PFNGLPATCHPARAMETERIEXTPROC) (GLenum pname, GLint value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPatchParameteriEXT (GLenum pname, GLint value); +#endif +#endif /* GL_EXT_tessellation_shader */ + +#ifndef GL_EXT_texture_border_clamp +#define GL_EXT_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_EXT 0x1004 +#define GL_CLAMP_TO_BORDER_EXT 0x812D +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, const GLuint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIIVEXTPROC) (GLenum target, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETTEXPARAMETERIUIVEXTPROC) (GLenum target, GLenum pname, GLuint *params); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, const GLint *param); +typedef void (GL_APIENTRYP PFNGLSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, const GLuint *param); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIIVEXTPROC) (GLuint sampler, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSAMPLERPARAMETERIUIVEXTPROC) (GLuint sampler, GLenum pname, GLuint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexParameterIivEXT (GLenum target, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glTexParameterIuivEXT (GLenum target, GLenum pname, const GLuint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIivEXT (GLenum target, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetTexParameterIuivEXT (GLenum target, GLenum pname, GLuint *params); +GL_APICALL void GL_APIENTRY glSamplerParameterIivEXT (GLuint sampler, GLenum pname, const GLint *param); +GL_APICALL void GL_APIENTRY glSamplerParameterIuivEXT (GLuint sampler, GLenum pname, const GLuint *param); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIivEXT (GLuint sampler, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glGetSamplerParameterIuivEXT (GLuint sampler, GLenum pname, GLuint *params); +#endif +#endif /* GL_EXT_texture_border_clamp */ + +#ifndef GL_EXT_texture_buffer +#define GL_EXT_texture_buffer 1 +#define GL_TEXTURE_BUFFER_EXT 0x8C2A +#define GL_TEXTURE_BUFFER_BINDING_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_OFFSET_ALIGNMENT_EXT 0x919F +#define GL_SAMPLER_BUFFER_EXT 0x8DC2 +#define GL_INT_SAMPLER_BUFFER_EXT 0x8DD0 +#define GL_UNSIGNED_INT_SAMPLER_BUFFER_EXT 0x8DD8 +#define GL_IMAGE_BUFFER_EXT 0x9051 +#define GL_INT_IMAGE_BUFFER_EXT 0x905C +#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067 +#define GL_TEXTURE_BUFFER_OFFSET_EXT 0x919D +#define GL_TEXTURE_BUFFER_SIZE_EXT 0x919E +typedef void (GL_APIENTRYP PFNGLTEXBUFFEREXTPROC) (GLenum target, GLenum internalformat, GLuint buffer); +typedef void (GL_APIENTRYP PFNGLTEXBUFFERRANGEEXTPROC) (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexBufferEXT (GLenum target, GLenum internalformat, GLuint buffer); +GL_APICALL void GL_APIENTRY glTexBufferRangeEXT (GLenum target, GLenum internalformat, GLuint buffer, GLintptr offset, GLsizeiptr size); +#endif +#endif /* GL_EXT_texture_buffer */ + +#ifndef GL_EXT_texture_compression_astc_decode_mode +#define GL_EXT_texture_compression_astc_decode_mode 1 +#define GL_TEXTURE_ASTC_DECODE_PRECISION_EXT 0x8F69 +#endif /* GL_EXT_texture_compression_astc_decode_mode */ + +#ifndef GL_EXT_texture_compression_bptc +#define GL_EXT_texture_compression_bptc 1 +#define GL_COMPRESSED_RGBA_BPTC_UNORM_EXT 0x8E8C +#define GL_COMPRESSED_SRGB_ALPHA_BPTC_UNORM_EXT 0x8E8D +#define GL_COMPRESSED_RGB_BPTC_SIGNED_FLOAT_EXT 0x8E8E +#define GL_COMPRESSED_RGB_BPTC_UNSIGNED_FLOAT_EXT 0x8E8F +#endif /* GL_EXT_texture_compression_bptc */ + +#ifndef GL_EXT_texture_compression_dxt1 +#define GL_EXT_texture_compression_dxt1 1 +#define GL_COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 +#define GL_COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 +#endif /* GL_EXT_texture_compression_dxt1 */ + +#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_RGBA_S3TC_DXT3_EXT 0x83F2 +#define GL_COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 +#endif /* GL_EXT_texture_compression_s3tc */ + +#ifndef GL_EXT_texture_compression_s3tc_srgb +#define GL_EXT_texture_compression_s3tc_srgb 1 +#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_compression_s3tc_srgb */ + +#ifndef GL_EXT_texture_cube_map_array +#define GL_EXT_texture_cube_map_array 1 +#define GL_TEXTURE_CUBE_MAP_ARRAY_EXT 0x9009 +#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY_EXT 0x900A +#define GL_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900C +#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW_EXT 0x900D +#define GL_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900E +#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY_EXT 0x900F +#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054 +#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F +#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A +#endif /* GL_EXT_texture_cube_map_array */ + +#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_format_BGRA8888 +#define GL_EXT_texture_format_BGRA8888 1 +#endif /* GL_EXT_texture_format_BGRA8888 */ + +#ifndef GL_EXT_texture_format_sRGB_override +#define GL_EXT_texture_format_sRGB_override 1 +#define GL_TEXTURE_FORMAT_SRGB_OVERRIDE_EXT 0x8FBF +#endif /* GL_EXT_texture_format_sRGB_override */ + +#ifndef GL_EXT_texture_mirror_clamp_to_edge +#define GL_EXT_texture_mirror_clamp_to_edge 1 +#define GL_MIRROR_CLAMP_TO_EDGE_EXT 0x8743 +#endif /* GL_EXT_texture_mirror_clamp_to_edge */ + +#ifndef GL_EXT_texture_norm16 +#define GL_EXT_texture_norm16 1 +#define GL_R16_EXT 0x822A +#define GL_RG16_EXT 0x822C +#define GL_RGBA16_EXT 0x805B +#define GL_RGB16_EXT 0x8054 +#define GL_RGB16_SNORM_EXT 0x8F9A +#endif /* GL_EXT_texture_norm16 */ + +#ifndef GL_EXT_texture_query_lod +#define GL_EXT_texture_query_lod 1 +#endif /* GL_EXT_texture_query_lod */ + +#ifndef GL_EXT_texture_rg +#define GL_EXT_texture_rg 1 +#define GL_RED_EXT 0x1903 +#define GL_RG_EXT 0x8227 +#define GL_R8_EXT 0x8229 +#define GL_RG8_EXT 0x822B +#endif /* GL_EXT_texture_rg */ + +#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_ALPHA16F_EXT 0x881C +#define GL_LUMINANCE16F_EXT 0x881E +#define GL_LUMINANCE_ALPHA16F_EXT 0x881F +#define GL_R32F_EXT 0x822E +#define GL_RG32F_EXT 0x8230 +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE1DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGE3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE1DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE2DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLTEXTURESTORAGE3DEXTPROC) (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorage1DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTexStorage2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTexStorage3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +GL_APICALL void GL_APIENTRY glTextureStorage1DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width); +GL_APICALL void GL_APIENTRY glTextureStorage2DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glTextureStorage3DEXT (GLuint texture, GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth); +#endif +#endif /* GL_EXT_texture_storage */ + +#ifndef GL_EXT_texture_storage_compression +#define GL_EXT_texture_storage_compression 1 +#define GL_NUM_SURFACE_COMPRESSION_FIXED_RATES_EXT 0x8F6E +#define GL_SURFACE_COMPRESSION_FIXED_RATE_1BPC_EXT 0x96C4 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_2BPC_EXT 0x96C5 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_3BPC_EXT 0x96C6 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_4BPC_EXT 0x96C7 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_5BPC_EXT 0x96C8 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_6BPC_EXT 0x96C9 +#define GL_SURFACE_COMPRESSION_FIXED_RATE_7BPC_EXT 0x96CA +#define GL_SURFACE_COMPRESSION_FIXED_RATE_8BPC_EXT 0x96CB +#define GL_SURFACE_COMPRESSION_FIXED_RATE_9BPC_EXT 0x96CC +#define GL_SURFACE_COMPRESSION_FIXED_RATE_10BPC_EXT 0x96CD +#define GL_SURFACE_COMPRESSION_FIXED_RATE_11BPC_EXT 0x96CE +#define GL_SURFACE_COMPRESSION_FIXED_RATE_12BPC_EXT 0x96CF +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS2DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +typedef void (GL_APIENTRYP PFNGLTEXSTORAGEATTRIBS3DEXTPROC) (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexStorageAttribs2DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, const GLint* attrib_list); +GL_APICALL void GL_APIENTRY glTexStorageAttribs3DEXT (GLenum target, GLsizei levels, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, const GLint* attrib_list); +#endif +#endif /* GL_EXT_texture_storage_compression */ + +#ifndef GL_EXT_texture_type_2_10_10_10_REV +#define GL_EXT_texture_type_2_10_10_10_REV 1 +#define GL_UNSIGNED_INT_2_10_10_10_REV_EXT 0x8368 +#endif /* GL_EXT_texture_type_2_10_10_10_REV */ + +#ifndef GL_EXT_texture_view +#define GL_EXT_texture_view 1 +#define GL_TEXTURE_VIEW_MIN_LEVEL_EXT 0x82DB +#define GL_TEXTURE_VIEW_NUM_LEVELS_EXT 0x82DC +#define GL_TEXTURE_VIEW_MIN_LAYER_EXT 0x82DD +#define GL_TEXTURE_VIEW_NUM_LAYERS_EXT 0x82DE +typedef void (GL_APIENTRYP PFNGLTEXTUREVIEWEXTPROC) (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureViewEXT (GLuint texture, GLenum target, GLuint origtexture, GLenum internalformat, GLuint minlevel, GLuint numlevels, GLuint minlayer, GLuint numlayers); +#endif +#endif /* GL_EXT_texture_view */ + +#ifndef GL_EXT_unpack_subimage +#define GL_EXT_unpack_subimage 1 +#define GL_UNPACK_ROW_LENGTH_EXT 0x0CF2 +#define GL_UNPACK_SKIP_ROWS_EXT 0x0CF3 +#define GL_UNPACK_SKIP_PIXELS_EXT 0x0CF4 +#endif /* GL_EXT_unpack_subimage */ + +#ifndef GL_EXT_win32_keyed_mutex +#define GL_EXT_win32_keyed_mutex 1 +typedef GLboolean (GL_APIENTRYP PFNGLACQUIREKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key, GLuint timeout); +typedef GLboolean (GL_APIENTRYP PFNGLRELEASEKEYEDMUTEXWIN32EXTPROC) (GLuint memory, GLuint64 key); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLboolean GL_APIENTRY glAcquireKeyedMutexWin32EXT (GLuint memory, GLuint64 key, GLuint timeout); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLWINDOWRECTANGLESEXTPROC) (GLenum mode, GLsizei count, const GLint *box); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glWindowRectanglesEXT (GLenum mode, GLsizei count, const GLint *box); +#endif +#endif /* GL_EXT_window_rectangles */ + +#ifndef GL_FJ_shader_binary_GCCSO +#define GL_FJ_shader_binary_GCCSO 1 +#define GL_GCCSO_SHADER_BINARY_FJ 0x9260 +#endif /* GL_FJ_shader_binary_GCCSO */ + +#ifndef GL_IMG_bindless_texture +#define GL_IMG_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLEIMGPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLEIMGPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64IMGPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VIMGPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64IMGPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VIMGPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleIMG (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleIMG (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glUniformHandleui64IMG (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vIMG (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64IMG (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vIMG (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +#endif +#endif /* GL_IMG_bindless_texture */ + +#ifndef GL_IMG_framebuffer_downsample +#define GL_IMG_framebuffer_downsample 1 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_AND_DOWNSAMPLE_IMG 0x913C +#define GL_NUM_DOWNSAMPLE_SCALES_IMG 0x913D +#define GL_DOWNSAMPLE_SCALES_IMG 0x913E +#define GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_SCALE_IMG 0x913F +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURELAYERDOWNSAMPLEIMGPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTexture2DDownsampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint xscale, GLint yscale); +GL_APICALL void GL_APIENTRY glFramebufferTextureLayerDownsampleIMG (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer, GLint xscale, GLint yscale); +#endif +#endif /* GL_IMG_framebuffer_downsample */ + +#ifndef GL_IMG_multisampled_render_to_texture +#define GL_IMG_multisampled_render_to_texture 1 +#define GL_RENDERBUFFER_SAMPLES_IMG 0x9133 +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_IMG 0x9134 +#define GL_MAX_SAMPLES_IMG 0x9135 +#define GL_TEXTURE_SAMPLES_IMG 0x9136 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLEIMGPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DMULTISAMPLEIMGPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleIMG (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glFramebufferTexture2DMultisampleIMG (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLsizei samples); +#endif +#endif /* GL_IMG_multisampled_render_to_texture */ + +#ifndef GL_IMG_program_binary +#define GL_IMG_program_binary 1 +#define GL_SGX_PROGRAM_BINARY_IMG 0x9130 +#endif /* GL_IMG_program_binary */ + +#ifndef GL_IMG_read_format +#define GL_IMG_read_format 1 +#define GL_BGRA_IMG 0x80E1 +#define GL_UNSIGNED_SHORT_4_4_4_4_REV_IMG 0x8365 +#endif /* GL_IMG_read_format */ + +#ifndef GL_IMG_shader_binary +#define GL_IMG_shader_binary 1 +#define GL_SGX_BINARY_IMG 0x8C0A +#endif /* GL_IMG_shader_binary */ + +#ifndef GL_IMG_texture_compression_pvrtc +#define GL_IMG_texture_compression_pvrtc 1 +#define GL_COMPRESSED_RGB_PVRTC_4BPPV1_IMG 0x8C00 +#define GL_COMPRESSED_RGB_PVRTC_2BPPV1_IMG 0x8C01 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV1_IMG 0x8C02 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV1_IMG 0x8C03 +#endif /* GL_IMG_texture_compression_pvrtc */ + +#ifndef GL_IMG_texture_compression_pvrtc2 +#define GL_IMG_texture_compression_pvrtc2 1 +#define GL_COMPRESSED_RGBA_PVRTC_2BPPV2_IMG 0x9137 +#define GL_COMPRESSED_RGBA_PVRTC_4BPPV2_IMG 0x9138 +#endif /* GL_IMG_texture_compression_pvrtc2 */ + +#ifndef GL_IMG_texture_filter_cubic +#define GL_IMG_texture_filter_cubic 1 +#define GL_CUBIC_IMG 0x9139 +#define GL_CUBIC_MIPMAP_NEAREST_IMG 0x913A +#define GL_CUBIC_MIPMAP_LINEAR_IMG 0x913B +#endif /* GL_IMG_texture_filter_cubic */ + +#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 (GL_APIENTRYP PFNGLAPPLYFRAMEBUFFERATTACHMENTCMAAINTELPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBEGINPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLCREATEPERFQUERYINTELPROC) (GLuint queryId, GLuint *queryHandle); +typedef void (GL_APIENTRYP PFNGLDELETEPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLENDPERFQUERYINTELPROC) (GLuint queryHandle); +typedef void (GL_APIENTRYP PFNGLGETFIRSTPERFQUERYIDINTELPROC) (GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETNEXTPERFQUERYIDINTELPROC) (GLuint queryId, GLuint *nextQueryId); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETPERFQUERYDATAINTELPROC) (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYIDBYNAMEINTELPROC) (GLchar *queryName, GLuint *queryId); +typedef void (GL_APIENTRYP PFNGLGETPERFQUERYINFOINTELPROC) (GLuint queryId, GLuint queryNameLength, GLchar *queryName, GLuint *dataSize, GLuint *noCounters, GLuint *noInstances, GLuint *capsMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glCreatePerfQueryINTEL (GLuint queryId, GLuint *queryHandle); +GL_APICALL void GL_APIENTRY glDeletePerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glEndPerfQueryINTEL (GLuint queryHandle); +GL_APICALL void GL_APIENTRY glGetFirstPerfQueryIdINTEL (GLuint *queryId); +GL_APICALL void GL_APIENTRY glGetNextPerfQueryIdINTEL (GLuint queryId, GLuint *nextQueryId); +GL_APICALL void GL_APIENTRY glGetPerfCounterInfoINTEL (GLuint queryId, GLuint counterId, GLuint counterNameLength, GLchar *counterName, GLuint counterDescLength, GLchar *counterDesc, GLuint *counterOffset, GLuint *counterDataSize, GLuint *counterTypeEnum, GLuint *counterDataTypeEnum, GLuint64 *rawCounterMaxValue); +GL_APICALL void GL_APIENTRY glGetPerfQueryDataINTEL (GLuint queryHandle, GLuint flags, GLsizei dataSize, void *data, GLuint *bytesWritten); +GL_APICALL void GL_APIENTRY glGetPerfQueryIdByNameINTEL (GLchar *queryName, GLuint *queryId); +GL_APICALL void GL_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_bgra +#define GL_MESA_bgra 1 +#define GL_BGR_EXT 0x80E0 +#endif /* GL_MESA_bgra */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERPARAMETERIMESAPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLGETFRAMEBUFFERPARAMETERIVMESAPROC) (GLenum target, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferParameteriMESA (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_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_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_shader_integer_functions +#define GL_MESA_shader_integer_functions 1 +#endif /* GL_MESA_shader_integer_functions */ + +#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_NV_bindless_texture +#define GL_NV_bindless_texture 1 +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTUREHANDLENVPROC) (GLuint texture); +typedef GLuint64 (GL_APIENTRYP PFNGLGETTEXTURESAMPLERHANDLENVPROC) (GLuint texture, GLuint sampler); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLMAKETEXTUREHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef GLuint64 (GL_APIENTRYP PFNGLGETIMAGEHANDLENVPROC) (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle, GLenum access); +typedef void (GL_APIENTRYP PFNGLMAKEIMAGEHANDLENONRESIDENTNVPROC) (GLuint64 handle); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64NVPROC) (GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLUNIFORMHANDLEUI64VNVPROC) (GLint location, GLsizei count, const GLuint64 *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64NVPROC) (GLuint program, GLint location, GLuint64 value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORMHANDLEUI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +typedef GLboolean (GL_APIENTRYP PFNGLISTEXTUREHANDLERESIDENTNVPROC) (GLuint64 handle); +typedef GLboolean (GL_APIENTRYP PFNGLISIMAGEHANDLERESIDENTNVPROC) (GLuint64 handle); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint64 GL_APIENTRY glGetTextureHandleNV (GLuint texture); +GL_APICALL GLuint64 GL_APIENTRY glGetTextureSamplerHandleNV (GLuint texture, GLuint sampler); +GL_APICALL void GL_APIENTRY glMakeTextureHandleResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glMakeTextureHandleNonResidentNV (GLuint64 handle); +GL_APICALL GLuint64 GL_APIENTRY glGetImageHandleNV (GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum format); +GL_APICALL void GL_APIENTRY glMakeImageHandleResidentNV (GLuint64 handle, GLenum access); +GL_APICALL void GL_APIENTRY glMakeImageHandleNonResidentNV (GLuint64 handle); +GL_APICALL void GL_APIENTRY glUniformHandleui64NV (GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glUniformHandleui64vNV (GLint location, GLsizei count, const GLuint64 *value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64NV (GLuint program, GLint location, GLuint64 value); +GL_APICALL void GL_APIENTRY glProgramUniformHandleui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64 *values); +GL_APICALL GLboolean GL_APIENTRY glIsTextureHandleResidentNV (GLuint64 handle); +GL_APICALL GLboolean GL_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 (GL_APIENTRYP PFNGLBLENDPARAMETERINVPROC) (GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLBLENDBARRIERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlendParameteriNV (GLenum pname, GLint value); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLVIEWPORTPOSITIONWSCALENVPROC) (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportPositionWScaleNV (GLuint index, GLfloat xcoeff, GLfloat ycoeff); +#endif +#endif /* GL_NV_clip_space_w_scaling */ + +#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 (GL_APIENTRYP PFNGLBEGINCONDITIONALRENDERNVPROC) (GLuint id, GLenum mode); +typedef void (GL_APIENTRYP PFNGLENDCONDITIONALRENDERNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBeginConditionalRenderNV (GLuint id, GLenum mode); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSUBPIXELPRECISIONBIASNVPROC) (GLuint xbits, GLuint ybits); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glSubpixelPrecisionBiasNV (GLuint xbits, GLuint ybits); +#endif +#endif /* GL_NV_conservative_raster */ + +#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 (GL_APIENTRYP PFNGLCONSERVATIVERASTERPARAMETERINVPROC) (GLenum pname, GLint param); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glConservativeRasterParameteriNV (GLenum pname, GLint param); +#endif +#endif /* GL_NV_conservative_raster_pre_snap_triangles */ + +#ifndef GL_NV_copy_buffer +#define GL_NV_copy_buffer 1 +#define GL_COPY_READ_BUFFER_NV 0x8F36 +#define GL_COPY_WRITE_BUFFER_NV 0x8F37 +typedef void (GL_APIENTRYP PFNGLCOPYBUFFERSUBDATANVPROC) (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCopyBufferSubDataNV (GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); +#endif +#endif /* GL_NV_copy_buffer */ + +#ifndef GL_NV_coverage_sample +#define GL_NV_coverage_sample 1 +#define GL_COVERAGE_COMPONENT_NV 0x8ED0 +#define GL_COVERAGE_COMPONENT4_NV 0x8ED1 +#define GL_COVERAGE_ATTACHMENT_NV 0x8ED2 +#define GL_COVERAGE_BUFFERS_NV 0x8ED3 +#define GL_COVERAGE_SAMPLES_NV 0x8ED4 +#define GL_COVERAGE_ALL_FRAGMENTS_NV 0x8ED5 +#define GL_COVERAGE_EDGE_FRAGMENTS_NV 0x8ED6 +#define GL_COVERAGE_AUTOMATIC_NV 0x8ED7 +#define GL_COVERAGE_BUFFER_BIT_NV 0x00008000 +typedef void (GL_APIENTRYP PFNGLCOVERAGEMASKNVPROC) (GLboolean mask); +typedef void (GL_APIENTRYP PFNGLCOVERAGEOPERATIONNVPROC) (GLenum operation); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageMaskNV (GLboolean mask); +GL_APICALL void GL_APIENTRY glCoverageOperationNV (GLenum operation); +#endif +#endif /* GL_NV_coverage_sample */ + +#ifndef GL_NV_depth_nonlinear +#define GL_NV_depth_nonlinear 1 +#define GL_DEPTH_COMPONENT16_NONLINEAR_NV 0x8E2C +#endif /* GL_NV_depth_nonlinear */ + +#ifndef GL_NV_draw_buffers +#define GL_NV_draw_buffers 1 +#define GL_MAX_DRAW_BUFFERS_NV 0x8824 +#define GL_DRAW_BUFFER0_NV 0x8825 +#define GL_DRAW_BUFFER1_NV 0x8826 +#define GL_DRAW_BUFFER2_NV 0x8827 +#define GL_DRAW_BUFFER3_NV 0x8828 +#define GL_DRAW_BUFFER4_NV 0x8829 +#define GL_DRAW_BUFFER5_NV 0x882A +#define GL_DRAW_BUFFER6_NV 0x882B +#define GL_DRAW_BUFFER7_NV 0x882C +#define GL_DRAW_BUFFER8_NV 0x882D +#define GL_DRAW_BUFFER9_NV 0x882E +#define GL_DRAW_BUFFER10_NV 0x882F +#define GL_DRAW_BUFFER11_NV 0x8830 +#define GL_DRAW_BUFFER12_NV 0x8831 +#define GL_DRAW_BUFFER13_NV 0x8832 +#define GL_DRAW_BUFFER14_NV 0x8833 +#define GL_DRAW_BUFFER15_NV 0x8834 +#define GL_COLOR_ATTACHMENT0_NV 0x8CE0 +#define GL_COLOR_ATTACHMENT1_NV 0x8CE1 +#define GL_COLOR_ATTACHMENT2_NV 0x8CE2 +#define GL_COLOR_ATTACHMENT3_NV 0x8CE3 +#define GL_COLOR_ATTACHMENT4_NV 0x8CE4 +#define GL_COLOR_ATTACHMENT5_NV 0x8CE5 +#define GL_COLOR_ATTACHMENT6_NV 0x8CE6 +#define GL_COLOR_ATTACHMENT7_NV 0x8CE7 +#define GL_COLOR_ATTACHMENT8_NV 0x8CE8 +#define GL_COLOR_ATTACHMENT9_NV 0x8CE9 +#define GL_COLOR_ATTACHMENT10_NV 0x8CEA +#define GL_COLOR_ATTACHMENT11_NV 0x8CEB +#define GL_COLOR_ATTACHMENT12_NV 0x8CEC +#define GL_COLOR_ATTACHMENT13_NV 0x8CED +#define GL_COLOR_ATTACHMENT14_NV 0x8CEE +#define GL_COLOR_ATTACHMENT15_NV 0x8CEF +typedef void (GL_APIENTRYP PFNGLDRAWBUFFERSNVPROC) (GLsizei n, const GLenum *bufs); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawBuffersNV (GLsizei n, const GLenum *bufs); +#endif +#endif /* GL_NV_draw_buffers */ + +#ifndef GL_NV_draw_instanced +#define GL_NV_draw_instanced 1 +typedef void (GL_APIENTRYP PFNGLDRAWARRAYSINSTANCEDNVPROC) (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +typedef void (GL_APIENTRYP PFNGLDRAWELEMENTSINSTANCEDNVPROC) (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawArraysInstancedNV (GLenum mode, GLint first, GLsizei count, GLsizei primcount); +GL_APICALL void GL_APIENTRY glDrawElementsInstancedNV (GLenum mode, GLsizei count, GLenum type, const void *indices, GLsizei primcount); +#endif +#endif /* GL_NV_draw_instanced */ + +#ifndef GL_NV_draw_vulkan_image +#define GL_NV_draw_vulkan_image 1 +typedef void (GL_APIENTRY *GLVULKANPROCNV)(void); +typedef void (GL_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 (GL_APIENTRYP PFNGLGETVKPROCADDRNVPROC) (const GLchar *name); +typedef void (GL_APIENTRYP PFNGLWAITVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKSEMAPHORENVPROC) (GLuint64 vkSemaphore); +typedef void (GL_APIENTRYP PFNGLSIGNALVKFENCENVPROC) (GLuint64 vkFence); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawVkImageNV (GLuint64 vkImage, GLuint sampler, GLfloat x0, GLfloat y0, GLfloat x1, GLfloat y1, GLfloat z, GLfloat s0, GLfloat t0, GLfloat s1, GLfloat t1); +GL_APICALL GLVULKANPROCNV GL_APIENTRY glGetVkProcAddrNV (const GLchar *name); +GL_APICALL void GL_APIENTRY glWaitVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkSemaphoreNV (GLuint64 vkSemaphore); +GL_APICALL void GL_APIENTRY glSignalVkFenceNV (GLuint64 vkFence); +#endif +#endif /* GL_NV_draw_vulkan_image */ + +#ifndef GL_NV_explicit_attrib_location +#define GL_NV_explicit_attrib_location 1 +#endif /* GL_NV_explicit_attrib_location */ + +#ifndef GL_NV_fbo_color_attachments +#define GL_NV_fbo_color_attachments 1 +#define GL_MAX_COLOR_ATTACHMENTS_NV 0x8CDF +#endif /* GL_NV_fbo_color_attachments */ + +#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 (GL_APIENTRYP PFNGLDELETEFENCESNVPROC) (GLsizei n, const GLuint *fences); +typedef void (GL_APIENTRYP PFNGLGENFENCESNVPROC) (GLsizei n, GLuint *fences); +typedef GLboolean (GL_APIENTRYP PFNGLISFENCENVPROC) (GLuint fence); +typedef GLboolean (GL_APIENTRYP PFNGLTESTFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLGETFENCEIVNVPROC) (GLuint fence, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLFINISHFENCENVPROC) (GLuint fence); +typedef void (GL_APIENTRYP PFNGLSETFENCENVPROC) (GLuint fence, GLenum condition); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDeleteFencesNV (GLsizei n, const GLuint *fences); +GL_APICALL void GL_APIENTRY glGenFencesNV (GLsizei n, GLuint *fences); +GL_APICALL GLboolean GL_APIENTRY glIsFenceNV (GLuint fence); +GL_APICALL GLboolean GL_APIENTRY glTestFenceNV (GLuint fence); +GL_APICALL void GL_APIENTRY glGetFenceivNV (GLuint fence, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glFinishFenceNV (GLuint fence); +GL_APICALL void GL_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_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 (GL_APIENTRYP PFNGLFRAGMENTCOVERAGECOLORNVPROC) (GLuint color); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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_blit +#define GL_NV_framebuffer_blit 1 +#define GL_READ_FRAMEBUFFER_NV 0x8CA8 +#define GL_DRAW_FRAMEBUFFER_NV 0x8CA9 +#define GL_DRAW_FRAMEBUFFER_BINDING_NV 0x8CA6 +#define GL_READ_FRAMEBUFFER_BINDING_NV 0x8CAA +typedef void (GL_APIENTRYP PFNGLBLITFRAMEBUFFERNVPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBlitFramebufferNV (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); +#endif +#endif /* GL_NV_framebuffer_blit */ + +#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 (GL_APIENTRYP PFNGLCOVERAGEMODULATIONTABLENVPROC) (GLsizei n, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLGETCOVERAGEMODULATIONTABLENVPROC) (GLsizei bufSize, GLfloat *v); +typedef void (GL_APIENTRYP PFNGLCOVERAGEMODULATIONNVPROC) (GLenum components); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCoverageModulationTableNV (GLsizei n, const GLfloat *v); +GL_APICALL void GL_APIENTRY glGetCoverageModulationTableNV (GLsizei bufSize, GLfloat *v); +GL_APICALL void GL_APIENTRY glCoverageModulationNV (GLenum components); +#endif +#endif /* GL_NV_framebuffer_mixed_samples */ + +#ifndef GL_NV_framebuffer_multisample +#define GL_NV_framebuffer_multisample 1 +#define GL_RENDERBUFFER_SAMPLES_NV 0x8CAB +#define GL_FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_NV 0x8D56 +#define GL_MAX_SAMPLES_NV 0x8D57 +typedef void (GL_APIENTRYP PFNGLRENDERBUFFERSTORAGEMULTISAMPLENVPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glRenderbufferStorageMultisampleNV (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); +#endif +#endif /* GL_NV_framebuffer_multisample */ + +#ifndef GL_NV_generate_mipmap_sRGB +#define GL_NV_generate_mipmap_sRGB 1 +#endif /* GL_NV_generate_mipmap_sRGB */ + +#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; +typedef khronos_uint64_t GLuint64EXT; +#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 +#define GL_PATCHES 0x000E +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT *params); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +typedef void (GL_APIENTRYP PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniform1i64NV (GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2i64NV (GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4i64NV (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4i64vNV (GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform1ui64NV (GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glUniform2ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glUniform3ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glUniform4ui64NV (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glUniform1ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform2ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform3ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glUniform4ui64vNV (GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glGetUniformi64vNV (GLuint program, GLint location, GLint64EXT *params); +GL_APICALL void GL_APIENTRY glProgramUniform1i64NV (GLuint program, GLint location, GLint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4i64NV (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4i64vNV (GLuint program, GLint location, GLsizei count, const GLint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64NV (GLuint program, GLint location, GLuint64EXT x); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64NV (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w); +GL_APICALL void GL_APIENTRY glProgramUniform1ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform2ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform3ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +GL_APICALL void GL_APIENTRY glProgramUniform4ui64vNV (GLuint program, GLint location, GLsizei count, const GLuint64EXT *value); +#endif +#endif /* GL_NV_gpu_shader5 */ + +#ifndef GL_NV_image_formats +#define GL_NV_image_formats 1 +#endif /* GL_NV_image_formats */ + +#ifndef GL_NV_instanced_arrays +#define GL_NV_instanced_arrays 1 +#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR_NV 0x88FE +typedef void (GL_APIENTRYP PFNGLVERTEXATTRIBDIVISORNVPROC) (GLuint index, GLuint divisor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glVertexAttribDivisorNV (GLuint index, GLuint divisor); +#endif +#endif /* GL_NV_instanced_arrays */ + +#ifndef GL_NV_internalformat_sample_query +#define GL_NV_internalformat_sample_query 1 +#define GL_TEXTURE_2D_MULTISAMPLE 0x9100 +#define GL_TEXTURE_2D_MULTISAMPLE_ARRAY 0x9102 +#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 (GL_APIENTRYP PFNGLGETINTERNALFORMATSAMPLEIVNVPROC) (GLenum target, GLenum internalformat, GLsizei samples, GLenum pname, GLsizei count, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLGETMEMORYOBJECTDETACHEDRESOURCESUIVNVPROC) (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +typedef void (GL_APIENTRYP PFNGLRESETMEMORYOBJECTPARAMETERNVPROC) (GLuint memory, GLenum pname); +typedef void (GL_APIENTRYP PFNGLTEXATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLBUFFERATTACHMEMORYNVPROC) (GLenum target, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLTEXTUREATTACHMEMORYNVPROC) (GLuint texture, GLuint memory, GLuint64 offset); +typedef void (GL_APIENTRYP PFNGLNAMEDBUFFERATTACHMEMORYNVPROC) (GLuint buffer, GLuint memory, GLuint64 offset); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetMemoryObjectDetachedResourcesuivNV (GLuint memory, GLenum pname, GLint first, GLsizei count, GLuint *params); +GL_APICALL void GL_APIENTRY glResetMemoryObjectParameterNV (GLuint memory, GLenum pname); +GL_APICALL void GL_APIENTRY glTexAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glBufferAttachMemoryNV (GLenum target, GLuint memory, GLuint64 offset); +GL_APICALL void GL_APIENTRY glTextureAttachMemoryNV (GLuint texture, GLuint memory, GLuint64 offset); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLBUFFERPAGECOMMITMENTMEMNVPROC) (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 (GL_APIENTRYP PFNGLNAMEDBUFFERPAGECOMMITMENTMEMNVPROC) (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +typedef void (GL_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 +GL_APICALL void GL_APIENTRY glBufferPageCommitmentMemNV (GLenum target, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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); +GL_APICALL void GL_APIENTRY glNamedBufferPageCommitmentMemNV (GLuint buffer, GLintptr offset, GLsizeiptr size, GLuint memory, GLuint64 memOffset, GLboolean commit); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLDRAWMESHTASKSNVPROC) (GLuint first, GLuint count); +typedef void (GL_APIENTRYP PFNGLDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTNVPROC) (GLintptr indirect, GLsizei drawcount, GLsizei stride); +typedef void (GL_APIENTRYP PFNGLMULTIDRAWMESHTASKSINDIRECTCOUNTNVPROC) (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glDrawMeshTasksNV (GLuint first, GLuint count); +GL_APICALL void GL_APIENTRY glDrawMeshTasksIndirectNV (GLintptr indirect); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectNV (GLintptr indirect, GLsizei drawcount, GLsizei stride); +GL_APICALL void GL_APIENTRY glMultiDrawMeshTasksIndirectCountNV (GLintptr indirect, GLintptr drawcount, GLsizei maxdrawcount, GLsizei stride); +#endif +#endif /* GL_NV_mesh_shader */ + +#ifndef GL_NV_non_square_matrices +#define GL_NV_non_square_matrices 1 +#define GL_FLOAT_MAT2x3_NV 0x8B65 +#define GL_FLOAT_MAT2x4_NV 0x8B66 +#define GL_FLOAT_MAT3x2_NV 0x8B67 +#define GL_FLOAT_MAT3x4_NV 0x8B68 +#define GL_FLOAT_MAT4x2_NV 0x8B69 +#define GL_FLOAT_MAT4x3_NV 0x8B6A +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX2X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X2FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX3X4FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLUNIFORMMATRIX4X3FVNVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glUniformMatrix2x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix2x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x2fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix3x4fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +GL_APICALL void GL_APIENTRY glUniformMatrix4x3fvNV (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +#endif /* GL_NV_non_square_matrices */ + +#ifndef GL_NV_path_rendering +#define GL_NV_path_rendering 1 +typedef double GLdouble; +#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 (GL_APIENTRYP PFNGLGENPATHSNVPROC) (GLsizei range); +typedef void (GL_APIENTRYP PFNGLDELETEPATHSNVPROC) (GLuint path, GLsizei range); +typedef GLboolean (GL_APIENTRYP PFNGLISPATHNVPROC) (GLuint path); +typedef void (GL_APIENTRYP PFNGLPATHCOMMANDSNVPROC) (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHCOORDSNVPROC) (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOMMANDSNVPROC) (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSUBCOORDSNVPROC) (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +typedef void (GL_APIENTRYP PFNGLPATHSTRINGNVPROC) (GLuint path, GLenum format, GLsizei length, const void *pathString); +typedef void (GL_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 (GL_APIENTRYP PFNGLPATHGLYPHRANGENVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLWEIGHTPATHSNVPROC) (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +typedef void (GL_APIENTRYP PFNGLCOPYPATHNVPROC) (GLuint resultPath, GLuint srcPath); +typedef void (GL_APIENTRYP PFNGLINTERPOLATEPATHSNVPROC) (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +typedef void (GL_APIENTRYP PFNGLTRANSFORMPATHNVPROC) (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, const GLint *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERINVPROC) (GLuint path, GLenum pname, GLint value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, const GLfloat *value); +typedef void (GL_APIENTRYP PFNGLPATHPARAMETERFNVPROC) (GLuint path, GLenum pname, GLfloat value); +typedef void (GL_APIENTRYP PFNGLPATHDASHARRAYNVPROC) (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILFUNCNVPROC) (GLenum func, GLint ref, GLuint mask); +typedef void (GL_APIENTRYP PFNGLPATHSTENCILDEPTHOFFSETNVPROC) (GLfloat factor, GLfloat units); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask); +typedef void (GL_APIENTRYP PFNGLSTENCILFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLPATHCOVERDEPTHFUNCNVPROC) (GLenum func); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHNVPROC) (GLuint path, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERIVNVPROC) (GLuint path, GLenum pname, GLint *value); +typedef void (GL_APIENTRYP PFNGLGETPATHPARAMETERFVNVPROC) (GLuint path, GLenum pname, GLfloat *value); +typedef void (GL_APIENTRYP PFNGLGETPATHCOMMANDSNVPROC) (GLuint path, GLubyte *commands); +typedef void (GL_APIENTRYP PFNGLGETPATHCOORDSNVPROC) (GLuint path, GLfloat *coords); +typedef void (GL_APIENTRYP PFNGLGETPATHDASHARRAYNVPROC) (GLuint path, GLfloat *dashArray); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICSNVPROC) (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHMETRICRANGENVPROC) (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +typedef void (GL_APIENTRYP PFNGLGETPATHSPACINGNVPROC) (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINFILLPATHNVPROC) (GLuint path, GLuint mask, GLfloat x, GLfloat y); +typedef GLboolean (GL_APIENTRYP PFNGLISPOINTINSTROKEPATHNVPROC) (GLuint path, GLfloat x, GLfloat y); +typedef GLfloat (GL_APIENTRYP PFNGLGETPATHLENGTHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments); +typedef GLboolean (GL_APIENTRYP PFNGLPOINTALONGPATHNVPROC) (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOAD3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X2FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULT3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSE3X3FNVPROC) (GLenum matrixMode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHNVPROC) (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHNVPROC) (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERFILLPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef void (GL_APIENTRYP PFNGLSTENCILTHENCOVERSTROKEPATHINSTANCEDNVPROC) (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXRANGENVPROC) (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +typedef GLenum (GL_APIENTRYP PFNGLPATHGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef GLenum (GL_APIENTRYP PFNGLPATHMEMORYGLYPHINDEXARRAYNVPROC) (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +typedef void (GL_APIENTRYP PFNGLPROGRAMPATHFRAGMENTINPUTGENNVPROC) (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +typedef void (GL_APIENTRYP PFNGLGETPROGRAMRESOURCEFVNVPROC) (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +typedef void (GL_APIENTRYP PFNGLMATRIXFRUSTUMEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADIDENTITYEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXLOADDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTTRANSPOSEDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTFEXTPROC) (GLenum mode, const GLfloat *m); +typedef void (GL_APIENTRYP PFNGLMATRIXMULTDEXTPROC) (GLenum mode, const GLdouble *m); +typedef void (GL_APIENTRYP PFNGLMATRIXORTHOEXTPROC) (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +typedef void (GL_APIENTRYP PFNGLMATRIXPOPEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXPUSHEXTPROC) (GLenum mode); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEFEXTPROC) (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXROTATEDEXTPROC) (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXSCALEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEFEXTPROC) (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +typedef void (GL_APIENTRYP PFNGLMATRIXTRANSLATEDEXTPROC) (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL GLuint GL_APIENTRY glGenPathsNV (GLsizei range); +GL_APICALL void GL_APIENTRY glDeletePathsNV (GLuint path, GLsizei range); +GL_APICALL GLboolean GL_APIENTRY glIsPathNV (GLuint path); +GL_APICALL void GL_APIENTRY glPathCommandsNV (GLuint path, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathCoordsNV (GLuint path, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCommandsNV (GLuint path, GLsizei commandStart, GLsizei commandsToDelete, GLsizei numCommands, const GLubyte *commands, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathSubCoordsNV (GLuint path, GLsizei coordStart, GLsizei numCoords, GLenum coordType, const void *coords); +GL_APICALL void GL_APIENTRY glPathStringNV (GLuint path, GLenum format, GLsizei length, const void *pathString); +GL_APICALL void GL_APIENTRY glPathGlyphsNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLsizei numGlyphs, GLenum type, const void *charcodes, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glPathGlyphRangeNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyph, GLsizei numGlyphs, GLenum handleMissingGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glWeightPathsNV (GLuint resultPath, GLsizei numPaths, const GLuint *paths, const GLfloat *weights); +GL_APICALL void GL_APIENTRY glCopyPathNV (GLuint resultPath, GLuint srcPath); +GL_APICALL void GL_APIENTRY glInterpolatePathsNV (GLuint resultPath, GLuint pathA, GLuint pathB, GLfloat weight); +GL_APICALL void GL_APIENTRY glTransformPathNV (GLuint resultPath, GLuint srcPath, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathParameterivNV (GLuint path, GLenum pname, const GLint *value); +GL_APICALL void GL_APIENTRY glPathParameteriNV (GLuint path, GLenum pname, GLint value); +GL_APICALL void GL_APIENTRY glPathParameterfvNV (GLuint path, GLenum pname, const GLfloat *value); +GL_APICALL void GL_APIENTRY glPathParameterfNV (GLuint path, GLenum pname, GLfloat value); +GL_APICALL void GL_APIENTRY glPathDashArrayNV (GLuint path, GLsizei dashCount, const GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glPathStencilFuncNV (GLenum func, GLint ref, GLuint mask); +GL_APICALL void GL_APIENTRY glPathStencilDepthOffsetNV (GLfloat factor, GLfloat units); +GL_APICALL void GL_APIENTRY glStencilFillPathNV (GLuint path, GLenum fillMode, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilStrokePathNV (GLuint path, GLint reference, GLuint mask); +GL_APICALL void GL_APIENTRY glStencilFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glPathCoverDepthFuncNV (GLenum func); +GL_APICALL void GL_APIENTRY glCoverFillPathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverStrokePathNV (GLuint path, GLenum coverMode); +GL_APICALL void GL_APIENTRY glCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glGetPathParameterivNV (GLuint path, GLenum pname, GLint *value); +GL_APICALL void GL_APIENTRY glGetPathParameterfvNV (GLuint path, GLenum pname, GLfloat *value); +GL_APICALL void GL_APIENTRY glGetPathCommandsNV (GLuint path, GLubyte *commands); +GL_APICALL void GL_APIENTRY glGetPathCoordsNV (GLuint path, GLfloat *coords); +GL_APICALL void GL_APIENTRY glGetPathDashArrayNV (GLuint path, GLfloat *dashArray); +GL_APICALL void GL_APIENTRY glGetPathMetricsNV (GLbitfield metricQueryMask, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathMetricRangeNV (GLbitfield metricQueryMask, GLuint firstPathName, GLsizei numPaths, GLsizei stride, GLfloat *metrics); +GL_APICALL void GL_APIENTRY glGetPathSpacingNV (GLenum pathListMode, GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLfloat advanceScale, GLfloat kerningScale, GLenum transformType, GLfloat *returnedSpacing); +GL_APICALL GLboolean GL_APIENTRY glIsPointInFillPathNV (GLuint path, GLuint mask, GLfloat x, GLfloat y); +GL_APICALL GLboolean GL_APIENTRY glIsPointInStrokePathNV (GLuint path, GLfloat x, GLfloat y); +GL_APICALL GLfloat GL_APIENTRY glGetPathLengthNV (GLuint path, GLsizei startSegment, GLsizei numSegments); +GL_APICALL GLboolean GL_APIENTRY glPointAlongPathNV (GLuint path, GLsizei startSegment, GLsizei numSegments, GLfloat distance, GLfloat *x, GLfloat *y, GLfloat *tangentX, GLfloat *tangentY); +GL_APICALL void GL_APIENTRY glMatrixLoad3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoad3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x2fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMult3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTranspose3x3fNV (GLenum matrixMode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathNV (GLuint path, GLenum fillMode, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathNV (GLuint path, GLint reference, GLuint mask, GLenum coverMode); +GL_APICALL void GL_APIENTRY glStencilThenCoverFillPathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLenum fillMode, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL void GL_APIENTRY glStencilThenCoverStrokePathInstancedNV (GLsizei numPaths, GLenum pathNameType, const void *paths, GLuint pathBase, GLint reference, GLuint mask, GLenum coverMode, GLenum transformType, const GLfloat *transformValues); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexRangeNV (GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint pathParameterTemplate, GLfloat emScale, GLuint *baseAndCount); +GL_APICALL GLenum GL_APIENTRY glPathGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, const void *fontName, GLbitfield fontStyle, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL GLenum GL_APIENTRY glPathMemoryGlyphIndexArrayNV (GLuint firstPathName, GLenum fontTarget, GLsizeiptr fontSize, const void *fontData, GLsizei faceIndex, GLuint firstGlyphIndex, GLsizei numGlyphs, GLuint pathParameterTemplate, GLfloat emScale); +GL_APICALL void GL_APIENTRY glProgramPathFragmentInputGenNV (GLuint program, GLint location, GLenum genMode, GLint components, const GLfloat *coeffs); +GL_APICALL void GL_APIENTRY glGetProgramResourcefvNV (GLuint program, GLenum programInterface, GLuint index, GLsizei propCount, const GLenum *props, GLsizei count, GLsizei *length, GLfloat *params); +GL_APICALL void GL_APIENTRY glMatrixFrustumEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixLoadIdentityEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoadTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixLoadfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixLoaddEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposefEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultTransposedEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixMultfEXT (GLenum mode, const GLfloat *m); +GL_APICALL void GL_APIENTRY glMatrixMultdEXT (GLenum mode, const GLdouble *m); +GL_APICALL void GL_APIENTRY glMatrixOrthoEXT (GLenum mode, GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); +GL_APICALL void GL_APIENTRY glMatrixPopEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixPushEXT (GLenum mode); +GL_APICALL void GL_APIENTRY glMatrixRotatefEXT (GLenum mode, GLfloat angle, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixRotatedEXT (GLenum mode, GLdouble angle, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixScalefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixScaledEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +GL_APICALL void GL_APIENTRY glMatrixTranslatefEXT (GLenum mode, GLfloat x, GLfloat y, GLfloat z); +GL_APICALL void GL_APIENTRY glMatrixTranslatedEXT (GLenum mode, GLdouble x, GLdouble y, GLdouble z); +#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_buffer_object +#define GL_NV_pixel_buffer_object 1 +#define GL_PIXEL_PACK_BUFFER_NV 0x88EB +#define GL_PIXEL_UNPACK_BUFFER_NV 0x88EC +#define GL_PIXEL_PACK_BUFFER_BINDING_NV 0x88ED +#define GL_PIXEL_UNPACK_BUFFER_BINDING_NV 0x88EF +#endif /* GL_NV_pixel_buffer_object */ + +#ifndef GL_NV_polygon_mode +#define GL_NV_polygon_mode 1 +#define GL_POLYGON_MODE_NV 0x0B40 +#define GL_POLYGON_OFFSET_POINT_NV 0x2A01 +#define GL_POLYGON_OFFSET_LINE_NV 0x2A02 +#define GL_POINT_NV 0x1B00 +#define GL_LINE_NV 0x1B01 +#define GL_FILL_NV 0x1B02 +typedef void (GL_APIENTRYP PFNGLPOLYGONMODENVPROC) (GLenum face, GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glPolygonModeNV (GLenum face, GLenum mode); +#endif +#endif /* GL_NV_polygon_mode */ + +#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_read_buffer +#define GL_NV_read_buffer 1 +#define GL_READ_BUFFER_NV 0x0C02 +typedef void (GL_APIENTRYP PFNGLREADBUFFERNVPROC) (GLenum mode); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glReadBufferNV (GLenum mode); +#endif +#endif /* GL_NV_read_buffer */ + +#ifndef GL_NV_read_buffer_front +#define GL_NV_read_buffer_front 1 +#endif /* GL_NV_read_buffer_front */ + +#ifndef GL_NV_read_depth +#define GL_NV_read_depth 1 +#endif /* GL_NV_read_depth */ + +#ifndef GL_NV_read_depth_stencil +#define GL_NV_read_depth_stencil 1 +#endif /* GL_NV_read_depth_stencil */ + +#ifndef GL_NV_read_stencil +#define GL_NV_read_stencil 1 +#endif /* GL_NV_read_stencil */ + +#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_sRGB_formats +#define GL_NV_sRGB_formats 1 +#define GL_SLUMINANCE_NV 0x8C46 +#define GL_SLUMINANCE_ALPHA_NV 0x8C44 +#define GL_SRGB8_NV 0x8C41 +#define GL_SLUMINANCE8_NV 0x8C47 +#define GL_SLUMINANCE8_ALPHA8_NV 0x8C45 +#define GL_COMPRESSED_SRGB_S3TC_DXT1_NV 0x8C4C +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT1_NV 0x8C4D +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT3_NV 0x8C4E +#define GL_COMPRESSED_SRGB_ALPHA_S3TC_DXT5_NV 0x8C4F +#define GL_ETC1_SRGB8_NV 0x88EE +#endif /* GL_NV_sRGB_formats */ + +#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 (GL_APIENTRYP PFNGLFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLNAMEDFRAMEBUFFERSAMPLELOCATIONSFVNVPROC) (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLRESOLVEDEPTHVALUESNVPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferSampleLocationsfvNV (GLenum target, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glNamedFramebufferSampleLocationsfvNV (GLuint framebuffer, GLuint start, GLsizei count, const GLfloat *v); +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLSCISSOREXCLUSIVENVPROC) (GLint x, GLint y, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSOREXCLUSIVEARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glScissorExclusiveNV (GLint x, GLint y, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorExclusiveArrayvNV (GLuint first, GLsizei count, const GLint *v); +#endif +#endif /* GL_NV_scissor_exclusive */ + +#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_noperspective_interpolation +#define GL_NV_shader_noperspective_interpolation 1 +#endif /* GL_NV_shader_noperspective_interpolation */ + +#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_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 (GL_APIENTRYP PFNGLBINDSHADINGRATEIMAGENVPROC) (GLuint texture); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint entry, GLenum *rate); +typedef void (GL_APIENTRYP PFNGLGETSHADINGRATESAMPLELOCATIONIVNVPROC) (GLenum rate, GLuint samples, GLuint index, GLint *location); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEBARRIERNVPROC) (GLboolean synchronize); +typedef void (GL_APIENTRYP PFNGLSHADINGRATEIMAGEPALETTENVPROC) (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERNVPROC) (GLenum order); +typedef void (GL_APIENTRYP PFNGLSHADINGRATESAMPLEORDERCUSTOMNVPROC) (GLenum rate, GLuint samples, const GLint *locations); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glBindShadingRateImageNV (GLuint texture); +GL_APICALL void GL_APIENTRY glGetShadingRateImagePaletteNV (GLuint viewport, GLuint entry, GLenum *rate); +GL_APICALL void GL_APIENTRY glGetShadingRateSampleLocationivNV (GLenum rate, GLuint samples, GLuint index, GLint *location); +GL_APICALL void GL_APIENTRY glShadingRateImageBarrierNV (GLboolean synchronize); +GL_APICALL void GL_APIENTRY glShadingRateImagePaletteNV (GLuint viewport, GLuint first, GLsizei count, const GLenum *rates); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderNV (GLenum order); +GL_APICALL void GL_APIENTRY glShadingRateSampleOrderCustomNV (GLenum rate, GLuint samples, const GLint *locations); +#endif +#endif /* GL_NV_shading_rate_image */ + +#ifndef GL_NV_shadow_samplers_array +#define GL_NV_shadow_samplers_array 1 +#define GL_SAMPLER_2D_ARRAY_SHADOW_NV 0x8DC4 +#endif /* GL_NV_shadow_samplers_array */ + +#ifndef GL_NV_shadow_samplers_cube +#define GL_NV_shadow_samplers_cube 1 +#define GL_SAMPLER_CUBE_SHADOW_NV 0x8DC5 +#endif /* GL_NV_shadow_samplers_cube */ + +#ifndef GL_NV_stereo_view_rendering +#define GL_NV_stereo_view_rendering 1 +#endif /* GL_NV_stereo_view_rendering */ + +#ifndef GL_NV_texture_border_clamp +#define GL_NV_texture_border_clamp 1 +#define GL_TEXTURE_BORDER_COLOR_NV 0x1004 +#define GL_CLAMP_TO_BORDER_NV 0x812D +#endif /* GL_NV_texture_border_clamp */ + +#ifndef GL_NV_texture_compression_s3tc_update +#define GL_NV_texture_compression_s3tc_update 1 +#endif /* GL_NV_texture_compression_s3tc_update */ + +#ifndef GL_NV_texture_npot_2D_mipmap +#define GL_NV_texture_npot_2D_mipmap 1 +#endif /* GL_NV_texture_npot_2D_mipmap */ + +#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 (GL_APIENTRYP PFNGLCREATESEMAPHORESNVPROC) (GLsizei n, GLuint *semaphores); +typedef void (GL_APIENTRYP PFNGLSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, const GLint *params); +typedef void (GL_APIENTRYP PFNGLGETSEMAPHOREPARAMETERIVNVPROC) (GLuint semaphore, GLenum pname, GLint *params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glCreateSemaphoresNV (GLsizei n, GLuint *semaphores); +GL_APICALL void GL_APIENTRY glSemaphoreParameterivNV (GLuint semaphore, GLenum pname, const GLint *params); +GL_APICALL void GL_APIENTRY glGetSemaphoreParameterivNV (GLuint semaphore, GLenum pname, GLint *params); +#endif +#endif /* GL_NV_timeline_semaphore */ + +#ifndef GL_NV_viewport_array +#define GL_NV_viewport_array 1 +#define GL_MAX_VIEWPORTS_NV 0x825B +#define GL_VIEWPORT_SUBPIXEL_BITS_NV 0x825C +#define GL_VIEWPORT_BOUNDS_RANGE_NV 0x825D +#define GL_VIEWPORT_INDEX_PROVOKING_VERTEX_NV 0x825F +typedef void (GL_APIENTRYP PFNGLVIEWPORTARRAYVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFNVPROC) (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +typedef void (GL_APIENTRYP PFNGLVIEWPORTINDEXEDFVNVPROC) (GLuint index, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLSCISSORARRAYVNVPROC) (GLuint first, GLsizei count, const GLint *v); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDNVPROC) (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +typedef void (GL_APIENTRYP PFNGLSCISSORINDEXEDVNVPROC) (GLuint index, const GLint *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEARRAYFVNVPROC) (GLuint first, GLsizei count, const GLfloat *v); +typedef void (GL_APIENTRYP PFNGLDEPTHRANGEINDEXEDFNVPROC) (GLuint index, GLfloat n, GLfloat f); +typedef void (GL_APIENTRYP PFNGLGETFLOATI_VNVPROC) (GLenum target, GLuint index, GLfloat *data); +typedef void (GL_APIENTRYP PFNGLENABLEINVPROC) (GLenum target, GLuint index); +typedef void (GL_APIENTRYP PFNGLDISABLEINVPROC) (GLenum target, GLuint index); +typedef GLboolean (GL_APIENTRYP PFNGLISENABLEDINVPROC) (GLenum target, GLuint index); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glViewportArrayvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glViewportIndexedfNV (GLuint index, GLfloat x, GLfloat y, GLfloat w, GLfloat h); +GL_APICALL void GL_APIENTRY glViewportIndexedfvNV (GLuint index, const GLfloat *v); +GL_APICALL void GL_APIENTRY glScissorArrayvNV (GLuint first, GLsizei count, const GLint *v); +GL_APICALL void GL_APIENTRY glScissorIndexedNV (GLuint index, GLint left, GLint bottom, GLsizei width, GLsizei height); +GL_APICALL void GL_APIENTRY glScissorIndexedvNV (GLuint index, const GLint *v); +GL_APICALL void GL_APIENTRY glDepthRangeArrayfvNV (GLuint first, GLsizei count, const GLfloat *v); +GL_APICALL void GL_APIENTRY glDepthRangeIndexedfNV (GLuint index, GLfloat n, GLfloat f); +GL_APICALL void GL_APIENTRY glGetFloati_vNV (GLenum target, GLuint index, GLfloat *data); +GL_APICALL void GL_APIENTRY glEnableiNV (GLenum target, GLuint index); +GL_APICALL void GL_APIENTRY glDisableiNV (GLenum target, GLuint index); +GL_APICALL GLboolean GL_APIENTRY glIsEnablediNV (GLenum target, GLuint index); +#endif +#endif /* GL_NV_viewport_array */ + +#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 (GL_APIENTRYP PFNGLVIEWPORTSWIZZLENVPROC) (GLuint index, GLenum swizzlex, GLenum swizzley, GLenum swizzlez, GLenum swizzlew); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_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 (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultiviewOVR (GLenum target, 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_OVR_multiview_multisampled_render_to_texture +#define GL_OVR_multiview_multisampled_render_to_texture 1 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERTEXTUREMULTISAMPLEMULTIVIEWOVRPROC) (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferTextureMultisampleMultiviewOVR (GLenum target, GLenum attachment, GLuint texture, GLint level, GLsizei samples, GLint baseViewIndex, GLsizei numViews); +#endif +#endif /* GL_OVR_multiview_multisampled_render_to_texture */ + +#ifndef GL_QCOM_YUV_texture_gather +#define GL_QCOM_YUV_texture_gather 1 +#endif /* GL_QCOM_YUV_texture_gather */ + +#ifndef GL_QCOM_alpha_test +#define GL_QCOM_alpha_test 1 +#define GL_ALPHA_TEST_QCOM 0x0BC0 +#define GL_ALPHA_TEST_FUNC_QCOM 0x0BC1 +#define GL_ALPHA_TEST_REF_QCOM 0x0BC2 +typedef void (GL_APIENTRYP PFNGLALPHAFUNCQCOMPROC) (GLenum func, GLclampf ref); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glAlphaFuncQCOM (GLenum func, GLclampf ref); +#endif +#endif /* GL_QCOM_alpha_test */ + +#ifndef GL_QCOM_binning_control +#define GL_QCOM_binning_control 1 +#define GL_BINNING_CONTROL_HINT_QCOM 0x8FB0 +#define GL_CPU_OPTIMIZED_QCOM 0x8FB1 +#define GL_GPU_OPTIMIZED_QCOM 0x8FB2 +#define GL_RENDER_DIRECT_TO_FRAMEBUFFER_QCOM 0x8FB3 +#endif /* GL_QCOM_binning_control */ + +#ifndef GL_QCOM_driver_control +#define GL_QCOM_driver_control 1 +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSQCOMPROC) (GLint *num, GLsizei size, GLuint *driverControls); +typedef void (GL_APIENTRYP PFNGLGETDRIVERCONTROLSTRINGQCOMPROC) (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +typedef void (GL_APIENTRYP PFNGLENABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +typedef void (GL_APIENTRYP PFNGLDISABLEDRIVERCONTROLQCOMPROC) (GLuint driverControl); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glGetDriverControlsQCOM (GLint *num, GLsizei size, GLuint *driverControls); +GL_APICALL void GL_APIENTRY glGetDriverControlStringQCOM (GLuint driverControl, GLsizei bufSize, GLsizei *length, GLchar *driverControlString); +GL_APICALL void GL_APIENTRY glEnableDriverControlQCOM (GLuint driverControl); +GL_APICALL void GL_APIENTRY glDisableDriverControlQCOM (GLuint driverControl); +#endif +#endif /* GL_QCOM_driver_control */ + +#ifndef GL_QCOM_extended_get +#define GL_QCOM_extended_get 1 +#define GL_TEXTURE_WIDTH_QCOM 0x8BD2 +#define GL_TEXTURE_HEIGHT_QCOM 0x8BD3 +#define GL_TEXTURE_DEPTH_QCOM 0x8BD4 +#define GL_TEXTURE_INTERNAL_FORMAT_QCOM 0x8BD5 +#define GL_TEXTURE_FORMAT_QCOM 0x8BD6 +#define GL_TEXTURE_TYPE_QCOM 0x8BD7 +#define GL_TEXTURE_IMAGE_VALID_QCOM 0x8BD8 +#define GL_TEXTURE_NUM_LEVELS_QCOM 0x8BD9 +#define GL_TEXTURE_TARGET_QCOM 0x8BDA +#define GL_TEXTURE_OBJECT_VALID_QCOM 0x8BDB +#define GL_STATE_RESTORE 0x8BDC +typedef void (GL_APIENTRYP PFNGLEXTGETTEXTURESQCOMPROC) (GLuint *textures, GLint maxTextures, GLint *numTextures); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERSQCOMPROC) (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETRENDERBUFFERSQCOMPROC) (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETFRAMEBUFFERSQCOMPROC) (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXLEVELPARAMETERIVQCOMPROC) (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +typedef void (GL_APIENTRYP PFNGLEXTTEXOBJECTSTATEOVERRIDEIQCOMPROC) (GLenum target, GLenum pname, GLint param); +typedef void (GL_APIENTRYP PFNGLEXTGETTEXSUBIMAGEQCOMPROC) (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +typedef void (GL_APIENTRYP PFNGLEXTGETBUFFERPOINTERVQCOMPROC) (GLenum target, void **params); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetTexturesQCOM (GLuint *textures, GLint maxTextures, GLint *numTextures); +GL_APICALL void GL_APIENTRY glExtGetBuffersQCOM (GLuint *buffers, GLint maxBuffers, GLint *numBuffers); +GL_APICALL void GL_APIENTRY glExtGetRenderbuffersQCOM (GLuint *renderbuffers, GLint maxRenderbuffers, GLint *numRenderbuffers); +GL_APICALL void GL_APIENTRY glExtGetFramebuffersQCOM (GLuint *framebuffers, GLint maxFramebuffers, GLint *numFramebuffers); +GL_APICALL void GL_APIENTRY glExtGetTexLevelParameterivQCOM (GLuint texture, GLenum face, GLint level, GLenum pname, GLint *params); +GL_APICALL void GL_APIENTRY glExtTexObjectStateOverrideiQCOM (GLenum target, GLenum pname, GLint param); +GL_APICALL void GL_APIENTRY glExtGetTexSubImageQCOM (GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, void *texels); +GL_APICALL void GL_APIENTRY glExtGetBufferPointervQCOM (GLenum target, void **params); +#endif +#endif /* GL_QCOM_extended_get */ + +#ifndef GL_QCOM_extended_get2 +#define GL_QCOM_extended_get2 1 +typedef void (GL_APIENTRYP PFNGLEXTGETSHADERSQCOMPROC) (GLuint *shaders, GLint maxShaders, GLint *numShaders); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMSQCOMPROC) (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +typedef GLboolean (GL_APIENTRYP PFNGLEXTISPROGRAMBINARYQCOMPROC) (GLuint program); +typedef void (GL_APIENTRYP PFNGLEXTGETPROGRAMBINARYSOURCEQCOMPROC) (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtGetShadersQCOM (GLuint *shaders, GLint maxShaders, GLint *numShaders); +GL_APICALL void GL_APIENTRY glExtGetProgramsQCOM (GLuint *programs, GLint maxPrograms, GLint *numPrograms); +GL_APICALL GLboolean GL_APIENTRY glExtIsProgramBinaryQCOM (GLuint program); +GL_APICALL void GL_APIENTRY glExtGetProgramBinarySourceQCOM (GLuint program, GLenum shadertype, GLchar *source, GLint *length); +#endif +#endif /* GL_QCOM_extended_get2 */ + +#ifndef GL_QCOM_frame_extrapolation +#define GL_QCOM_frame_extrapolation 1 +typedef void (GL_APIENTRYP PFNGLEXTRAPOLATETEX2DQCOMPROC) (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glExtrapolateTex2DQCOM (GLuint src1, GLuint src2, GLuint output, GLfloat scaleFactor); +#endif +#endif /* GL_QCOM_frame_extrapolation */ + +#ifndef GL_QCOM_framebuffer_foveated +#define GL_QCOM_framebuffer_foveated 1 +#define GL_FOVEATION_ENABLE_BIT_QCOM 0x00000001 +#define GL_FOVEATION_SCALED_BIN_METHOD_BIT_QCOM 0x00000002 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONCONFIGQCOMPROC) (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFOVEATIONPARAMETERSQCOMPROC) (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFoveationConfigQCOM (GLuint framebuffer, GLuint numLayers, GLuint focalPointsPerLayer, GLuint requestedFeatures, GLuint *providedFeatures); +GL_APICALL void GL_APIENTRY glFramebufferFoveationParametersQCOM (GLuint framebuffer, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_framebuffer_foveated */ + +#ifndef GL_QCOM_motion_estimation +#define GL_QCOM_motion_estimation 1 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_X_QCOM 0x8C90 +#define GL_MOTION_ESTIMATION_SEARCH_BLOCK_Y_QCOM 0x8C91 +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONQCOMPROC) (GLuint ref, GLuint target, GLuint output); +typedef void (GL_APIENTRYP PFNGLTEXESTIMATEMOTIONREGIONSQCOMPROC) (GLuint ref, GLuint target, GLuint output, GLuint mask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTexEstimateMotionQCOM (GLuint ref, GLuint target, GLuint output); +GL_APICALL void GL_APIENTRY glTexEstimateMotionRegionsQCOM (GLuint ref, GLuint target, GLuint output, GLuint mask); +#endif +#endif /* GL_QCOM_motion_estimation */ + +#ifndef GL_QCOM_perfmon_global_mode +#define GL_QCOM_perfmon_global_mode 1 +#define GL_PERFMON_GLOBAL_MODE_QCOM 0x8FA0 +#endif /* GL_QCOM_perfmon_global_mode */ + +#ifndef GL_QCOM_render_shared_exponent +#define GL_QCOM_render_shared_exponent 1 +#endif /* GL_QCOM_render_shared_exponent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_noncoherent +#define GL_QCOM_shader_framebuffer_fetch_noncoherent 1 +#define GL_FRAMEBUFFER_FETCH_NONCOHERENT_QCOM 0x96A2 +typedef void (GL_APIENTRYP PFNGLFRAMEBUFFERFETCHBARRIERQCOMPROC) (void); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glFramebufferFetchBarrierQCOM (void); +#endif +#endif /* GL_QCOM_shader_framebuffer_fetch_noncoherent */ + +#ifndef GL_QCOM_shader_framebuffer_fetch_rate +#define GL_QCOM_shader_framebuffer_fetch_rate 1 +#endif /* GL_QCOM_shader_framebuffer_fetch_rate */ + +#ifndef GL_QCOM_shading_rate +#define GL_QCOM_shading_rate 1 +#define GL_SHADING_RATE_QCOM 0x96A4 +#define GL_SHADING_RATE_PRESERVE_ASPECT_RATIO_QCOM 0x96A5 +#define GL_SHADING_RATE_1X1_PIXELS_QCOM 0x96A6 +#define GL_SHADING_RATE_1X2_PIXELS_QCOM 0x96A7 +#define GL_SHADING_RATE_2X1_PIXELS_QCOM 0x96A8 +#define GL_SHADING_RATE_2X2_PIXELS_QCOM 0x96A9 +#define GL_SHADING_RATE_4X2_PIXELS_QCOM 0x96AC +#define GL_SHADING_RATE_4X4_PIXELS_QCOM 0x96AE +typedef void (GL_APIENTRYP PFNGLSHADINGRATEQCOMPROC) (GLenum rate); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glShadingRateQCOM (GLenum rate); +#endif +#endif /* GL_QCOM_shading_rate */ + +#ifndef GL_QCOM_texture_foveated +#define GL_QCOM_texture_foveated 1 +#define GL_TEXTURE_FOVEATED_FEATURE_BITS_QCOM 0x8BFB +#define GL_TEXTURE_FOVEATED_MIN_PIXEL_DENSITY_QCOM 0x8BFC +#define GL_TEXTURE_FOVEATED_FEATURE_QUERY_QCOM 0x8BFD +#define GL_TEXTURE_FOVEATED_NUM_FOCAL_POINTS_QUERY_QCOM 0x8BFE +#define GL_FRAMEBUFFER_INCOMPLETE_FOVEATION_QCOM 0x8BFF +typedef void (GL_APIENTRYP PFNGLTEXTUREFOVEATIONPARAMETERSQCOMPROC) (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glTextureFoveationParametersQCOM (GLuint texture, GLuint layer, GLuint focalPoint, GLfloat focalX, GLfloat focalY, GLfloat gainX, GLfloat gainY, GLfloat foveaArea); +#endif +#endif /* GL_QCOM_texture_foveated */ + +#ifndef GL_QCOM_texture_foveated2 +#define GL_QCOM_texture_foveated2 1 +#define GL_TEXTURE_FOVEATED_CUTOFF_DENSITY_QCOM 0x96A0 +#endif /* GL_QCOM_texture_foveated2 */ + +#ifndef GL_QCOM_texture_foveated_subsampled_layout +#define GL_QCOM_texture_foveated_subsampled_layout 1 +#define GL_FOVEATION_SUBSAMPLED_LAYOUT_METHOD_BIT_QCOM 0x00000004 +#define GL_MAX_SHADER_SUBSAMPLED_IMAGE_UNITS_QCOM 0x8FA1 +#endif /* GL_QCOM_texture_foveated_subsampled_layout */ + +#ifndef GL_QCOM_tiled_rendering +#define GL_QCOM_tiled_rendering 1 +#define GL_COLOR_BUFFER_BIT0_QCOM 0x00000001 +#define GL_COLOR_BUFFER_BIT1_QCOM 0x00000002 +#define GL_COLOR_BUFFER_BIT2_QCOM 0x00000004 +#define GL_COLOR_BUFFER_BIT3_QCOM 0x00000008 +#define GL_COLOR_BUFFER_BIT4_QCOM 0x00000010 +#define GL_COLOR_BUFFER_BIT5_QCOM 0x00000020 +#define GL_COLOR_BUFFER_BIT6_QCOM 0x00000040 +#define GL_COLOR_BUFFER_BIT7_QCOM 0x00000080 +#define GL_DEPTH_BUFFER_BIT0_QCOM 0x00000100 +#define GL_DEPTH_BUFFER_BIT1_QCOM 0x00000200 +#define GL_DEPTH_BUFFER_BIT2_QCOM 0x00000400 +#define GL_DEPTH_BUFFER_BIT3_QCOM 0x00000800 +#define GL_DEPTH_BUFFER_BIT4_QCOM 0x00001000 +#define GL_DEPTH_BUFFER_BIT5_QCOM 0x00002000 +#define GL_DEPTH_BUFFER_BIT6_QCOM 0x00004000 +#define GL_DEPTH_BUFFER_BIT7_QCOM 0x00008000 +#define GL_STENCIL_BUFFER_BIT0_QCOM 0x00010000 +#define GL_STENCIL_BUFFER_BIT1_QCOM 0x00020000 +#define GL_STENCIL_BUFFER_BIT2_QCOM 0x00040000 +#define GL_STENCIL_BUFFER_BIT3_QCOM 0x00080000 +#define GL_STENCIL_BUFFER_BIT4_QCOM 0x00100000 +#define GL_STENCIL_BUFFER_BIT5_QCOM 0x00200000 +#define GL_STENCIL_BUFFER_BIT6_QCOM 0x00400000 +#define GL_STENCIL_BUFFER_BIT7_QCOM 0x00800000 +#define GL_MULTISAMPLE_BUFFER_BIT0_QCOM 0x01000000 +#define GL_MULTISAMPLE_BUFFER_BIT1_QCOM 0x02000000 +#define GL_MULTISAMPLE_BUFFER_BIT2_QCOM 0x04000000 +#define GL_MULTISAMPLE_BUFFER_BIT3_QCOM 0x08000000 +#define GL_MULTISAMPLE_BUFFER_BIT4_QCOM 0x10000000 +#define GL_MULTISAMPLE_BUFFER_BIT5_QCOM 0x20000000 +#define GL_MULTISAMPLE_BUFFER_BIT6_QCOM 0x40000000 +#define GL_MULTISAMPLE_BUFFER_BIT7_QCOM 0x80000000 +typedef void (GL_APIENTRYP PFNGLSTARTTILINGQCOMPROC) (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +typedef void (GL_APIENTRYP PFNGLENDTILINGQCOMPROC) (GLbitfield preserveMask); +#ifdef GL_GLEXT_PROTOTYPES +GL_APICALL void GL_APIENTRY glStartTilingQCOM (GLuint x, GLuint y, GLuint width, GLuint height, GLbitfield preserveMask); +GL_APICALL void GL_APIENTRY glEndTilingQCOM (GLbitfield preserveMask); +#endif +#endif /* GL_QCOM_tiled_rendering */ + +#ifndef GL_QCOM_writeonly_rendering +#define GL_QCOM_writeonly_rendering 1 +#define GL_WRITEONLY_RENDERING_QCOM 0x8823 +#endif /* GL_QCOM_writeonly_rendering */ + +#ifndef GL_VIV_shader_binary +#define GL_VIV_shader_binary 1 +#define GL_SHADER_BINARY_VIV 0x8FC4 +#endif /* GL_VIV_shader_binary */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2platform.h new file mode 100644 index 0000000..426796e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_gl2platform.h @@ -0,0 +1,27 @@ +#ifndef __gl2platform_h_ +#define __gl2platform_h_ + +/* +** Copyright 2017-2020 The Khronos Group Inc. +** SPDX-License-Identifier: Apache-2.0 +*/ + +/* Platform-specific types and definitions for OpenGL ES 2.X gl2.h + * + * Adopters may modify khrplatform.h and this file to suit their platform. + * Please contribute modifications back to Khronos as pull requests on the + * public github repository: + * https://github.com/KhronosGroup/OpenGL-Registry + */ + +/*#include */ + +#ifndef GL_APICALL +#define GL_APICALL KHRONOS_APICALL +#endif + +#ifndef GL_APIENTRY +#define GL_APIENTRY KHRONOS_APIENTRY +#endif + +#endif /* __gl2platform_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_khrplatform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_khrplatform.h new file mode 100644 index 0000000..0164644 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_opengles2_khrplatform.h @@ -0,0 +1,311 @@ +#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/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_pixels.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_pixels.h new file mode 100644 index 0000000..35b4523 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_pixels.h @@ -0,0 +1,644 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_pixels.h + * + * Header for the enumerated pixel format definitions. + */ + +#ifndef SDL_pixels_h_ +#define SDL_pixels_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Transparency definitions + * + * These define alpha as the opacity of a surface. + */ +/* @{ */ +#define SDL_ALPHA_OPAQUE 255 +#define SDL_ALPHA_TRANSPARENT 0 +/* @} */ + +/** Pixel type. */ +typedef enum +{ + SDL_PIXELTYPE_UNKNOWN, + SDL_PIXELTYPE_INDEX1, + SDL_PIXELTYPE_INDEX4, + SDL_PIXELTYPE_INDEX8, + SDL_PIXELTYPE_PACKED8, + SDL_PIXELTYPE_PACKED16, + SDL_PIXELTYPE_PACKED32, + SDL_PIXELTYPE_ARRAYU8, + SDL_PIXELTYPE_ARRAYU16, + SDL_PIXELTYPE_ARRAYU32, + SDL_PIXELTYPE_ARRAYF16, + SDL_PIXELTYPE_ARRAYF32 +} SDL_PixelType; + +/** Bitmap pixel order, high bit -> low bit. */ +typedef enum +{ + SDL_BITMAPORDER_NONE, + SDL_BITMAPORDER_4321, + SDL_BITMAPORDER_1234 +} SDL_BitmapOrder; + +/** Packed component order, high bit -> low bit. */ +typedef enum +{ + SDL_PACKEDORDER_NONE, + SDL_PACKEDORDER_XRGB, + SDL_PACKEDORDER_RGBX, + SDL_PACKEDORDER_ARGB, + SDL_PACKEDORDER_RGBA, + SDL_PACKEDORDER_XBGR, + SDL_PACKEDORDER_BGRX, + SDL_PACKEDORDER_ABGR, + SDL_PACKEDORDER_BGRA +} SDL_PackedOrder; + +/** Array component order, low byte -> high byte. */ +/* !!! FIXME: in 2.1, make these not overlap differently with + !!! FIXME: SDL_PACKEDORDER_*, so we can simplify SDL_ISPIXELFORMAT_ALPHA */ +typedef enum +{ + SDL_ARRAYORDER_NONE, + SDL_ARRAYORDER_RGB, + SDL_ARRAYORDER_RGBA, + SDL_ARRAYORDER_ARGB, + SDL_ARRAYORDER_BGR, + SDL_ARRAYORDER_BGRA, + SDL_ARRAYORDER_ABGR +} SDL_ArrayOrder; + +/** Packed component layout. */ +typedef enum +{ + SDL_PACKEDLAYOUT_NONE, + SDL_PACKEDLAYOUT_332, + SDL_PACKEDLAYOUT_4444, + SDL_PACKEDLAYOUT_1555, + SDL_PACKEDLAYOUT_5551, + SDL_PACKEDLAYOUT_565, + SDL_PACKEDLAYOUT_8888, + SDL_PACKEDLAYOUT_2101010, + SDL_PACKEDLAYOUT_1010102 +} SDL_PackedLayout; + +#define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) + +#define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ + ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ + ((bits) << 8) | ((bytes) << 0)) + +#define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) +#define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) +#define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) +#define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) +#define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) +#define SDL_BYTESPERPIXEL(X) \ + (SDL_ISPIXELFORMAT_FOURCC(X) ? \ + ((((X) == SDL_PIXELFORMAT_YUY2) || \ + ((X) == SDL_PIXELFORMAT_UYVY) || \ + ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) + +#define SDL_ISPIXELFORMAT_INDEXED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) + +#define SDL_ISPIXELFORMAT_PACKED(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32))) + +#define SDL_ISPIXELFORMAT_ARRAY(format) \ + (!SDL_ISPIXELFORMAT_FOURCC(format) && \ + ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \ + (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32))) + +#define SDL_ISPIXELFORMAT_ALPHA(format) \ + ((SDL_ISPIXELFORMAT_PACKED(format) && \ + ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \ + (SDL_ISPIXELFORMAT_ARRAY(format) && \ + ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \ + (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA)))) + +/* The flag is set to 1 because 0x1? is not in the printable ASCII range */ +#define SDL_ISPIXELFORMAT_FOURCC(format) \ + ((format) && (SDL_PIXELFLAG(format) != 1)) + +/* Note: If you modify this list, update SDL_GetPixelFormatName() */ +typedef enum +{ + SDL_PIXELFORMAT_UNKNOWN, + SDL_PIXELFORMAT_INDEX1LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX1MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, + 1, 0), + SDL_PIXELFORMAT_INDEX4LSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX4MSB = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, + 4, 0), + SDL_PIXELFORMAT_INDEX8 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), + SDL_PIXELFORMAT_RGB332 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_332, 8, 1), + SDL_PIXELFORMAT_XRGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444, + SDL_PIXELFORMAT_XBGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_4444, 12, 2), + SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444, + SDL_PIXELFORMAT_XRGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555, + SDL_PIXELFORMAT_XBGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_1555, 15, 2), + SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555, + SDL_PIXELFORMAT_ARGB4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_RGBA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ABGR4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_BGRA4444 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_4444, 16, 2), + SDL_PIXELFORMAT_ARGB1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_RGBA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_ABGR1555 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_1555, 16, 2), + SDL_PIXELFORMAT_BGRA5551 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_5551, 16, 2), + SDL_PIXELFORMAT_RGB565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_BGR565 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_565, 16, 2), + SDL_PIXELFORMAT_RGB24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, + 24, 3), + SDL_PIXELFORMAT_BGR24 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, + 24, 3), + SDL_PIXELFORMAT_XRGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888, + SDL_PIXELFORMAT_RGBX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_XBGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888, + SDL_PIXELFORMAT_BGRX8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, + SDL_PACKEDLAYOUT_8888, 24, 4), + SDL_PIXELFORMAT_ARGB8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_RGBA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ABGR8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_BGRA8888 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, + SDL_PACKEDLAYOUT_8888, 32, 4), + SDL_PIXELFORMAT_ARGB2101010 = + SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, + SDL_PACKEDLAYOUT_2101010, 32, 4), + + /* Aliases for RGBA byte arrays of color data, for the current platform */ +#if SDL_BYTEORDER == SDL_BIG_ENDIAN + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888, +#else + SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888, + SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888, + SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888, + SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888, +#endif + + SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), + SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ + SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), + SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), + SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), + SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ + SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U'), + SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), + SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') +} SDL_PixelFormatEnum; + +/** + * The bits of this structure can be directly reinterpreted as an integer-packed + * color which uses the SDL_PIXELFORMAT_RGBA32 format (SDL_PIXELFORMAT_ABGR8888 + * on little-endian systems and SDL_PIXELFORMAT_RGBA8888 on big-endian systems). + */ +typedef struct SDL_Color +{ + Uint8 r; + Uint8 g; + Uint8 b; + Uint8 a; +} SDL_Color; +#define SDL_Colour SDL_Color + +typedef struct SDL_Palette +{ + int ncolors; + SDL_Color *colors; + Uint32 version; + int refcount; +} SDL_Palette; + +/** + * \note Everything in the pixel format structure is read-only. + */ +typedef struct SDL_PixelFormat +{ + Uint32 format; + SDL_Palette *palette; + Uint8 BitsPerPixel; + Uint8 BytesPerPixel; + Uint8 padding[2]; + Uint32 Rmask; + Uint32 Gmask; + Uint32 Bmask; + Uint32 Amask; + Uint8 Rloss; + Uint8 Gloss; + Uint8 Bloss; + Uint8 Aloss; + Uint8 Rshift; + Uint8 Gshift; + Uint8 Bshift; + Uint8 Ashift; + int refcount; + struct SDL_PixelFormat *next; +} SDL_PixelFormat; + +/** + * Get the human readable name of a pixel format. + * + * \param format the pixel format to query + * \returns the human readable name of the specified pixel format or + * `SDL_PIXELFORMAT_UNKNOWN` if the format isn't recognized. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); + +/** + * Convert one of the enumerated pixel formats to a bpp value and RGBA masks. + * + * \param format one of the SDL_PixelFormatEnum values + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask a pointer filled in with the red mask for the format + * \param Gmask a pointer filled in with the green mask for the format + * \param Bmask a pointer filled in with the blue mask for the format + * \param Amask a pointer filled in with the alpha mask for the format + * \returns SDL_TRUE on success or SDL_FALSE if the conversion wasn't + * possible; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MasksToPixelFormatEnum + */ +extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, + int *bpp, + Uint32 * Rmask, + Uint32 * Gmask, + Uint32 * Bmask, + Uint32 * Amask); + +/** + * Convert a bpp value and RGBA masks to an enumerated pixel format. + * + * This will return `SDL_PIXELFORMAT_UNKNOWN` if the conversion wasn't + * possible. + * + * \param bpp a bits per pixel value; usually 15, 16, or 32 + * \param Rmask the red mask for the format + * \param Gmask the green mask for the format + * \param Bmask the blue mask for the format + * \param Amask the alpha mask for the format + * \returns one of the SDL_PixelFormatEnum values + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_PixelFormatEnumToMasks + */ +extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/** + * Create an SDL_PixelFormat structure corresponding to a pixel format. + * + * Returned structure may come from a shared global cache (i.e. not newly + * allocated), and hence should not be modified, especially the palette. Weird + * errors such as `Blit combination not supported` may occur. + * + * \param pixel_format one of the SDL_PixelFormatEnum values + * \returns the new SDL_PixelFormat structure or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeFormat + */ +extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); + +/** + * Free an SDL_PixelFormat structure allocated by SDL_AllocFormat(). + * + * \param format the SDL_PixelFormat structure to free + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + */ +extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); + +/** + * Create a palette structure with the specified number of color entries. + * + * The palette entries are initialized to white. + * + * \param ncolors represents the number of color entries in the color palette + * \returns a new SDL_Palette structure on success or NULL on failure (e.g. if + * there wasn't enough memory); call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreePalette + */ +extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); + +/** + * Set the palette for a pixel format structure. + * + * \param format the SDL_PixelFormat structure that will use the palette + * \param palette the SDL_Palette structure that will be used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_FreePalette + */ +extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, + SDL_Palette *palette); + +/** + * Set a range of colors in a palette. + * + * \param palette the SDL_Palette structure to modify + * \param colors an array of SDL_Color structures to copy into the palette + * \param firstcolor the index of the first palette entry to modify + * \param ncolors the number of entries to modify + * \returns 0 on success or a negative error code if not all of the colors + * could be set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, + const SDL_Color * colors, + int firstcolor, int ncolors); + +/** + * Free a palette created with SDL_AllocPalette(). + * + * \param palette the SDL_Palette structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocPalette + */ +extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); + +/** + * Map an RGB triple to an opaque pixel value for a given pixel format. + * + * This function maps the RGB color value to the specified pixel format and + * returns the pixel value best approximating the given RGB color value for + * the given pixel format. + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the specified pixel format has an alpha component it will be returned as + * all 1 bits (fully opaque). + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the pixel format + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGBA + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b); + +/** + * Map an RGBA quadruple to a pixel value for a given pixel format. + * + * This function maps the RGBA color value to the specified pixel format and + * returns the pixel value best approximating the given RGBA color value for + * the given pixel format. + * + * If the specified pixel format has no alpha component the alpha value will + * be ignored (as it will be in formats with a palette). + * + * If the format has a palette (8-bit) the index of the closest matching color + * in the palette will be returned. + * + * If the pixel format bpp (color depth) is less than 32-bpp then the unused + * upper bits of the return value can safely be ignored (e.g., with a 16-bpp + * format the return value can be assigned to a Uint16, and similarly a Uint8 + * for an 8-bpp format). + * + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r the red component of the pixel in the range 0-255 + * \param g the green component of the pixel in the range 0-255 + * \param b the blue component of the pixel in the range 0-255 + * \param a the alpha component of the pixel in the range 0-255 + * \returns a pixel value + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + */ +extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get RGB values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGBA + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b); + +/** + * Get RGBA values from a pixel in the specified format. + * + * This function uses the entire 8-bit [0..255] range when converting color + * components from pixel formats with less than 8-bits per RGB component + * (e.g., a completely white pixel in 16-bit RGB565 format would return [0xff, + * 0xff, 0xff] not [0xf8, 0xfc, 0xf8]). + * + * If the surface has no alpha component, the alpha will be returned as 0xff + * (100% opaque). + * + * \param pixel a pixel value + * \param format an SDL_PixelFormat structure describing the format of the + * pixel + * \param r a pointer filled in with the red component + * \param g a pointer filled in with the green component + * \param b a pointer filled in with the blue component + * \param a a pointer filled in with the alpha component + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRGB + * \sa SDL_MapRGB + * \sa SDL_MapRGBA + */ +extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, + const SDL_PixelFormat * format, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Calculate a 256 entry gamma ramp for a gamma value. + * + * \param gamma a gamma value where 0.0 is black and 1.0 is identity + * \param ramp an array of 256 values filled in with the gamma ramp + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_pixels_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_platform.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_platform.h new file mode 100644 index 0000000..77f35ec --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_platform.h @@ -0,0 +1,261 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_platform.h + * + * Try to get a standard set of platform defines. + */ + +#ifndef SDL_platform_h_ +#define SDL_platform_h_ + +#if defined(_AIX) +#undef __AIX__ +#define __AIX__ 1 +#endif +#if defined(__HAIKU__) +#undef __HAIKU__ +#define __HAIKU__ 1 +#endif +#if defined(bsdi) || defined(__bsdi) || defined(__bsdi__) +#undef __BSDI__ +#define __BSDI__ 1 +#endif +#if defined(_arch_dreamcast) +#undef __DREAMCAST__ +#define __DREAMCAST__ 1 +#endif +#if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__) +#undef __FREEBSD__ +#define __FREEBSD__ 1 +#endif +#if defined(hpux) || defined(__hpux) || defined(__hpux__) +#undef __HPUX__ +#define __HPUX__ 1 +#endif +#if defined(sgi) || defined(__sgi) || defined(__sgi__) || defined(_SGI_SOURCE) +#undef __IRIX__ +#define __IRIX__ 1 +#endif +#if (defined(linux) || defined(__linux) || defined(__linux__)) +#undef __LINUX__ +#define __LINUX__ 1 +#endif +#if defined(ANDROID) || defined(__ANDROID__) +#undef __ANDROID__ +#undef __LINUX__ /* do we need to do this? */ +#define __ANDROID__ 1 +#endif +#if defined(__NGAGE__) +#undef __NGAGE__ +#define __NGAGE__ 1 +#endif + +#if defined(__APPLE__) +/* lets us know what version of Mac OS X we're compiling on */ +#include +#include + +/* Fix building with older SDKs that don't define these + See this for more information: + https://stackoverflow.com/questions/12132933/preprocessor-macro-for-os-x-targets +*/ +#ifndef TARGET_OS_MACCATALYST +#define TARGET_OS_MACCATALYST 0 +#endif +#ifndef TARGET_OS_IOS +#define TARGET_OS_IOS 0 +#endif +#ifndef TARGET_OS_IPHONE +#define TARGET_OS_IPHONE 0 +#endif +#ifndef TARGET_OS_TV +#define TARGET_OS_TV 0 +#endif +#ifndef TARGET_OS_SIMULATOR +#define TARGET_OS_SIMULATOR 0 +#endif + +#if TARGET_OS_TV +#undef __TVOS__ +#define __TVOS__ 1 +#endif +#if TARGET_OS_IPHONE +/* if compiling for iOS */ +#undef __IPHONEOS__ +#define __IPHONEOS__ 1 +#undef __MACOSX__ +#else +/* if not compiling for iOS */ +#undef __MACOSX__ +#define __MACOSX__ 1 +#if MAC_OS_X_VERSION_MIN_REQUIRED < 1070 +# error SDL for Mac OS X only supports deploying on 10.7 and above. +#endif /* MAC_OS_X_VERSION_MIN_REQUIRED < 1070 */ +#endif /* TARGET_OS_IPHONE */ +#endif /* defined(__APPLE__) */ + +#if defined(__NetBSD__) +#undef __NETBSD__ +#define __NETBSD__ 1 +#endif +#if defined(__OpenBSD__) +#undef __OPENBSD__ +#define __OPENBSD__ 1 +#endif +#if defined(__OS2__) || defined(__EMX__) +#undef __OS2__ +#define __OS2__ 1 +#endif +#if defined(osf) || defined(__osf) || defined(__osf__) || defined(_OSF_SOURCE) +#undef __OSF__ +#define __OSF__ 1 +#endif +#if defined(__QNXNTO__) +#undef __QNXNTO__ +#define __QNXNTO__ 1 +#endif +#if defined(riscos) || defined(__riscos) || defined(__riscos__) +#undef __RISCOS__ +#define __RISCOS__ 1 +#endif +#if defined(__sun) && defined(__SVR4) +#undef __SOLARIS__ +#define __SOLARIS__ 1 +#endif + +#if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) +/* Try to find out if we're compiling for WinRT, GDK or non-WinRT/GDK */ +#if defined(_MSC_VER) && defined(__has_include) +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +/* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ +#elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + +#if HAVE_WINAPIFAMILY_H +#include +#define WINAPI_FAMILY_WINRT (!WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)) +#else +#define WINAPI_FAMILY_WINRT 0 +#endif /* HAVE_WINAPIFAMILY_H */ + +#if WINAPI_FAMILY_WINRT +#undef __WINRT__ +#define __WINRT__ 1 +#elif defined(_GAMING_DESKTOP) /* GDK project configuration always defines _GAMING_XXX */ +#undef __WINGDK__ +#define __WINGDK__ 1 +#elif defined(_GAMING_XBOX_XBOXONE) +#undef __XBOXONE__ +#define __XBOXONE__ 1 +#elif defined(_GAMING_XBOX_SCARLETT) +#undef __XBOXSERIES__ +#define __XBOXSERIES__ 1 +#else +#undef __WINDOWS__ +#define __WINDOWS__ 1 +#endif +#endif /* defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) */ + +#if defined(__WINDOWS__) +#undef __WIN32__ +#define __WIN32__ 1 +#endif +/* This is to support generic "any GDK" separate from a platform-specific GDK */ +#if defined(__WINGDK__) || defined(__XBOXONE__) || defined(__XBOXSERIES__) +#undef __GDK__ +#define __GDK__ 1 +#endif +#if defined(__PSP__) +#undef __PSP__ +#define __PSP__ 1 +#endif +#if defined(PS2) +#define __PS2__ 1 +#endif + +/* The NACL compiler defines __native_client__ and __pnacl__ + * Ref: http://www.chromium.org/nativeclient/pnacl/stability-of-the-pnacl-bitcode-abi + */ +#if defined(__native_client__) +#undef __LINUX__ +#undef __NACL__ +#define __NACL__ 1 +#endif +#if defined(__pnacl__) +#undef __LINUX__ +#undef __PNACL__ +#define __PNACL__ 1 +/* PNACL with newlib supports static linking only */ +#define __SDL_NOGETPROCADDR__ +#endif + +#if defined(__vita__) +#define __VITA__ 1 +#endif + +#if defined(__3DS__) +#undef __3DS__ +#define __3DS__ 1 +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the name of the platform. + * + * Here are the names returned for some (but not all) supported platforms: + * + * - "Windows" + * - "Mac OS X" + * - "Linux" + * - "iOS" + * - "Android" + * + * \returns the name of the platform. If the correct platform name is not + * available, returns a string beginning with the text "Unknown". + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC const char * SDLCALL SDL_GetPlatform (void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_platform_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_power.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_power.h new file mode 100644 index 0000000..0d5bb9c --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_power.h @@ -0,0 +1,87 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_power_h_ +#define SDL_power_h_ + +/** + * \file SDL_power.h + * + * Header for the SDL power management routines. + */ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The basic state for the system's power supply. + */ +typedef enum +{ + SDL_POWERSTATE_UNKNOWN, /**< cannot determine power status */ + SDL_POWERSTATE_ON_BATTERY, /**< Not plugged in, running on the battery */ + SDL_POWERSTATE_NO_BATTERY, /**< Plugged in, no battery available */ + SDL_POWERSTATE_CHARGING, /**< Plugged in, charging battery */ + SDL_POWERSTATE_CHARGED /**< Plugged in, battery charged */ +} SDL_PowerState; + +/** + * Get the current power supply details. + * + * You should never take a battery status as absolute truth. Batteries + * (especially failing batteries) are delicate hardware, and the values + * reported here are best estimates based on what that hardware reports. It's + * not uncommon for older batteries to lose stored power much faster than it + * reports, or completely drain when reporting it has 20 percent left, etc. + * + * Battery status can change at any time; if you are concerned with power + * state, you should call this function frequently, and perhaps ignore changes + * until they seem to be stable for a few seconds. + * + * It's possible a platform can only report battery percentage or time left + * but not both. + * + * \param seconds seconds of battery life left, you can pass a NULL here if + * you don't care, will return -1 if we can't determine a + * value, or we're not running on a battery + * \param percent percentage of battery life left, between 0 and 100, you can + * pass a NULL here if you don't care, will return -1 if we + * can't determine a value, or we're not running on a battery + * \returns an SDL_PowerState enum representing the current battery state. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_PowerState SDLCALL SDL_GetPowerInfo(int *seconds, int *percent); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_power_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_quit.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_quit.h new file mode 100644 index 0000000..253fc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_quit.h @@ -0,0 +1,58 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_quit.h + * + * Include file for SDL quit event handling. + */ + +#ifndef SDL_quit_h_ +#define SDL_quit_h_ + +#include +#include + +/** + * \file SDL_quit.h + * + * An ::SDL_QUIT event is generated when the user tries to close the application + * window. If it is ignored or filtered out, the window will remain open. + * If it is not ignored or filtered, it is queued normally and the window + * is allowed to close. When the window is closed, screen updates will + * complete, but have no effect. + * + * SDL_Init() installs signal handlers for SIGINT (keyboard interrupt) + * and SIGTERM (system termination request), if handlers do not already + * exist, that generate ::SDL_QUIT events as well. There is no way + * to determine the cause of an ::SDL_QUIT event, but setting a signal + * handler in your application will override the default generation of + * quit events for that signal. + * + * \sa SDL_Quit() + */ + +/* There are no functions directly affecting the quit event */ + +#define SDL_QuitRequested() \ + (SDL_PumpEvents(), (SDL_PeepEvents(NULL,0,SDL_PEEKEVENT,SDL_QUIT,SDL_QUIT) > 0)) + +#endif /* SDL_quit_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rect.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rect.h new file mode 100644 index 0000000..fcce5ae --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rect.h @@ -0,0 +1,376 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rect.h + * + * Header file for SDL_rect definition and management functions. + */ + +#ifndef SDL_rect_h_ +#define SDL_rect_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * The structure that defines a point (integer) + * + * \sa SDL_EnclosePoints + * \sa SDL_PointInRect + */ +typedef struct SDL_Point +{ + int x; + int y; +} SDL_Point; + +/** + * The structure that defines a point (floating point) + * + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FPoint +{ + float x; + float y; +} SDL_FPoint; + + +/** + * A rectangle, with the origin at the upper left (integer). + * + * \sa SDL_RectEmpty + * \sa SDL_RectEquals + * \sa SDL_HasIntersection + * \sa SDL_IntersectRect + * \sa SDL_IntersectRectAndLine + * \sa SDL_UnionRect + * \sa SDL_EnclosePoints + */ +typedef struct SDL_Rect +{ + int x, y; + int w, h; +} SDL_Rect; + + +/** + * A rectangle, with the origin at the upper left (floating point). + * + * \sa SDL_FRectEmpty + * \sa SDL_FRectEquals + * \sa SDL_FRectEqualsEpsilon + * \sa SDL_HasIntersectionF + * \sa SDL_IntersectFRect + * \sa SDL_IntersectFRectAndLine + * \sa SDL_UnionFRect + * \sa SDL_EncloseFPoints + * \sa SDL_PointInFRect + */ +typedef struct SDL_FRect +{ + float x; + float y; + float w; + float h; +} SDL_FRect; + + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInRect(const SDL_Point *p, const SDL_Rect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEmpty(const SDL_Rect *r) +{ + return ((!r) || (r->w <= 0) || (r->h <= 0)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal. + */ +SDL_FORCE_INLINE SDL_bool SDL_RectEquals(const SDL_Rect *a, const SDL_Rect *b) +{ + return (a && b && (a->x == b->x) && (a->y == b->y) && + (a->w == b->w) && (a->h == b->h)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Determine whether two rectangles intersect. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersection(const SDL_Rect * A, + const SDL_Rect * B); + +/** + * Calculate the intersection of two rectangles. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HasIntersection + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate the union of two rectangles. + * + * \param A an SDL_Rect structure representing the first rectangle + * \param B an SDL_Rect structure representing the second rectangle + * \param result an SDL_Rect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_UnionRect(const SDL_Rect * A, + const SDL_Rect * B, + SDL_Rect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_Point structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_Rect used for clipping or NULL to enclose all points + * \param result an SDL_Rect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EnclosePoints(const SDL_Point * points, + int count, + const SDL_Rect * clip, + SDL_Rect * result); + +/** + * Calculate the intersection of a rectangle and line segment. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_Rect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectRectAndLine(const SDL_Rect * + rect, int *X1, + int *Y1, int *X2, + int *Y2); + + +/* SDL_FRect versions... */ + +/** + * Returns true if point resides inside a rectangle. + */ +SDL_FORCE_INLINE SDL_bool SDL_PointInFRect(const SDL_FPoint *p, const SDL_FRect *r) +{ + return ( (p->x >= r->x) && (p->x < (r->x + r->w)) && + (p->y >= r->y) && (p->y < (r->y + r->h)) ) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the rectangle has no area. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEmpty(const SDL_FRect *r) +{ + return ((!r) || (r->w <= 0.0f) || (r->h <= 0.0f)) ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, within some given epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEqualsEpsilon(const SDL_FRect *a, const SDL_FRect *b, const float epsilon) +{ + return (a && b && ((a == b) || + ((SDL_fabsf(a->x - b->x) <= epsilon) && + (SDL_fabsf(a->y - b->y) <= epsilon) && + (SDL_fabsf(a->w - b->w) <= epsilon) && + (SDL_fabsf(a->h - b->h) <= epsilon)))) + ? SDL_TRUE : SDL_FALSE; +} + +/** + * Returns true if the two rectangles are equal, using a default epsilon. + * + * \since This function is available since SDL 2.0.22. + */ +SDL_FORCE_INLINE SDL_bool SDL_FRectEquals(const SDL_FRect *a, const SDL_FRect *b) +{ + return SDL_FRectEqualsEpsilon(a, b, SDL_FLT_EPSILON); +} + +/** + * Determine whether two rectangles intersect with float precision. + * + * If either pointer is NULL the function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_IntersectRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasIntersectionF(const SDL_FRect * A, + const SDL_FRect * B); + +/** + * Calculate the intersection of two rectangles with float precision. + * + * If `result` is NULL then this function will return SDL_FALSE. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the intersection of + * rectangles `A` and `B` + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + * + * \sa SDL_HasIntersectionF + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate the union of two rectangles with float precision. + * + * \param A an SDL_FRect structure representing the first rectangle + * \param B an SDL_FRect structure representing the second rectangle + * \param result an SDL_FRect structure filled in with the union of rectangles + * `A` and `B` + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC void SDLCALL SDL_UnionFRect(const SDL_FRect * A, + const SDL_FRect * B, + SDL_FRect * result); + +/** + * Calculate a minimal rectangle enclosing a set of points with float + * precision. + * + * If `clip` is not NULL then only points inside of the clipping rectangle are + * considered. + * + * \param points an array of SDL_FPoint structures representing points to be + * enclosed + * \param count the number of structures in the `points` array + * \param clip an SDL_FRect used for clipping or NULL to enclose all points + * \param result an SDL_FRect structure filled in with the minimal enclosing + * rectangle + * \returns SDL_TRUE if any points were enclosed or SDL_FALSE if all the + * points were outside of the clipping rectangle. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_EncloseFPoints(const SDL_FPoint * points, + int count, + const SDL_FRect * clip, + SDL_FRect * result); + +/** + * Calculate the intersection of a rectangle and line segment with float + * precision. + * + * This function is used to clip a line segment to a rectangle. A line segment + * contained entirely within the rectangle or that does not intersect will + * remain unchanged. A line segment that crosses the rectangle at either or + * both ends will be clipped to the boundary of the rectangle and the new + * coordinates saved in `X1`, `Y1`, `X2`, and/or `Y2` as necessary. + * + * \param rect an SDL_FRect structure representing the rectangle to intersect + * \param X1 a pointer to the starting X-coordinate of the line + * \param Y1 a pointer to the starting Y-coordinate of the line + * \param X2 a pointer to the ending X-coordinate of the line + * \param Y2 a pointer to the ending Y-coordinate of the line + * \returns SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IntersectFRectAndLine(const SDL_FRect * + rect, float *X1, + float *Y1, float *X2, + float *Y2); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rect_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_render.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_render.h new file mode 100644 index 0000000..b2b073b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_render.h @@ -0,0 +1,1924 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_render.h + * + * Header file for SDL 2D rendering functions. + * + * This API supports the following features: + * * single pixel points + * * single pixel lines + * * filled rectangles + * * texture images + * + * The primitives may be drawn in opaque, blended, or additive modes. + * + * The texture images may be drawn in opaque, blended, or additive modes. + * They can have an additional color tint or alpha modulation applied to + * them, and may also be stretched with linear interpolation. + * + * This API is designed to accelerate simple 2D operations. You may + * want more functionality such as polygons and particle effects and + * in that case you should use SDL's OpenGL/Direct3D support or one + * of the many good 3D engines. + * + * These functions must be called from the main thread. + * See this bug for details: http://bugzilla.libsdl.org/show_bug.cgi?id=1995 + */ + +#ifndef SDL_render_h_ +#define SDL_render_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Flags used when creating a rendering context + */ +typedef enum +{ + SDL_RENDERER_SOFTWARE = 0x00000001, /**< The renderer is a software fallback */ + SDL_RENDERER_ACCELERATED = 0x00000002, /**< The renderer uses hardware + acceleration */ + SDL_RENDERER_PRESENTVSYNC = 0x00000004, /**< Present is synchronized + with the refresh rate */ + SDL_RENDERER_TARGETTEXTURE = 0x00000008 /**< The renderer supports + rendering to texture */ +} SDL_RendererFlags; + +/** + * Information on the capabilities of a render driver or context. + */ +typedef struct SDL_RendererInfo +{ + const char *name; /**< The name of the renderer */ + Uint32 flags; /**< Supported ::SDL_RendererFlags */ + Uint32 num_texture_formats; /**< The number of available texture formats */ + Uint32 texture_formats[16]; /**< The available texture formats */ + int max_texture_width; /**< The maximum texture width */ + int max_texture_height; /**< The maximum texture height */ +} SDL_RendererInfo; + +/** + * Vertex structure + */ +typedef struct SDL_Vertex +{ + SDL_FPoint position; /**< Vertex position, in SDL_Renderer coordinates */ + SDL_Color color; /**< Vertex color */ + SDL_FPoint tex_coord; /**< Normalized texture coordinates, if needed */ +} SDL_Vertex; + +/** + * The scaling mode for a texture. + */ +typedef enum +{ + SDL_ScaleModeNearest, /**< nearest pixel sampling */ + SDL_ScaleModeLinear, /**< linear filtering */ + SDL_ScaleModeBest /**< anisotropic filtering */ +} SDL_ScaleMode; + +/** + * The access pattern allowed for a texture. + */ +typedef enum +{ + SDL_TEXTUREACCESS_STATIC, /**< Changes rarely, not lockable */ + SDL_TEXTUREACCESS_STREAMING, /**< Changes frequently, lockable */ + SDL_TEXTUREACCESS_TARGET /**< Texture can be used as a render target */ +} SDL_TextureAccess; + +/** + * The texture channel modulation used in SDL_RenderCopy(). + */ +typedef enum +{ + SDL_TEXTUREMODULATE_NONE = 0x00000000, /**< No modulation */ + SDL_TEXTUREMODULATE_COLOR = 0x00000001, /**< srcC = srcC * color */ + SDL_TEXTUREMODULATE_ALPHA = 0x00000002 /**< srcA = srcA * alpha */ +} SDL_TextureModulate; + +/** + * Flip constants for SDL_RenderCopyEx + */ +typedef enum +{ + SDL_FLIP_NONE = 0x00000000, /**< Do not flip */ + SDL_FLIP_HORIZONTAL = 0x00000001, /**< flip horizontally */ + SDL_FLIP_VERTICAL = 0x00000002 /**< flip vertically */ +} SDL_RendererFlip; + +/** + * A structure representing rendering state + */ +struct SDL_Renderer; +typedef struct SDL_Renderer SDL_Renderer; + +/** + * An efficient driver-specific representation of pixel data + */ +struct SDL_Texture; +typedef struct SDL_Texture SDL_Texture; + +/* Function prototypes */ + +/** + * Get the number of 2D rendering drivers available for the current display. + * + * A render driver is a set of code that handles rendering and texture + * management on a particular display. Normally there is only one, but some + * drivers may have several available with different capabilities. + * + * There may be none if SDL was compiled without render support. + * + * \returns a number >= 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetRenderDriverInfo + */ +extern DECLSPEC int SDLCALL SDL_GetNumRenderDrivers(void); + +/** + * Get info about a specific 2D rendering driver for the current display. + * + * \param index the index of the driver to query information about + * \param info an SDL_RendererInfo structure to be filled with information on + * the rendering driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_GetNumRenderDrivers + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDriverInfo(int index, + SDL_RendererInfo * info); + +/** + * Create a window and default renderer. + * + * \param width the width of the window + * \param height the height of the window + * \param window_flags the flags used to create the window (see + * SDL_CreateWindow()) + * \param window a pointer filled with the window, or NULL on error + * \param renderer a pointer filled with the renderer, or NULL on error + * \returns 0 on success, or -1 on error; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindow + */ +extern DECLSPEC int SDLCALL SDL_CreateWindowAndRenderer( + int width, int height, Uint32 window_flags, + SDL_Window **window, SDL_Renderer **renderer); + + +/** + * Create a 2D rendering context for a window. + * + * \param window the window where rendering is displayed + * \param index the index of the rendering driver to initialize, or -1 to + * initialize the first one supporting the requested flags + * \param flags 0, or one or more SDL_RendererFlags OR'd together + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateSoftwareRenderer + * \sa SDL_DestroyRenderer + * \sa SDL_GetNumRenderDrivers + * \sa SDL_GetRendererInfo + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateRenderer(SDL_Window * window, + int index, Uint32 flags); + +/** + * Create a 2D software rendering context for a surface. + * + * Two other API which can be used to create SDL_Renderer: + * SDL_CreateRenderer() and SDL_CreateWindowAndRenderer(). These can _also_ + * create a software renderer, but they are intended to be used with an + * SDL_Window as the final destination and not an SDL_Surface. + * + * \param surface the SDL_Surface structure representing the surface where + * rendering is done + * \returns a valid rendering context or NULL if there was an error; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + * \sa SDL_CreateWindowRenderer + * \sa SDL_DestroyRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_CreateSoftwareRenderer(SDL_Surface * surface); + +/** + * Get the renderer associated with a window. + * + * \param window the window to query + * \returns the rendering context on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC SDL_Renderer * SDLCALL SDL_GetRenderer(SDL_Window * window); + +/** + * Get the window associated with a renderer. + * + * \param renderer the renderer to query + * \returns the window on success or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_RenderGetWindow(SDL_Renderer *renderer); + +/** + * Get information about a rendering context. + * + * \param renderer the rendering context + * \param info an SDL_RendererInfo structure filled with information about the + * current renderer + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererInfo(SDL_Renderer * renderer, + SDL_RendererInfo * info); + +/** + * Get the output size in pixels of a rendering context. + * + * Due to high-dpi displays, you might end up with a rendering context that + * has more pixels than the window that contains it, so use this instead of + * SDL_GetWindowSize() to decide how much drawing area you have. + * + * \param renderer the rendering context + * \param w an int filled with the width + * \param h an int filled with the height + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderer + */ +extern DECLSPEC int SDLCALL SDL_GetRendererOutputSize(SDL_Renderer * renderer, + int *w, int *h); + +/** + * Create a texture for a rendering context. + * + * You can set the texture scaling method by setting + * `SDL_HINT_RENDER_SCALE_QUALITY` before creating the texture. + * + * \param renderer the rendering context + * \param format one of the enumerated values in SDL_PixelFormatEnum + * \param access one of the enumerated values in SDL_TextureAccess + * \param w the width of the texture in pixels + * \param h the height of the texture in pixels + * \returns a pointer to the created texture or NULL if no rendering context + * was active, the format was unsupported, or the width or height + * were out of range; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTextureFromSurface + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + * \sa SDL_UpdateTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTexture(SDL_Renderer * renderer, + Uint32 format, + int access, int w, + int h); + +/** + * Create a texture from an existing surface. + * + * The surface is not modified or freed by this function. + * + * The SDL_TextureAccess hint for the created texture is + * `SDL_TEXTUREACCESS_STATIC`. + * + * The pixel format of the created texture may be different from the pixel + * format of the surface. Use SDL_QueryTexture() to query the pixel format of + * the texture. + * + * \param renderer the rendering context + * \param surface the SDL_Surface structure containing pixel data used to fill + * the texture + * \returns the created texture or NULL on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_DestroyTexture + * \sa SDL_QueryTexture + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_CreateTextureFromSurface(SDL_Renderer * renderer, SDL_Surface * surface); + +/** + * Query the attributes of a texture. + * + * \param texture the texture to query + * \param format a pointer filled in with the raw format of the texture; the + * actual format may differ, but pixel transfers will use this + * format (one of the SDL_PixelFormatEnum values). This argument + * can be NULL if you don't need this information. + * \param access a pointer filled in with the actual access to the texture + * (one of the SDL_TextureAccess values). This argument can be + * NULL if you don't need this information. + * \param w a pointer filled in with the width of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \param h a pointer filled in with the height of the texture in pixels. This + * argument can be NULL if you don't need this information. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + */ +extern DECLSPEC int SDLCALL SDL_QueryTexture(SDL_Texture * texture, + Uint32 * format, int *access, + int *w, int *h); + +/** + * Set an additional color value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * Color modulation is not always supported by the renderer; it will return -1 + * if color modulation is not supported. + * + * \param texture the texture to update + * \param r the red color value multiplied into copy operations + * \param g the green color value multiplied into copy operations + * \param b the blue color value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureColorMod(SDL_Texture * texture, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into render copy operations. + * + * \param texture the texture to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureColorMod(SDL_Texture * texture, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value multiplied into render copy operations. + * + * When this texture is rendered, during the copy operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * Alpha modulation is not always supported by the renderer; it will return -1 + * if alpha modulation is not supported. + * + * \param texture the texture to update + * \param alpha the source alpha value multiplied into copy operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureAlphaMod + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetTextureAlphaMod(SDL_Texture * texture, + Uint8 alpha); + +/** + * Get the additional alpha value multiplied into render copy operations. + * + * \param texture the texture to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureColorMod + * \sa SDL_SetTextureAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetTextureAlphaMod(SDL_Texture * texture, + Uint8 * alpha); + +/** + * Set the blend mode for a texture, used by SDL_RenderCopy(). + * + * If the blend mode is not supported, the closest supported mode is chosen + * and this function returns -1. + * + * \param texture the texture to update + * \param blendMode the SDL_BlendMode to use for texture blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTextureBlendMode + * \sa SDL_RenderCopy + */ +extern DECLSPEC int SDLCALL SDL_SetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for texture copy operations. + * + * \param texture the texture to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetTextureBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureBlendMode(SDL_Texture * texture, + SDL_BlendMode *blendMode); + +/** + * Set the scale mode used for texture scale operations. + * + * If the scale mode is not supported, the closest supported mode is chosen. + * + * \param texture The texture to update. + * \param scaleMode the SDL_ScaleMode to use for texture scaling. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_GetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_SetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode scaleMode); + +/** + * Get the scale mode used for texture scale operations. + * + * \param texture the texture to query. + * \param scaleMode a pointer filled in with the current scale mode. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_SetTextureScaleMode + */ +extern DECLSPEC int SDLCALL SDL_GetTextureScaleMode(SDL_Texture * texture, + SDL_ScaleMode *scaleMode); + +/** + * Associate a user-specified pointer with a texture. + * + * \param texture the texture to update. + * \param userdata the pointer to associate with the texture. + * \returns 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetTextureUserData + */ +extern DECLSPEC int SDLCALL SDL_SetTextureUserData(SDL_Texture * texture, + void *userdata); + +/** + * Get the user-specified pointer associated with a texture + * + * \param texture the texture to query. + * \return the pointer associated with the texture, or NULL if the texture is + * not valid. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetTextureUserData + */ +extern DECLSPEC void * SDLCALL SDL_GetTextureUserData(SDL_Texture * texture); + +/** + * Update the given texture rectangle with new pixel data. + * + * The pixel data must be in the pixel format of the texture. Use + * SDL_QueryTexture() to query the pixel format of the texture. + * + * This is a fairly slow function, intended for use with static textures that + * do not change often. + * + * If the texture is intended to be updated often, it is preferred to create + * the texture as streaming and use the locking functions referenced below. + * While this function will work with streaming textures, for optimization + * reasons you may not get the pixels back if you lock the texture afterward. + * + * \param texture the texture to update + * \param rect an SDL_Rect structure representing the area to update, or NULL + * to update the entire texture + * \param pixels the raw pixel data in the format of the texture + * \param pitch the number of bytes in a row of pixel data, including padding + * between lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const void *pixels, int pitch); + +/** + * Update a rectangle within a planar YV12 or IYUV texture with new pixel + * data. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of Y and U/V planes in the proper order, but this function is + * available if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture + * \param Yplane the raw pixel data for the Y plane + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane + * \param Uplane the raw pixel data for the U plane + * \param Upitch the number of bytes between rows of pixel data for the U + * plane + * \param Vplane the raw pixel data for the V plane + * \param Vpitch the number of bytes between rows of pixel data for the V + * plane + * \returns 0 on success or -1 if the texture is not valid; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_UpdateTexture + */ +extern DECLSPEC int SDLCALL SDL_UpdateYUVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *Uplane, int Upitch, + const Uint8 *Vplane, int Vpitch); + +/** + * Update a rectangle within a planar NV12 or NV21 texture with new pixels. + * + * You can use SDL_UpdateTexture() as long as your pixel data is a contiguous + * block of NV12/21 planes in the proper order, but this function is available + * if your pixel data is not contiguous. + * + * \param texture the texture to update + * \param rect a pointer to the rectangle of pixels to update, or NULL to + * update the entire texture. + * \param Yplane the raw pixel data for the Y plane. + * \param Ypitch the number of bytes between rows of pixel data for the Y + * plane. + * \param UVplane the raw pixel data for the UV plane. + * \param UVpitch the number of bytes between rows of pixel data for the UV + * plane. + * \return 0 on success, or -1 if the texture is not valid. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_UpdateNVTexture(SDL_Texture * texture, + const SDL_Rect * rect, + const Uint8 *Yplane, int Ypitch, + const Uint8 *UVplane, int UVpitch); + +/** + * Lock a portion of the texture for **write-only** pixel access. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect an SDL_Rect structure representing the area to lock for access; + * NULL to lock the entire texture + * \param pixels this is filled in with a pointer to the locked pixels, + * appropriately offset by the locked area + * \param pitch this is filled in with the pitch of the locked pixels; the + * pitch is the length of one row in bytes + * \returns 0 on success or a negative error code if the texture is not valid + * or was not created with `SDL_TEXTUREACCESS_STREAMING`; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTexture(SDL_Texture * texture, + const SDL_Rect * rect, + void **pixels, int *pitch); + +/** + * Lock a portion of the texture for **write-only** pixel access, and expose + * it as a SDL surface. + * + * Besides providing an SDL_Surface instead of raw pixel data, this function + * operates like SDL_LockTexture. + * + * As an optimization, the pixels made available for editing don't necessarily + * contain the old texture data. This is a write-only operation, and if you + * need to keep a copy of the texture data you should do that at the + * application level. + * + * You must use SDL_UnlockTexture() to unlock the pixels and apply any + * changes. + * + * The returned surface is freed internally after calling SDL_UnlockTexture() + * or SDL_DestroyTexture(). The caller should not free it. + * + * \param texture the texture to lock for access, which was created with + * `SDL_TEXTUREACCESS_STREAMING` + * \param rect a pointer to the rectangle to lock for access. If the rect is + * NULL, the entire texture will be locked + * \param surface this is filled in with an SDL surface representing the + * locked area + * \returns 0 on success, or -1 if the texture is not valid or was not created + * with `SDL_TEXTUREACCESS_STREAMING` + * + * \since This function is available since SDL 2.0.12. + * + * \sa SDL_LockTexture + * \sa SDL_UnlockTexture + */ +extern DECLSPEC int SDLCALL SDL_LockTextureToSurface(SDL_Texture *texture, + const SDL_Rect *rect, + SDL_Surface **surface); + +/** + * Unlock a texture, uploading the changes to video memory, if needed. + * + * **Warning**: Please note that SDL_LockTexture() is intended to be + * write-only; it will not guarantee the previous contents of the texture will + * be provided. You must fully initialize any area of a texture that you lock + * before unlocking it, as the pixels might otherwise be uninitialized memory. + * + * Which is to say: locking and immediately unlocking a texture can result in + * corrupted textures, depending on the renderer in use. + * + * \param texture a texture locked by SDL_LockTexture() + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockTexture + */ +extern DECLSPEC void SDLCALL SDL_UnlockTexture(SDL_Texture * texture); + +/** + * Determine whether a renderer supports the use of render targets. + * + * \param renderer the renderer that will be checked + * \returns SDL_TRUE if supported or SDL_FALSE if not. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderTargetSupported(SDL_Renderer *renderer); + +/** + * Set a texture as the current rendering target. + * + * Before using this function, you should check the + * `SDL_RENDERER_TARGETTEXTURE` bit in the flags of SDL_RendererInfo to see if + * render targets are supported. + * + * The default render target is the window for which the renderer was created. + * To stop rendering to a texture and render to the window again, call this + * function with a NULL `texture`. + * + * \param renderer the rendering context + * \param texture the targeted texture, which must be created with the + * `SDL_TEXTUREACCESS_TARGET` flag, or NULL to render to the + * window instead of a texture. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderTarget + */ +extern DECLSPEC int SDLCALL SDL_SetRenderTarget(SDL_Renderer *renderer, + SDL_Texture *texture); + +/** + * Get the current render target. + * + * The default render target is the window for which the renderer was created, + * and is reported a NULL here. + * + * \param renderer the rendering context + * \returns the current render target or NULL for the default render target. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderTarget + */ +extern DECLSPEC SDL_Texture * SDLCALL SDL_GetRenderTarget(SDL_Renderer *renderer); + +/** + * Set a device independent resolution for rendering. + * + * This function uses the viewport and scaling functionality to allow a fixed + * logical resolution for rendering, regardless of the actual output + * resolution. If the actual output resolution doesn't have the same aspect + * ratio the output rendering will be centered within the output display. + * + * If the output display is a window, mouse and touch events in the window + * will be filtered and scaled so they seem to arrive within the logical + * resolution. The SDL_HINT_MOUSE_RELATIVE_SCALING hint controls whether + * relative motion events are also scaled. + * + * If this function results in scaling or subpixel drawing by the rendering + * backend, it will be handled using the appropriate quality hints. + * + * \param renderer the renderer for which resolution should be set + * \param w the width of the logical resolution + * \param h the height of the logical resolution + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetLogicalSize(SDL_Renderer * renderer, int w, int h); + +/** + * Get device independent resolution for rendering. + * + * When using the main rendering target (eg no target texture is set): this + * may return 0 for `w` and `h` if the SDL_Renderer has never had its logical + * size set by SDL_RenderSetLogicalSize(). Otherwise it returns the logical + * width and height. + * + * When using a target texture: Never return 0 for `w` and `h` at first. Then + * it returns the logical width and height that are set. + * + * \param renderer a rendering context + * \param w an int to be filled with the width + * \param h an int to be filled with the height + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderGetLogicalSize(SDL_Renderer * renderer, int *w, int *h); + +/** + * Set whether to force integer scales for resolution-independent rendering. + * + * This function restricts the logical viewport to integer values - that is, + * when a resolution is between two multiples of a logical size, the viewport + * size is rounded down to the lower multiple. + * + * \param renderer the renderer for which integer scaling should be set + * \param enable enable or disable the integer scaling for rendering + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderGetIntegerScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetIntegerScale(SDL_Renderer * renderer, + SDL_bool enable); + +/** + * Get whether integer scales are forced for resolution-independent rendering. + * + * \param renderer the renderer from which integer scaling should be queried + * \returns SDL_TRUE if integer scales are forced or SDL_FALSE if not and on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RenderSetIntegerScale + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderGetIntegerScale(SDL_Renderer * renderer); + +/** + * Set the drawing area for rendering on the current target. + * + * When the window is resized, the viewport is reset to fill the entire new + * window size. + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the drawing area, or NULL + * to set the viewport to the entire target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetViewport + */ +extern DECLSPEC int SDLCALL SDL_RenderSetViewport(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the drawing area for the current target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure filled in with the current drawing area + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetViewport + */ +extern DECLSPEC void SDLCALL SDL_RenderGetViewport(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Set the clip rectangle for rendering on the specified target. + * + * \param renderer the rendering context for which clip rectangle should be + * set + * \param rect an SDL_Rect structure representing the clip area, relative to + * the viewport, or NULL to disable clipping + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderIsClipEnabled + */ +extern DECLSPEC int SDLCALL SDL_RenderSetClipRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Get the clip rectangle for the current target. + * + * \param renderer the rendering context from which clip rectangle should be + * queried + * \param rect an SDL_Rect structure filled in with the current clipping area + * or an empty rectangle if clipping is disabled + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderIsClipEnabled + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC void SDLCALL SDL_RenderGetClipRect(SDL_Renderer * renderer, + SDL_Rect * rect); + +/** + * Get whether clipping is enabled on the given renderer. + * + * \param renderer the renderer from which clip state should be queried + * \returns SDL_TRUE if clipping is enabled or SDL_FALSE if not; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_RenderGetClipRect + * \sa SDL_RenderSetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RenderIsClipEnabled(SDL_Renderer * renderer); + + +/** + * Set the drawing scale for rendering on the current target. + * + * The drawing coordinates are scaled by the x/y scaling factors before they + * are used by the renderer. This allows resolution independent drawing with a + * single coordinate system. + * + * If this results in scaling or subpixel drawing by the rendering backend, it + * will be handled using the appropriate quality hints. For best results use + * integer scaling factors. + * + * \param renderer a rendering context + * \param scaleX the horizontal scaling factor + * \param scaleY the vertical scaling factor + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC int SDLCALL SDL_RenderSetScale(SDL_Renderer * renderer, + float scaleX, float scaleY); + +/** + * Get the drawing scale for the current target. + * + * \param renderer the renderer from which drawing scale should be queried + * \param scaleX a pointer filled in with the horizontal scaling factor + * \param scaleY a pointer filled in with the vertical scaling factor + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderSetScale + */ +extern DECLSPEC void SDLCALL SDL_RenderGetScale(SDL_Renderer * renderer, + float *scaleX, float *scaleY); + +/** + * Get logical coordinates of point in renderer when given real coordinates of + * point in window. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the logical coordinates should be + * calculated + * \param windowX the real X coordinate in the window + * \param windowY the real Y coordinate in the window + * \param logicalX the pointer filled with the logical x coordinate + * \param logicalY the pointer filled with the logical y coordinate + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderWindowToLogical(SDL_Renderer * renderer, + int windowX, int windowY, + float *logicalX, float *logicalY); + + +/** + * Get real coordinates of point in window when given logical coordinates of + * point in renderer. + * + * Logical coordinates will differ from real coordinates when render is scaled + * and logical renderer size set + * + * \param renderer the renderer from which the window coordinates should be + * calculated + * \param logicalX the logical x coordinate + * \param logicalY the logical y coordinate + * \param windowX the pointer filled with the real X coordinate in the window + * \param windowY the pointer filled with the real Y coordinate in the window + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGetScale + * \sa SDL_RenderSetScale + * \sa SDL_RenderGetLogicalSize + * \sa SDL_RenderSetLogicalSize + */ +extern DECLSPEC void SDLCALL SDL_RenderLogicalToWindow(SDL_Renderer * renderer, + float logicalX, float logicalY, + int *windowX, int *windowY); + +/** + * Set the color used for drawing operations (Rect, Line and Clear). + * + * Set the color for drawing or filling rectangles, lines, and points, and for + * SDL_RenderClear(). + * + * \param renderer the rendering context + * \param r the red value used to draw on the rendering target + * \param g the green value used to draw on the rendering target + * \param b the blue value used to draw on the rendering target + * \param a the alpha value used to draw on the rendering target; usually + * `SDL_ALPHA_OPAQUE` (255). Use SDL_SetRenderDrawBlendMode to + * specify how the alpha channel is used + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawColor + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawColor(SDL_Renderer * renderer, + Uint8 r, Uint8 g, Uint8 b, + Uint8 a); + +/** + * Get the color used for drawing operations (Rect, Line and Clear). + * + * \param renderer the rendering context + * \param r a pointer filled in with the red value used to draw on the + * rendering target + * \param g a pointer filled in with the green value used to draw on the + * rendering target + * \param b a pointer filled in with the blue value used to draw on the + * rendering target + * \param a a pointer filled in with the alpha value used to draw on the + * rendering target; usually `SDL_ALPHA_OPAQUE` (255) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawColor(SDL_Renderer * renderer, + Uint8 * r, Uint8 * g, Uint8 * b, + Uint8 * a); + +/** + * Set the blend mode used for drawing operations (Fill and Line). + * + * If the blend mode is not supported, the closest supported mode is chosen. + * + * \param renderer the rendering context + * \param blendMode the SDL_BlendMode to use for blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRenderDrawBlendMode + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + */ +extern DECLSPEC int SDLCALL SDL_SetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for drawing operations. + * + * \param renderer the rendering context + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetRenderDrawBlendMode(SDL_Renderer * renderer, + SDL_BlendMode *blendMode); + +/** + * Clear the current rendering target with the drawing color. + * + * This function clears the entire rendering target, ignoring the viewport and + * the clip rectangle. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderClear(SDL_Renderer * renderer); + +/** + * Draw a point on the current rendering target. + * + * SDL_RenderDrawPoint() draws a single point. If you want to draw multiple, + * use SDL_RenderDrawPoints() instead. + * + * \param renderer the rendering context + * \param x the x coordinate of the point + * \param y the y coordinate of the point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoint(SDL_Renderer * renderer, + int x, int y); + +/** + * Draw multiple points on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures that represent the points to + * draw + * \param count the number of points to draw + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPoints(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a line on the current rendering target. + * + * SDL_RenderDrawLine() draws the line to include both end points. If you want + * to draw multiple, connecting lines use SDL_RenderDrawLines() instead. + * + * \param renderer the rendering context + * \param x1 the x coordinate of the start point + * \param y1 the y coordinate of the start point + * \param x2 the x coordinate of the end point + * \param y2 the y coordinate of the end point + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLine(SDL_Renderer * renderer, + int x1, int y1, int x2, int y2); + +/** + * Draw a series of connected lines on the current rendering target. + * + * \param renderer the rendering context + * \param points an array of SDL_Point structures representing points along + * the lines + * \param count the number of points, drawing count-1 lines + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLines(SDL_Renderer * renderer, + const SDL_Point * points, + int count); + +/** + * Draw a rectangle on the current rendering target. + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the rectangle to draw, or + * NULL to outline the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Draw some number of rectangles on the current rendering target. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be drawn + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color. + * + * The current drawing color is set by SDL_SetRenderDrawColor(), and the + * color's alpha value is ignored unless blending is enabled with the + * appropriate call to SDL_SetRenderDrawBlendMode(). + * + * \param renderer the rendering context + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL for the entire rendering target + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRects + * \sa SDL_RenderPresent + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRect(SDL_Renderer * renderer, + const SDL_Rect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color. + * + * \param renderer the rendering context + * \param rects an array of SDL_Rect structures representing the rectangles to + * be filled + * \param count the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderPresent + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRects(SDL_Renderer * renderer, + const SDL_Rect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target; the texture will be stretched to fill the + * given rectangle + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopyEx + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopy(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect); + +/** + * Copy a portion of the texture to the current rendering, with optional + * rotation and flipping. + * + * Copy a portion of the texture to the current rendering target, optionally + * rotating it by angle around the given center and also flipping it + * top-bottom and/or left-right. + * + * The texture is blended with the destination based on its blend mode set + * with SDL_SetTextureBlendMode(). + * + * The texture color is affected based on its color modulation set by + * SDL_SetTextureColorMod(). + * + * The texture alpha is affected based on its alpha modulation set by + * SDL_SetTextureAlphaMod(). + * + * \param renderer the rendering context + * \param texture the source texture + * \param srcrect the source SDL_Rect structure or NULL for the entire texture + * \param dstrect the destination SDL_Rect structure or NULL for the entire + * rendering target + * \param angle an angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center a pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around `dstrect.w / 2`, `dstrect.h / 2`) + * \param flip a SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderCopy + * \sa SDL_SetTextureAlphaMod + * \sa SDL_SetTextureBlendMode + * \sa SDL_SetTextureColorMod + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyEx(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_Rect * dstrect, + const double angle, + const SDL_Point *center, + const SDL_RendererFlip flip); + + +/** + * Draw a point on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a point. + * \param x The x coordinate of the point. + * \param y The y coordinate of the point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointF(SDL_Renderer * renderer, + float x, float y); + +/** + * Draw multiple points on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw multiple points. + * \param points The points to draw + * \param count The number of points to draw + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawPointsF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a line on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a line. + * \param x1 The x coordinate of the start point. + * \param y1 The y coordinate of the start point. + * \param x2 The x coordinate of the end point. + * \param y2 The y coordinate of the end point. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLineF(SDL_Renderer * renderer, + float x1, float y1, float x2, float y2); + +/** + * Draw a series of connected lines on the current rendering target at + * subpixel precision. + * + * \param renderer The renderer which should draw multiple lines. + * \param points The points along the lines + * \param count The number of points, drawing count-1 lines + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawLinesF(SDL_Renderer * renderer, + const SDL_FPoint * points, + int count); + +/** + * Draw a rectangle on the current rendering target at subpixel precision. + * + * \param renderer The renderer which should draw a rectangle. + * \param rect A pointer to the destination rectangle, or NULL to outline the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Draw some number of rectangles on the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should draw multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderDrawRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Fill a rectangle on the current rendering target with the drawing color at + * subpixel precision. + * + * \param renderer The renderer which should fill a rectangle. + * \param rect A pointer to the destination rectangle, or NULL for the entire + * rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectF(SDL_Renderer * renderer, + const SDL_FRect * rect); + +/** + * Fill some number of rectangles on the current rendering target with the + * drawing color at subpixel precision. + * + * \param renderer The renderer which should fill multiple rectangles. + * \param rects A pointer to an array of destination rectangles. + * \param count The number of rectangles. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFillRectsF(SDL_Renderer * renderer, + const SDL_FRect * rects, + int count); + +/** + * Copy a portion of the texture to the current rendering target at subpixel + * precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect); + +/** + * Copy a portion of the source texture to the current rendering target, with + * rotation and flipping, at subpixel precision. + * + * \param renderer The renderer which should copy parts of a texture. + * \param texture The source texture. + * \param srcrect A pointer to the source rectangle, or NULL for the entire + * texture. + * \param dstrect A pointer to the destination rectangle, or NULL for the + * entire rendering target. + * \param angle An angle in degrees that indicates the rotation that will be + * applied to dstrect, rotating it in a clockwise direction + * \param center A pointer to a point indicating the point around which + * dstrect will be rotated (if NULL, rotation will be done + * around dstrect.w/2, dstrect.h/2). + * \param flip An SDL_RendererFlip value stating which flipping actions should + * be performed on the texture + * \return 0 on success, or -1 on error + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderCopyExF(SDL_Renderer * renderer, + SDL_Texture * texture, + const SDL_Rect * srcrect, + const SDL_FRect * dstrect, + const double angle, + const SDL_FPoint *center, + const SDL_RendererFlip flip); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex array Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param vertices Vertices. + * \param num_vertices Number of vertices. + * \param indices (optional) An array of integer indices into the 'vertices' + * array, if NULL all vertices will be rendered in sequential + * order. + * \param num_indices Number of indices. + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometryRaw + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometry(SDL_Renderer *renderer, + SDL_Texture *texture, + const SDL_Vertex *vertices, int num_vertices, + const int *indices, int num_indices); + +/** + * Render a list of triangles, optionally using a texture and indices into the + * vertex arrays Color and alpha modulation is done per vertex + * (SDL_SetTextureColorMod and SDL_SetTextureAlphaMod are ignored). + * + * \param renderer The rendering context. + * \param texture (optional) The SDL texture to use. + * \param xy Vertex positions + * \param xy_stride Byte size to move from one element to the next element + * \param color Vertex colors (as SDL_Color) + * \param color_stride Byte size to move from one element to the next element + * \param uv Vertex normalized texture coordinates + * \param uv_stride Byte size to move from one element to the next element + * \param num_vertices Number of vertices. + * \param indices (optional) An array of indices into the 'vertices' arrays, + * if NULL all vertices will be rendered in sequential order. + * \param num_indices Number of indices. + * \param size_indices Index size: 1 (byte), 2 (short), 4 (int) + * \return 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_RenderGeometry + * \sa SDL_Vertex + */ +extern DECLSPEC int SDLCALL SDL_RenderGeometryRaw(SDL_Renderer *renderer, + SDL_Texture *texture, + const float *xy, int xy_stride, + const SDL_Color *color, int color_stride, + const float *uv, int uv_stride, + int num_vertices, + const void *indices, int num_indices, int size_indices); + +/** + * Read pixels from the current rendering target to an array of pixels. + * + * **WARNING**: This is a very slow operation, and should not be used + * frequently. If you're using this on the main rendering target, it should be + * called after rendering and before SDL_RenderPresent(). + * + * `pitch` specifies the number of bytes between rows in the destination + * `pixels` data. This allows you to write to a subrectangle or have padded + * rows in the destination. Generally, `pitch` should equal the number of + * pixels per row in the `pixels` data times the number of bytes per pixel, + * but it might contain additional padding (for example, 24bit RGB Windows + * Bitmap data pads all rows to multiples of 4 bytes). + * + * \param renderer the rendering context + * \param rect an SDL_Rect structure representing the area to read, or NULL + * for the entire render target + * \param format an SDL_PixelFormatEnum value of the desired format of the + * pixel data, or 0 to use the format of the rendering target + * \param pixels a pointer to the pixel data to copy into + * \param pitch the pitch of the `pixels` parameter + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_RenderReadPixels(SDL_Renderer * renderer, + const SDL_Rect * rect, + Uint32 format, + void *pixels, int pitch); + +/** + * Update the screen with any rendering performed since the previous call. + * + * SDL's rendering functions operate on a backbuffer; that is, calling a + * rendering function such as SDL_RenderDrawLine() does not directly put a + * line on the screen, but rather updates the backbuffer. As such, you compose + * your entire scene and *present* the composed backbuffer to the screen as a + * complete picture. + * + * Therefore, when using SDL's rendering API, one does all drawing intended + * for the frame, and then calls this function once per frame to present the + * final drawing to the user. + * + * The backbuffer should be considered invalidated after each present; do not + * assume that previous contents will exist between frames. You are strongly + * encouraged to call SDL_RenderClear() to initialize the backbuffer before + * starting each new frame's drawing, even if you plan to overwrite every + * pixel. + * + * \param renderer the rendering context + * + * \threadsafety You may only call this function on the main thread. If this + * happens to work on a background thread on any given platform + * or backend, it's purely by luck and you should not rely on it + * to work next time. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RenderClear + * \sa SDL_RenderDrawLine + * \sa SDL_RenderDrawLines + * \sa SDL_RenderDrawPoint + * \sa SDL_RenderDrawPoints + * \sa SDL_RenderDrawRect + * \sa SDL_RenderDrawRects + * \sa SDL_RenderFillRect + * \sa SDL_RenderFillRects + * \sa SDL_SetRenderDrawBlendMode + * \sa SDL_SetRenderDrawColor + */ +extern DECLSPEC void SDLCALL SDL_RenderPresent(SDL_Renderer * renderer); + +/** + * Destroy the specified texture. + * + * Passing NULL or an otherwise invalid texture will set the SDL error message + * to "Invalid texture". + * + * \param texture the texture to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateTexture + * \sa SDL_CreateTextureFromSurface + */ +extern DECLSPEC void SDLCALL SDL_DestroyTexture(SDL_Texture * texture); + +/** + * Destroy the rendering context for a window and free associated textures. + * + * If `renderer` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid renderer". See SDL_GetError(). + * + * \param renderer the rendering context + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRenderer + */ +extern DECLSPEC void SDLCALL SDL_DestroyRenderer(SDL_Renderer * renderer); + +/** + * Force the rendering context to flush any pending commands to the underlying + * rendering API. + * + * You do not need to (and in fact, shouldn't) call this function unless you + * are planning to call into OpenGL/Direct3D/Metal/whatever directly in + * addition to using an SDL_Renderer. + * + * This is for a very-specific case: if you are using SDL's render API, you + * asked for a specific renderer backend (OpenGL, Direct3D, etc), you set + * SDL_HINT_RENDER_BATCHING to "1", and you plan to make OpenGL/D3D/whatever + * calls in addition to SDL render API calls. If all of this applies, you + * should call SDL_RenderFlush() between calls to SDL's render API and the + * low-level API you're using in cooperation. + * + * In all other cases, you can ignore this function. This is only here to get + * maximum performance out of a specific situation. In all other cases, SDL + * will do the right thing, perhaps at a performance loss. + * + * This function is first available in SDL 2.0.10, and is not needed in 2.0.9 + * and earlier, as earlier versions did not queue rendering commands at all, + * instead flushing them to the OS immediately. + * + * \param renderer the rendering context + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC int SDLCALL SDL_RenderFlush(SDL_Renderer * renderer); + + +/** + * Bind an OpenGL/ES/ES2 texture to the current context. + * + * This is for use with OpenGL instructions when rendering OpenGL primitives + * directly. + * + * If not NULL, `texw` and `texh` will be filled with the width and height + * values suitable for the provided texture. In most cases, both will be 1.0, + * however, on systems that support the GL_ARB_texture_rectangle extension, + * these values will actually be the pixel width and height used to create the + * texture, so this factor needs to be taken into account when providing + * texture coordinates to OpenGL. + * + * You need a renderer to create an SDL_Texture, therefore you can only use + * this function with an implicit OpenGL context from SDL_CreateRenderer(), + * not with your own OpenGL context. If you need control over your OpenGL + * context, you need to write your own texture-loading methods. + * + * Also note that SDL may upload RGB textures as BGR (or vice-versa), and + * re-order the color channels in the shaders phase, so the uploaded texture + * may have swapped color channels. + * + * \param texture the texture to bind to the current OpenGL/ES/ES2 context + * \param texw a pointer to a float value which will be filled with the + * texture width or NULL if you don't need that value + * \param texh a pointer to a float value which will be filled with the + * texture height or NULL if you don't need that value + * \returns 0 on success, or -1 if the operation is not supported; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + * \sa SDL_GL_UnbindTexture + */ +extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw, float *texh); + +/** + * Unbind an OpenGL/ES/ES2 texture from the current context. + * + * See SDL_GL_BindTexture() for examples on how to use these functions + * + * \param texture the texture to unbind from the current OpenGL/ES/ES2 context + * \returns 0 on success, or -1 if the operation is not supported + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_BindTexture + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); + +/** + * Get the CAMetalLayer associated with the given Metal renderer. + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to a `CAMetalLayer *`. + * + * \param renderer The renderer to query + * \returns a `CAMetalLayer *` on success, or NULL if the renderer isn't a + * Metal renderer + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalCommandEncoder + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * Get the Metal command encoder for the current frame + * + * This function returns `void *`, so SDL doesn't have to include Metal's + * headers, but it can be safely cast to an `id`. + * + * Note that as of SDL 2.0.18, this will return NULL if Metal refuses to give + * SDL a drawable to render to, which might happen if the window is + * hidden/minimized/offscreen. This doesn't apply to command encoders for + * render targets, just the window's backbuffer. Check your return values! + * + * \param renderer The renderer to query + * \returns an `id` on success, or NULL if the + * renderer isn't a Metal renderer or there was an error. + * + * \since This function is available since SDL 2.0.8. + * + * \sa SDL_RenderGetMetalLayer + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); + +/** + * Toggle VSync of the given renderer. + * + * \param renderer The renderer to toggle + * \param vsync 1 for on, 0 for off. All other values are reserved + * \returns a 0 int on success, or non-zero on failure + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_RenderSetVSync(SDL_Renderer* renderer, int vsync); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_render_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_revision.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_revision.h new file mode 100644 index 0000000..4455a08 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_revision.h @@ -0,0 +1,7 @@ +/* Generated by updaterev.sh, do not edit */ +#ifdef SDL_VENDOR_INFO +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40 (" SDL_VENDOR_INFO ")" +#else +#define SDL_REVISION "SDL-release-2.28.5-0-g15ead9a40" +#endif +#define SDL_REVISION_NUMBER 0 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rwops.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rwops.h new file mode 100644 index 0000000..eabbbf2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_rwops.h @@ -0,0 +1,841 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_rwops.h + * + * This file provides a general interface for SDL to read and write + * data streams. It can easily be extended to files, memory, etc. + */ + +#ifndef SDL_rwops_h_ +#define SDL_rwops_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* RWops Types */ +#define SDL_RWOPS_UNKNOWN 0U /**< Unknown stream type */ +#define SDL_RWOPS_WINFILE 1U /**< Win32 file */ +#define SDL_RWOPS_STDFILE 2U /**< Stdio file */ +#define SDL_RWOPS_JNIFILE 3U /**< Android asset */ +#define SDL_RWOPS_MEMORY 4U /**< Memory stream */ +#define SDL_RWOPS_MEMORY_RO 5U /**< Read-Only memory stream */ + +/** + * This is the read/write operation structure -- very basic. + */ +typedef struct SDL_RWops +{ + /** + * Return the size of the file in this rwops, or -1 if unknown + */ + Sint64 (SDLCALL * size) (struct SDL_RWops * context); + + /** + * Seek to \c offset relative to \c whence, one of stdio's whence values: + * RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END + * + * \return the final offset in the data stream, or -1 on error. + */ + Sint64 (SDLCALL * seek) (struct SDL_RWops * context, Sint64 offset, + int whence); + + /** + * Read up to \c maxnum objects each of size \c size from the data + * stream to the area pointed at by \c ptr. + * + * \return the number of objects read, or 0 at error or end of file. + */ + size_t (SDLCALL * read) (struct SDL_RWops * context, void *ptr, + size_t size, size_t maxnum); + + /** + * Write exactly \c num objects each of size \c size from the area + * pointed at by \c ptr to data stream. + * + * \return the number of objects written, or 0 at error or end of file. + */ + size_t (SDLCALL * write) (struct SDL_RWops * context, const void *ptr, + size_t size, size_t num); + + /** + * Close and free an allocated SDL_RWops structure. + * + * \return 0 if successful or -1 on write error when flushing data. + */ + int (SDLCALL * close) (struct SDL_RWops * context); + + Uint32 type; + union + { +#if defined(__ANDROID__) + struct + { + void *asset; + } androidio; +#elif defined(__WIN32__) || defined(__GDK__) + struct + { + SDL_bool append; + void *h; + struct + { + void *data; + size_t size; + size_t left; + } buffer; + } windowsio; +#endif + +#ifdef HAVE_STDIO_H + struct + { + SDL_bool autoclose; + FILE *fp; + } stdio; +#endif + struct + { + Uint8 *base; + Uint8 *here; + Uint8 *stop; + } mem; + struct + { + void *data1; + void *data2; + } unknown; + } hidden; + +} SDL_RWops; + + +/** + * \name RWFrom functions + * + * Functions to create SDL_RWops structures from various data streams. + */ +/* @{ */ + +/** + * Use this function to create a new SDL_RWops structure for reading from + * and/or writing to a named file. + * + * The `mode` string is treated roughly the same as in a call to the C + * library's fopen(), even if SDL doesn't happen to use fopen() behind the + * scenes. + * + * Available `mode` strings: + * + * - "r": Open a file for reading. The file must exist. + * - "w": Create an empty file for writing. If a file with the same name + * already exists its content is erased and the file is treated as a new + * empty file. + * - "a": Append to a file. Writing operations append data at the end of the + * file. The file is created if it does not exist. + * - "r+": Open a file for update both reading and writing. The file must + * exist. + * - "w+": Create an empty file for both reading and writing. If a file with + * the same name already exists its content is erased and the file is + * treated as a new empty file. + * - "a+": Open a file for reading and appending. All writing operations are + * performed at the end of the file, protecting the previous content to be + * overwritten. You can reposition (fseek, rewind) the internal pointer to + * anywhere in the file for reading, but writing operations will move it + * back to the end of file. The file is created if it does not exist. + * + * **NOTE**: In order to open a file as a binary file, a "b" character has to + * be included in the `mode` string. This additional "b" character can either + * be appended at the end of the string (thus making the following compound + * modes: "rb", "wb", "ab", "r+b", "w+b", "a+b") or be inserted between the + * letter and the "+" sign for the mixed modes ("rb+", "wb+", "ab+"). + * Additional characters may follow the sequence, although they should have no + * effect. For example, "t" is sometimes appended to make explicit the file is + * a text file. + * + * This function supports Unicode filenames, but they must be encoded in UTF-8 + * format, regardless of the underlying operating system. + * + * As a fallback, SDL_RWFromFile() will transparently open a matching filename + * in an Android app's `assets`. + * + * Closing the SDL_RWops will close the file handle SDL is holding internally. + * + * \param file a UTF-8 string representing the filename to open + * \param mode an ASCII string representing the mode to be used for opening + * the file. + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFile(const char *file, + const char *mode); + +#ifdef HAVE_STDIO_H + +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(FILE * fp, SDL_bool autoclose); + +#else + +/** + * Use this function to create an SDL_RWops structure from a standard I/O file + * pointer (stdio.h's `FILE*`). + * + * This function is not available on Windows, since files opened in an + * application on that platform cannot be used by a dynamically linked + * library. + * + * On some platforms, the first parameter is a `void*`, on others, it's a + * `FILE*`, depending on what system headers are available to SDL. It is + * always intended to be the `FILE*` type from the C runtime's stdio.h. + * + * \param fp the `FILE*` that feeds the SDL_RWops stream + * \param autoclose SDL_TRUE to close the `FILE*` when closing the SDL_RWops, + * SDL_FALSE to leave the `FILE*` open when the RWops is + * closed + * \returns a pointer to the SDL_RWops structure that is created, or NULL on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromFP(void * fp, + SDL_bool autoclose); +#endif + +/** + * Use this function to prepare a read-write memory buffer for use with + * SDL_RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size, for both read and write access. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to make sure the RWops never writes to the memory buffer, you + * should use SDL_RWFromConstMem() with a read-only buffer of memory instead. + * + * \param mem a pointer to a buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromMem(void *mem, int size); + +/** + * Use this function to prepare a read-only memory buffer for use with RWops. + * + * This function sets up an SDL_RWops struct based on a memory area of a + * certain size. It assumes the memory area is not writable. + * + * Attempting to write to this RWops stream will report an error without + * writing to the memory buffer. + * + * This memory buffer is not copied by the RWops; the pointer you provide must + * remain valid until you close the stream. Closing the stream will not free + * the original buffer. + * + * If you need to write to a memory buffer, you should use SDL_RWFromMem() + * with a writable buffer of memory instead. + * + * \param mem a pointer to a read-only buffer to feed an SDL_RWops stream + * \param size the buffer size, in bytes + * \returns a pointer to a new SDL_RWops structure, or NULL if it fails; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWtell + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_RWFromConstMem(const void *mem, + int size); + +/* @} *//* RWFrom functions */ + + +/** + * Use this function to allocate an empty, unpopulated SDL_RWops structure. + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc. + * + * You must free the returned pointer with SDL_FreeRW(). Depending on your + * operating system and compiler, there may be a difference between the + * malloc() and free() your program uses and the versions SDL calls + * internally. Trying to mix the two can cause crashing such as segmentation + * faults. Since all SDL_RWops must free themselves when their **close** + * method is called, all SDL_RWops must be allocated through this function, so + * they can all be freed correctly with SDL_FreeRW(). + * + * \returns a pointer to the allocated memory on success, or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeRW + */ +extern DECLSPEC SDL_RWops *SDLCALL SDL_AllocRW(void); + +/** + * Use this function to free an SDL_RWops structure allocated by + * SDL_AllocRW(). + * + * Applications do not need to use this function unless they are providing + * their own SDL_RWops implementation. If you just need a SDL_RWops to + * read/write a common data source, you should use the built-in + * implementations in SDL, like SDL_RWFromFile() or SDL_RWFromMem(), etc, and + * call the **close** method on those SDL_RWops pointers when you are done + * with them. + * + * Only use SDL_FreeRW() on pointers returned by SDL_AllocRW(). The pointer is + * invalid as soon as this function returns. Any extra memory allocated during + * creation of the SDL_RWops is not freed by SDL_FreeRW(); the programmer must + * be responsible for managing that memory in their **close** method. + * + * \param area the SDL_RWops structure to be freed + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocRW + */ +extern DECLSPEC void SDLCALL SDL_FreeRW(SDL_RWops * area); + +#define RW_SEEK_SET 0 /**< Seek from the beginning of data */ +#define RW_SEEK_CUR 1 /**< Seek relative to current read point */ +#define RW_SEEK_END 2 /**< Seek relative to the end of data */ + +/** + * Use this function to get the size of the data stream in an SDL_RWops. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context the SDL_RWops to get the size of the data stream from + * \returns the size of the data stream in the SDL_RWops on success, -1 if + * unknown or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWsize(SDL_RWops *context); + +/** + * Seek within an SDL_RWops data stream. + * + * This function seeks to byte `offset`, relative to `whence`. + * + * `whence` may be any of the following values: + * + * - `RW_SEEK_SET`: seek from the beginning of data + * - `RW_SEEK_CUR`: seek relative to current read point + * - `RW_SEEK_END`: seek relative to the end of data + * + * If this stream can not seek, it will return -1. + * + * SDL_RWseek() is actually a wrapper function that calls the SDL_RWops's + * `seek` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param offset an offset in bytes, relative to **whence** location; can be + * negative + * \param whence any of `RW_SEEK_SET`, `RW_SEEK_CUR`, `RW_SEEK_END` + * \returns the final offset in the data stream after the seek or -1 on error. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWtell + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWseek(SDL_RWops *context, + Sint64 offset, int whence); + +/** + * Determine the current read/write offset in an SDL_RWops data stream. + * + * SDL_RWtell is actually a wrapper function that calls the SDL_RWops's `seek` + * method, with an offset of 0 bytes from `RW_SEEK_CUR`, to simplify + * application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a SDL_RWops data stream object from which to get the current + * offset + * \returns the current offset in the stream, or -1 if the information can not + * be determined. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC Sint64 SDLCALL SDL_RWtell(SDL_RWops *context); + +/** + * Read from a data source. + * + * This function reads up to `maxnum` objects each of size `size` from the + * data source to the area pointed at by `ptr`. This function may read less + * objects than requested. It will return zero when there has been an error or + * the data stream is completely read. + * + * SDL_RWread() is actually a function wrapper that calls the SDL_RWops's + * `read` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer to read data into + * \param size the size of each object to read, in bytes + * \param maxnum the maximum number of objects to be read + * \returns the number of objects read, or 0 at error or end of file; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC size_t SDLCALL SDL_RWread(SDL_RWops *context, + void *ptr, size_t size, + size_t maxnum); + +/** + * Write to an SDL_RWops data stream. + * + * This function writes exactly `num` objects each of size `size` from the + * area pointed at by `ptr` to the stream. If this fails for any reason, it'll + * return less than `num` to demonstrate how far the write progressed. On + * success, it returns `num`. + * + * SDL_RWwrite is actually a function wrapper that calls the SDL_RWops's + * `write` method appropriately, to simplify application development. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context a pointer to an SDL_RWops structure + * \param ptr a pointer to a buffer containing data to write + * \param size the size of an object to write, in bytes + * \param num the number of objects to write + * \returns the number of objects written, which will be less than **num** on + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWclose + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + */ +extern DECLSPEC size_t SDLCALL SDL_RWwrite(SDL_RWops *context, + const void *ptr, size_t size, + size_t num); + +/** + * Close and free an allocated SDL_RWops structure. + * + * SDL_RWclose() closes and cleans up the SDL_RWops stream. It releases any + * resources used by the stream and frees the SDL_RWops itself with + * SDL_FreeRW(). This returns 0 on success, or -1 if the stream failed to + * flush to its output (e.g. to disk). + * + * Note that if this fails to flush the stream to disk, this function reports + * an error, but the SDL_RWops is still invalid once this function returns. + * + * Prior to SDL 2.0.10, this function was a macro. + * + * \param context SDL_RWops structure to close + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.10. + * + * \sa SDL_RWFromConstMem + * \sa SDL_RWFromFile + * \sa SDL_RWFromFP + * \sa SDL_RWFromMem + * \sa SDL_RWread + * \sa SDL_RWseek + * \sa SDL_RWwrite + */ +extern DECLSPEC int SDLCALL SDL_RWclose(SDL_RWops *context); + +/** + * Load all the data from an SDL data stream. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * \param src the SDL_RWops to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \param freesrc if non-zero, calls SDL_RWclose() on `src` before returning + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile_RW(SDL_RWops *src, + size_t *datasize, + int freesrc); + +/** + * Load all the data from a file path. + * + * The data is allocated with a zero byte at the end (null terminated) for + * convenience. This extra byte is not included in the value reported via + * `datasize`. + * + * The data should be freed with SDL_free(). + * + * Prior to SDL 2.0.10, this function was a macro wrapping around + * SDL_LoadFile_RW. + * + * \param file the path to read all available data from + * \param datasize if not NULL, will store the number of bytes read + * \returns the data, or NULL if there was an error. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC void *SDLCALL SDL_LoadFile(const char *file, size_t *datasize); + +/** + * \name Read endian functions + * + * Read an item of the specified endianness and return in native format. + */ +/* @{ */ + +/** + * Use this function to read a byte from an SDL_RWops. + * + * \param src the SDL_RWops to read from + * \returns the read byte on success or 0 on failure; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteU8 + */ +extern DECLSPEC Uint8 SDLCALL SDL_ReadU8(SDL_RWops * src); + +/** + * Use this function to read 16 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadLE16(SDL_RWops * src); + +/** + * Use this function to read 16 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 16 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE16 + */ +extern DECLSPEC Uint16 SDLCALL SDL_ReadBE16(SDL_RWops * src); + +/** + * Use this function to read 32 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadLE32(SDL_RWops * src); + +/** + * Use this function to read 32 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 32 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE32 + */ +extern DECLSPEC Uint32 SDLCALL SDL_ReadBE32(SDL_RWops * src); + +/** + * Use this function to read 64 bits of little-endian data from an SDL_RWops + * and return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadBE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadLE64(SDL_RWops * src); + +/** + * Use this function to read 64 bits of big-endian data from an SDL_RWops and + * return in native format. + * + * SDL byteswaps the data only if necessary, so the data returned will be in + * the native byte order. + * + * \param src the stream from which to read data + * \returns 64 bits of data in the native byte order of the platform. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadLE64 + */ +extern DECLSPEC Uint64 SDLCALL SDL_ReadBE64(SDL_RWops * src); +/* @} *//* Read endian functions */ + +/** + * \name Write endian functions + * + * Write an item of native format to the specified endianness. + */ +/* @{ */ + +/** + * Use this function to write a byte to an SDL_RWops. + * + * \param dst the SDL_RWops to write to + * \param value the byte value to write + * \returns 1 on success or 0 on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ReadU8 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteU8(SDL_RWops * dst, Uint8 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 16 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE16 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE16(SDL_RWops * dst, Uint16 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 32 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE32 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE32(SDL_RWops * dst, Uint32 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * little-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in little-endian + * format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteBE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteLE64(SDL_RWops * dst, Uint64 value); + +/** + * Use this function to write 64 bits in native format to a SDL_RWops as + * big-endian data. + * + * SDL byteswaps the data only if necessary, so the application always + * specifies native format, and the data written will be in big-endian format. + * + * \param dst the stream to which data will be written + * \param value the data to be written, in native format + * \returns 1 on successful write, 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WriteLE64 + */ +extern DECLSPEC size_t SDLCALL SDL_WriteBE64(SDL_RWops * dst, Uint64 value); +/* @} *//* Write endian functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_rwops_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_scancode.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_scancode.h new file mode 100644 index 0000000..7fd4234 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_scancode.h @@ -0,0 +1,438 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_scancode.h + * + * Defines keyboard scancodes. + */ + +#ifndef SDL_scancode_h_ +#define SDL_scancode_h_ + +#include + +/** + * \brief The SDL keyboard scancode representation. + * + * Values of this type are used to represent keyboard keys, among other places + * in the \link SDL_Keysym::scancode key.keysym.scancode \endlink field of the + * SDL_Event structure. + * + * The values in this enumeration are based on the USB usage page standard: + * https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf + */ +typedef enum +{ + SDL_SCANCODE_UNKNOWN = 0, + + /** + * \name Usage page 0x07 + * + * These values are from usage page 0x07 (USB keyboard page). + */ + /* @{ */ + + SDL_SCANCODE_A = 4, + SDL_SCANCODE_B = 5, + SDL_SCANCODE_C = 6, + SDL_SCANCODE_D = 7, + SDL_SCANCODE_E = 8, + SDL_SCANCODE_F = 9, + SDL_SCANCODE_G = 10, + SDL_SCANCODE_H = 11, + SDL_SCANCODE_I = 12, + SDL_SCANCODE_J = 13, + SDL_SCANCODE_K = 14, + SDL_SCANCODE_L = 15, + SDL_SCANCODE_M = 16, + SDL_SCANCODE_N = 17, + SDL_SCANCODE_O = 18, + SDL_SCANCODE_P = 19, + SDL_SCANCODE_Q = 20, + SDL_SCANCODE_R = 21, + SDL_SCANCODE_S = 22, + SDL_SCANCODE_T = 23, + SDL_SCANCODE_U = 24, + SDL_SCANCODE_V = 25, + SDL_SCANCODE_W = 26, + SDL_SCANCODE_X = 27, + SDL_SCANCODE_Y = 28, + SDL_SCANCODE_Z = 29, + + SDL_SCANCODE_1 = 30, + SDL_SCANCODE_2 = 31, + SDL_SCANCODE_3 = 32, + SDL_SCANCODE_4 = 33, + SDL_SCANCODE_5 = 34, + SDL_SCANCODE_6 = 35, + SDL_SCANCODE_7 = 36, + SDL_SCANCODE_8 = 37, + SDL_SCANCODE_9 = 38, + SDL_SCANCODE_0 = 39, + + SDL_SCANCODE_RETURN = 40, + SDL_SCANCODE_ESCAPE = 41, + SDL_SCANCODE_BACKSPACE = 42, + SDL_SCANCODE_TAB = 43, + SDL_SCANCODE_SPACE = 44, + + SDL_SCANCODE_MINUS = 45, + SDL_SCANCODE_EQUALS = 46, + SDL_SCANCODE_LEFTBRACKET = 47, + SDL_SCANCODE_RIGHTBRACKET = 48, + SDL_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. + */ + SDL_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 SDL_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. + */ + SDL_SCANCODE_SEMICOLON = 51, + SDL_SCANCODE_APOSTROPHE = 52, + SDL_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. + */ + SDL_SCANCODE_COMMA = 54, + SDL_SCANCODE_PERIOD = 55, + SDL_SCANCODE_SLASH = 56, + + SDL_SCANCODE_CAPSLOCK = 57, + + SDL_SCANCODE_F1 = 58, + SDL_SCANCODE_F2 = 59, + SDL_SCANCODE_F3 = 60, + SDL_SCANCODE_F4 = 61, + SDL_SCANCODE_F5 = 62, + SDL_SCANCODE_F6 = 63, + SDL_SCANCODE_F7 = 64, + SDL_SCANCODE_F8 = 65, + SDL_SCANCODE_F9 = 66, + SDL_SCANCODE_F10 = 67, + SDL_SCANCODE_F11 = 68, + SDL_SCANCODE_F12 = 69, + + SDL_SCANCODE_PRINTSCREEN = 70, + SDL_SCANCODE_SCROLLLOCK = 71, + SDL_SCANCODE_PAUSE = 72, + SDL_SCANCODE_INSERT = 73, /**< insert on PC, help on some Mac keyboards (but + does send code 73, not 117) */ + SDL_SCANCODE_HOME = 74, + SDL_SCANCODE_PAGEUP = 75, + SDL_SCANCODE_DELETE = 76, + SDL_SCANCODE_END = 77, + SDL_SCANCODE_PAGEDOWN = 78, + SDL_SCANCODE_RIGHT = 79, + SDL_SCANCODE_LEFT = 80, + SDL_SCANCODE_DOWN = 81, + SDL_SCANCODE_UP = 82, + + SDL_SCANCODE_NUMLOCKCLEAR = 83, /**< num lock on PC, clear on Mac keyboards + */ + SDL_SCANCODE_KP_DIVIDE = 84, + SDL_SCANCODE_KP_MULTIPLY = 85, + SDL_SCANCODE_KP_MINUS = 86, + SDL_SCANCODE_KP_PLUS = 87, + SDL_SCANCODE_KP_ENTER = 88, + SDL_SCANCODE_KP_1 = 89, + SDL_SCANCODE_KP_2 = 90, + SDL_SCANCODE_KP_3 = 91, + SDL_SCANCODE_KP_4 = 92, + SDL_SCANCODE_KP_5 = 93, + SDL_SCANCODE_KP_6 = 94, + SDL_SCANCODE_KP_7 = 95, + SDL_SCANCODE_KP_8 = 96, + SDL_SCANCODE_KP_9 = 97, + SDL_SCANCODE_KP_0 = 98, + SDL_SCANCODE_KP_PERIOD = 99, + + SDL_SCANCODE_NONUSBACKSLASH = 100, /**< This is the additional key that ISO + * keyboards have over ANSI ones, + * located between left shift and Y. + * 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. */ + SDL_SCANCODE_APPLICATION = 101, /**< windows contextual menu, compose */ + SDL_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. */ + SDL_SCANCODE_KP_EQUALS = 103, + SDL_SCANCODE_F13 = 104, + SDL_SCANCODE_F14 = 105, + SDL_SCANCODE_F15 = 106, + SDL_SCANCODE_F16 = 107, + SDL_SCANCODE_F17 = 108, + SDL_SCANCODE_F18 = 109, + SDL_SCANCODE_F19 = 110, + SDL_SCANCODE_F20 = 111, + SDL_SCANCODE_F21 = 112, + SDL_SCANCODE_F22 = 113, + SDL_SCANCODE_F23 = 114, + SDL_SCANCODE_F24 = 115, + SDL_SCANCODE_EXECUTE = 116, + SDL_SCANCODE_HELP = 117, /**< AL Integrated Help Center */ + SDL_SCANCODE_MENU = 118, /**< Menu (show menu) */ + SDL_SCANCODE_SELECT = 119, + SDL_SCANCODE_STOP = 120, /**< AC Stop */ + SDL_SCANCODE_AGAIN = 121, /**< AC Redo/Repeat */ + SDL_SCANCODE_UNDO = 122, /**< AC Undo */ + SDL_SCANCODE_CUT = 123, /**< AC Cut */ + SDL_SCANCODE_COPY = 124, /**< AC Copy */ + SDL_SCANCODE_PASTE = 125, /**< AC Paste */ + SDL_SCANCODE_FIND = 126, /**< AC Find */ + SDL_SCANCODE_MUTE = 127, + SDL_SCANCODE_VOLUMEUP = 128, + SDL_SCANCODE_VOLUMEDOWN = 129, +/* not sure whether there's a reason to enable these */ +/* SDL_SCANCODE_LOCKINGCAPSLOCK = 130, */ +/* SDL_SCANCODE_LOCKINGNUMLOCK = 131, */ +/* SDL_SCANCODE_LOCKINGSCROLLLOCK = 132, */ + SDL_SCANCODE_KP_COMMA = 133, + SDL_SCANCODE_KP_EQUALSAS400 = 134, + + SDL_SCANCODE_INTERNATIONAL1 = 135, /**< used on Asian keyboards, see + footnotes in USB doc */ + SDL_SCANCODE_INTERNATIONAL2 = 136, + SDL_SCANCODE_INTERNATIONAL3 = 137, /**< Yen */ + SDL_SCANCODE_INTERNATIONAL4 = 138, + SDL_SCANCODE_INTERNATIONAL5 = 139, + SDL_SCANCODE_INTERNATIONAL6 = 140, + SDL_SCANCODE_INTERNATIONAL7 = 141, + SDL_SCANCODE_INTERNATIONAL8 = 142, + SDL_SCANCODE_INTERNATIONAL9 = 143, + SDL_SCANCODE_LANG1 = 144, /**< Hangul/English toggle */ + SDL_SCANCODE_LANG2 = 145, /**< Hanja conversion */ + SDL_SCANCODE_LANG3 = 146, /**< Katakana */ + SDL_SCANCODE_LANG4 = 147, /**< Hiragana */ + SDL_SCANCODE_LANG5 = 148, /**< Zenkaku/Hankaku */ + SDL_SCANCODE_LANG6 = 149, /**< reserved */ + SDL_SCANCODE_LANG7 = 150, /**< reserved */ + SDL_SCANCODE_LANG8 = 151, /**< reserved */ + SDL_SCANCODE_LANG9 = 152, /**< reserved */ + + SDL_SCANCODE_ALTERASE = 153, /**< Erase-Eaze */ + SDL_SCANCODE_SYSREQ = 154, + SDL_SCANCODE_CANCEL = 155, /**< AC Cancel */ + SDL_SCANCODE_CLEAR = 156, + SDL_SCANCODE_PRIOR = 157, + SDL_SCANCODE_RETURN2 = 158, + SDL_SCANCODE_SEPARATOR = 159, + SDL_SCANCODE_OUT = 160, + SDL_SCANCODE_OPER = 161, + SDL_SCANCODE_CLEARAGAIN = 162, + SDL_SCANCODE_CRSEL = 163, + SDL_SCANCODE_EXSEL = 164, + + SDL_SCANCODE_KP_00 = 176, + SDL_SCANCODE_KP_000 = 177, + SDL_SCANCODE_THOUSANDSSEPARATOR = 178, + SDL_SCANCODE_DECIMALSEPARATOR = 179, + SDL_SCANCODE_CURRENCYUNIT = 180, + SDL_SCANCODE_CURRENCYSUBUNIT = 181, + SDL_SCANCODE_KP_LEFTPAREN = 182, + SDL_SCANCODE_KP_RIGHTPAREN = 183, + SDL_SCANCODE_KP_LEFTBRACE = 184, + SDL_SCANCODE_KP_RIGHTBRACE = 185, + SDL_SCANCODE_KP_TAB = 186, + SDL_SCANCODE_KP_BACKSPACE = 187, + SDL_SCANCODE_KP_A = 188, + SDL_SCANCODE_KP_B = 189, + SDL_SCANCODE_KP_C = 190, + SDL_SCANCODE_KP_D = 191, + SDL_SCANCODE_KP_E = 192, + SDL_SCANCODE_KP_F = 193, + SDL_SCANCODE_KP_XOR = 194, + SDL_SCANCODE_KP_POWER = 195, + SDL_SCANCODE_KP_PERCENT = 196, + SDL_SCANCODE_KP_LESS = 197, + SDL_SCANCODE_KP_GREATER = 198, + SDL_SCANCODE_KP_AMPERSAND = 199, + SDL_SCANCODE_KP_DBLAMPERSAND = 200, + SDL_SCANCODE_KP_VERTICALBAR = 201, + SDL_SCANCODE_KP_DBLVERTICALBAR = 202, + SDL_SCANCODE_KP_COLON = 203, + SDL_SCANCODE_KP_HASH = 204, + SDL_SCANCODE_KP_SPACE = 205, + SDL_SCANCODE_KP_AT = 206, + SDL_SCANCODE_KP_EXCLAM = 207, + SDL_SCANCODE_KP_MEMSTORE = 208, + SDL_SCANCODE_KP_MEMRECALL = 209, + SDL_SCANCODE_KP_MEMCLEAR = 210, + SDL_SCANCODE_KP_MEMADD = 211, + SDL_SCANCODE_KP_MEMSUBTRACT = 212, + SDL_SCANCODE_KP_MEMMULTIPLY = 213, + SDL_SCANCODE_KP_MEMDIVIDE = 214, + SDL_SCANCODE_KP_PLUSMINUS = 215, + SDL_SCANCODE_KP_CLEAR = 216, + SDL_SCANCODE_KP_CLEARENTRY = 217, + SDL_SCANCODE_KP_BINARY = 218, + SDL_SCANCODE_KP_OCTAL = 219, + SDL_SCANCODE_KP_DECIMAL = 220, + SDL_SCANCODE_KP_HEXADECIMAL = 221, + + SDL_SCANCODE_LCTRL = 224, + SDL_SCANCODE_LSHIFT = 225, + SDL_SCANCODE_LALT = 226, /**< alt, option */ + SDL_SCANCODE_LGUI = 227, /**< windows, command (apple), meta */ + SDL_SCANCODE_RCTRL = 228, + SDL_SCANCODE_RSHIFT = 229, + SDL_SCANCODE_RALT = 230, /**< alt gr, option */ + SDL_SCANCODE_RGUI = 231, /**< windows, command (apple), meta */ + + SDL_SCANCODE_MODE = 257, /**< I'm not sure if this is really not covered + * by any of the above, but since there's a + * special 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). + * See https://usb.org/sites/default/files/hut1_2.pdf + * + * 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. + */ + /* @{ */ + + SDL_SCANCODE_AUDIONEXT = 258, + SDL_SCANCODE_AUDIOPREV = 259, + SDL_SCANCODE_AUDIOSTOP = 260, + SDL_SCANCODE_AUDIOPLAY = 261, + SDL_SCANCODE_AUDIOMUTE = 262, + SDL_SCANCODE_MEDIASELECT = 263, + SDL_SCANCODE_WWW = 264, /**< AL Internet Browser */ + SDL_SCANCODE_MAIL = 265, + SDL_SCANCODE_CALCULATOR = 266, /**< AL Calculator */ + SDL_SCANCODE_COMPUTER = 267, + SDL_SCANCODE_AC_SEARCH = 268, /**< AC Search */ + SDL_SCANCODE_AC_HOME = 269, /**< AC Home */ + SDL_SCANCODE_AC_BACK = 270, /**< AC Back */ + SDL_SCANCODE_AC_FORWARD = 271, /**< AC Forward */ + SDL_SCANCODE_AC_STOP = 272, /**< AC Stop */ + SDL_SCANCODE_AC_REFRESH = 273, /**< AC Refresh */ + SDL_SCANCODE_AC_BOOKMARKS = 274, /**< AC Bookmarks */ + + /* @} *//* Usage page 0x0C */ + + /** + * \name Walther keys + * + * These are values that Christian Walther added (for mac keyboard?). + */ + /* @{ */ + + SDL_SCANCODE_BRIGHTNESSDOWN = 275, + SDL_SCANCODE_BRIGHTNESSUP = 276, + SDL_SCANCODE_DISPLAYSWITCH = 277, /**< display mirroring/dual display + switch, video mode switch */ + SDL_SCANCODE_KBDILLUMTOGGLE = 278, + SDL_SCANCODE_KBDILLUMDOWN = 279, + SDL_SCANCODE_KBDILLUMUP = 280, + SDL_SCANCODE_EJECT = 281, + SDL_SCANCODE_SLEEP = 282, /**< SC System Sleep */ + + SDL_SCANCODE_APP1 = 283, + SDL_SCANCODE_APP2 = 284, + + /* @} *//* Walther keys */ + + /** + * \name Usage page 0x0C (additional media keys) + * + * These values are mapped from usage page 0x0C (USB consumer page). + */ + /* @{ */ + + SDL_SCANCODE_AUDIOREWIND = 285, + SDL_SCANCODE_AUDIOFASTFORWARD = 286, + + /* @} *//* Usage page 0x0C (additional media keys) */ + + /** + * \name Mobile keys + * + * These are values that are often used on mobile phones. + */ + /* @{ */ + + SDL_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. */ + SDL_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. */ + SDL_SCANCODE_CALL = 289, /**< Used for accepting phone calls. */ + SDL_SCANCODE_ENDCALL = 290, /**< Used for rejecting phone calls. */ + + /* @} *//* Mobile keys */ + + /* Add any other keys here. */ + + SDL_NUM_SCANCODES = 512 /**< not a key, just marks the number of scancodes + for array bounds */ +} SDL_Scancode; + +#endif /* SDL_scancode_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_sensor.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_sensor.h new file mode 100644 index 0000000..85129ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_sensor.h @@ -0,0 +1,322 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_sensor.h + * + * Include file for SDL sensor event handling + * + */ + +#ifndef SDL_sensor_h_ +#define SDL_sensor_h_ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +extern "C" { +/* *INDENT-ON* */ +#endif + +/** + * \brief SDL_sensor.h + * + * In order to use these functions, SDL_Init() must have been called + * with the ::SDL_INIT_SENSOR flag. This causes SDL to scan the system + * for sensors, and load appropriate drivers. + */ + +struct _SDL_Sensor; +typedef struct _SDL_Sensor SDL_Sensor; + +/** + * This is a unique ID for a sensor for the time it is connected to the system, + * and is never reused for the lifetime of the application. + * + * The ID value starts at 0 and increments from there. The value -1 is an invalid ID. + */ +typedef Sint32 SDL_SensorID; + +/* The different sensors defined by SDL + * + * Additional sensors may be available, using platform dependent semantics. + * + * Hare are the additional Android sensors: + * https://developer.android.com/reference/android/hardware/SensorEvent.html#values + */ +typedef enum +{ + SDL_SENSOR_INVALID = -1, /**< Returned for an invalid sensor */ + SDL_SENSOR_UNKNOWN, /**< Unknown sensor type */ + SDL_SENSOR_ACCEL, /**< Accelerometer */ + SDL_SENSOR_GYRO, /**< Gyroscope */ + SDL_SENSOR_ACCEL_L, /**< Accelerometer for left Joy-Con controller and Wii nunchuk */ + SDL_SENSOR_GYRO_L, /**< Gyroscope for left Joy-Con controller */ + SDL_SENSOR_ACCEL_R, /**< Accelerometer for right Joy-Con controller */ + SDL_SENSOR_GYRO_R /**< Gyroscope for right Joy-Con controller */ +} SDL_SensorType; + +/** + * Accelerometer sensor + * + * The accelerometer returns the current acceleration in SI meters per + * second squared. This measurement includes the force of gravity, so + * a device at rest will have an value of SDL_STANDARD_GRAVITY away + * from the center of the earth, which is a positive Y value. + * + * values[0]: Acceleration on the x axis + * values[1]: Acceleration on the y axis + * values[2]: Acceleration on the z axis + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ +#define SDL_STANDARD_GRAVITY 9.80665f + +/** + * Gyroscope sensor + * + * The gyroscope returns the current rate of rotation in radians per second. + * The rotation is positive in the counter-clockwise direction. That is, + * an observer looking from a positive location on one of the axes would + * see positive rotation on that axis when it appeared to be rotating + * counter-clockwise. + * + * values[0]: Angular speed around the x axis (pitch) + * values[1]: Angular speed around the y axis (yaw) + * values[2]: Angular speed around the z axis (roll) + * + * For phones held in portrait mode and game controllers held in front of you, + * the axes are defined as follows: + * -X ... +X : left ... right + * -Y ... +Y : bottom ... top + * -Z ... +Z : farther ... closer + * + * The axis data is not changed when the phone or controller is rotated. + * + * \sa SDL_GetDisplayOrientation() + */ + +/* Function prototypes */ + +/** + * Locking for multi-threaded access to the sensor API + * + * If you are using the sensor API or handling events from multiple threads + * you should use these locking functions to protect access to the sensors. + * + * In particular, you are guaranteed that the sensor list won't change, so the + * API functions that take a sensor index will be valid, and sensor events + * will not be delivered. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC void SDLCALL SDL_LockSensors(void); +extern DECLSPEC void SDLCALL SDL_UnlockSensors(void); + +/** + * Count the number of sensors attached to the system right now. + * + * \returns the number of sensors detected. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_NumSensors(void); + +/** + * Get the implementation dependent name of a sensor. + * + * \param device_index The sensor to obtain name from + * \returns the sensor name, or NULL if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetDeviceName(int device_index); + +/** + * Get the type of a sensor. + * + * \param device_index The sensor to get the type from + * \returns the SDL_SensorType, or `SDL_SENSOR_INVALID` if `device_index` is + * out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetDeviceType(int device_index); + +/** + * Get the platform dependent type of a sensor. + * + * \param device_index The sensor to check + * \returns the sensor platform dependent type, or -1 if `device_index` is out + * of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDeviceNonPortableType(int device_index); + +/** + * Get the instance ID of a sensor. + * + * \param device_index The sensor to get instance id from + * \returns the sensor instance ID, or -1 if `device_index` is out of range. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetDeviceInstanceID(int device_index); + +/** + * Open a sensor for use. + * + * \param device_index The sensor to open + * \returns an SDL_Sensor sensor object, or NULL if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorOpen(int device_index); + +/** + * Return the SDL_Sensor associated with an instance id. + * + * \param instance_id The sensor from instance id + * \returns an SDL_Sensor object. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_Sensor *SDLCALL SDL_SensorFromInstanceID(SDL_SensorID instance_id); + +/** + * Get the implementation dependent name of a sensor + * + * \param sensor The SDL_Sensor object + * \returns the sensor name, or NULL if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC const char *SDLCALL SDL_SensorGetName(SDL_Sensor *sensor); + +/** + * Get the type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the SDL_SensorType type, or `SDL_SENSOR_INVALID` if `sensor` is + * NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorType SDLCALL SDL_SensorGetType(SDL_Sensor *sensor); + +/** + * Get the platform dependent type of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor platform dependent type, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetNonPortableType(SDL_Sensor *sensor); + +/** + * Get the instance ID of a sensor. + * + * \param sensor The SDL_Sensor object to inspect + * \returns the sensor instance ID, or -1 if `sensor` is NULL. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_SensorID SDLCALL SDL_SensorGetInstanceID(SDL_Sensor *sensor); + +/** + * Get the current state of an opened sensor. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetData(SDL_Sensor *sensor, float *data, int num_values); + +/** + * Get the current state of an opened sensor with the timestamp of the last + * update. + * + * The number of values and interpretation of the data is sensor dependent. + * + * \param sensor The SDL_Sensor object to query + * \param timestamp A pointer filled with the timestamp in microseconds of the + * current sensor reading if available, or 0 if not + * \param data A pointer filled with the current sensor state + * \param num_values The number of values to write to data + * \returns 0 or -1 if an error occurred. + * + * \since This function is available since SDL 2.26.0. + */ +extern DECLSPEC int SDLCALL SDL_SensorGetDataWithTimestamp(SDL_Sensor *sensor, Uint64 *timestamp, float *data, int num_values); + +/** + * Close a sensor previously opened with SDL_SensorOpen(). + * + * \param sensor The SDL_Sensor object to close + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorClose(SDL_Sensor *sensor); + +/** + * Update the current state of the open sensors. + * + * This is called automatically by the event loop if sensor events are + * enabled. + * + * This needs to be called from the thread that initialized the sensor + * subsystem. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_SensorUpdate(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +/* *INDENT-OFF* */ +} +/* *INDENT-ON* */ +#endif +#include + +#endif /* SDL_sensor_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_shape.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_shape.h new file mode 100644 index 0000000..d23a82a --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_shape.h @@ -0,0 +1,155 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_shape_h_ +#define SDL_shape_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** \file SDL_shape.h + * + * Header file for the shaped window API. + */ + +#define SDL_NONSHAPEABLE_WINDOW -1 +#define SDL_INVALID_SHAPE_ARGUMENT -2 +#define SDL_WINDOW_LACKS_SHAPE -3 + +/** + * Create a window that can be shaped with the specified position, dimensions, + * and flags. + * + * \param title The title of the window, in UTF-8 encoding. + * \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + * ::SDL_WINDOWPOS_UNDEFINED. + * \param w The width of the window. + * \param h The height of the window. + * \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with + * any of the following: ::SDL_WINDOW_OPENGL, + * ::SDL_WINDOW_INPUT_GRABBED, ::SDL_WINDOW_HIDDEN, + * ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + * ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_BORDERLESS is always set, + * and ::SDL_WINDOW_FULLSCREEN is always unset. + * \return the window created, or NULL if window creation failed. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateShapedWindow(const char *title,unsigned int x,unsigned int y,unsigned int w,unsigned int h,Uint32 flags); + +/** + * Return whether the given window is a shaped window. + * + * \param window The window to query for being shaped. + * \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if + * the window is unshaped or NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateShapedWindow + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsShapedWindow(const SDL_Window *window); + +/** \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. */ +typedef enum { + /** \brief The default mode, a binarized alpha cutoff of 1. */ + ShapeModeDefault, + /** \brief A binarized alpha cutoff with a given integer value. */ + ShapeModeBinarizeAlpha, + /** \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. */ + ShapeModeReverseBinarizeAlpha, + /** \brief A color key is applied. */ + ShapeModeColorKey +} WindowShapeMode; + +#define SDL_SHAPEMODEALPHA(mode) (mode == ShapeModeDefault || mode == ShapeModeBinarizeAlpha || mode == ShapeModeReverseBinarizeAlpha) + +/** \brief A union containing parameters for shaped windows. */ +typedef union { + /** \brief A cutoff alpha value for binarization of the window shape's alpha channel. */ + Uint8 binarizationCutoff; + SDL_Color colorKey; +} SDL_WindowShapeParams; + +/** \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. */ +typedef struct SDL_WindowShapeMode { + /** \brief The mode of these window-shape parameters. */ + WindowShapeMode mode; + /** \brief Window-shape parameters. */ + SDL_WindowShapeParams parameters; +} SDL_WindowShapeMode; + +/** + * Set the shape and parameters of a shaped window. + * + * \param window The shaped window whose parameters should be set. + * \param shape A surface encoding the desired shape for the window. + * \param shape_mode The parameters to set for the shaped window. + * \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape + * argument, or SDL_NONSHAPEABLE_WINDOW if the SDL_Window given does + * not reference a valid shaped window. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_GetShapedWindowMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowShape(SDL_Window *window,SDL_Surface *shape,SDL_WindowShapeMode *shape_mode); + +/** + * Get the shape parameters of a shaped window. + * + * \param window The shaped window whose parameters should be retrieved. + * \param shape_mode An empty shape-mode structure to fill, or NULL to check + * whether the window has a shape. + * \return 0 if the window has a shape and, provided shape_mode was not NULL, + * shape_mode has been filled with the mode data, + * SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped + * window, or SDL_WINDOW_LACKS_SHAPE if the SDL_Window given is a + * shapeable window currently lacking a shape. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_WindowShapeMode + * \sa SDL_SetWindowShape + */ +extern DECLSPEC int SDLCALL SDL_GetShapedWindowMode(SDL_Window *window,SDL_WindowShapeMode *shape_mode); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_shape_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h new file mode 100644 index 0000000..f4f7fcc --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_stdinc.h @@ -0,0 +1,838 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_stdinc.h + * + * This is a general header that includes C language support. + */ + +#ifndef SDL_stdinc_h_ +#define SDL_stdinc_h_ + +#include + +#ifdef HAVE_SYS_TYPES_H +#include +#endif +#ifdef HAVE_STDIO_H +#include +#endif +#if defined(STDC_HEADERS) +# include +# include +# include +#else +# if defined(HAVE_STDLIB_H) +# include +# elif defined(HAVE_MALLOC_H) +# include +# endif +# if defined(HAVE_STDDEF_H) +# include +# endif +# if defined(HAVE_STDARG_H) +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined(STDC_HEADERS) && defined(HAVE_MEMORY_H) +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_WCHAR_H +# include +#endif +#if defined(HAVE_INTTYPES_H) +# include +#elif defined(HAVE_STDINT_H) +# include +#endif +#ifdef HAVE_CTYPE_H +# include +#endif +#ifdef HAVE_MATH_H +# if defined(_MSC_VER) +/* Defining _USE_MATH_DEFINES is required to get M_PI to be defined on + Visual Studio. See http://msdn.microsoft.com/en-us/library/4hwaceh6.aspx + for more information. +*/ +# ifndef _USE_MATH_DEFINES +# define _USE_MATH_DEFINES +# endif +# endif +# include +#endif +#ifdef HAVE_FLOAT_H +# include +#endif +#if defined(HAVE_ALLOCA) && !defined(alloca) +# if defined(HAVE_ALLOCA_H) +# include +# elif defined(__GNUC__) +# define alloca __builtin_alloca +# elif defined(_MSC_VER) +# include +# define alloca _alloca +# elif defined(__WATCOMC__) +# include +# elif defined(__BORLANDC__) +# include +# elif defined(__DMC__) +# include +# elif defined(__AIX__) +#pragma alloca +# elif defined(__MRC__) +void *alloca(unsigned); +# else +char *alloca(); +# endif +#endif + +#ifdef SIZE_MAX +# define SDL_SIZE_MAX SIZE_MAX +#else +# define SDL_SIZE_MAX ((size_t) -1) +#endif + +/** + * Check if the compiler supports a given builtin. + * Supported by virtually all clang versions and recent gcc. Use this + * instead of checking the clang version if possible. + */ +#ifdef __has_builtin +#define _SDL_HAS_BUILTIN(x) __has_builtin(x) +#else +#define _SDL_HAS_BUILTIN(x) 0 +#endif + +/** + * The number of elements in an array. + */ +#define SDL_arraysize(array) (sizeof(array)/sizeof(array[0])) +#define SDL_TABLESIZE(table) SDL_arraysize(table) + +/** + * Macro useful for building other macros with strings in them + * + * e.g. #define LOG_ERROR(X) OutputDebugString(SDL_STRINGIFY_ARG(__FUNCTION__) ": " X "\n") + */ +#define SDL_STRINGIFY_ARG(arg) #arg + +/** + * \name Cast operators + * + * Use proper C++ casts when compiled as C++ to be compatible with the option + * -Wold-style-cast of GCC (and -Werror=old-style-cast in GCC 4.2 and above). + */ +/* @{ */ +#ifdef __cplusplus +#define SDL_reinterpret_cast(type, expression) reinterpret_cast(expression) +#define SDL_static_cast(type, expression) static_cast(expression) +#define SDL_const_cast(type, expression) const_cast(expression) +#else +#define SDL_reinterpret_cast(type, expression) ((type)(expression)) +#define SDL_static_cast(type, expression) ((type)(expression)) +#define SDL_const_cast(type, expression) ((type)(expression)) +#endif +/* @} *//* Cast operators */ + +/* Define a four character code as a Uint32 */ +#define SDL_FOURCC(A, B, C, D) \ + ((SDL_static_cast(Uint32, SDL_static_cast(Uint8, (A))) << 0) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (B))) << 8) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (C))) << 16) | \ + (SDL_static_cast(Uint32, SDL_static_cast(Uint8, (D))) << 24)) + +/** + * \name Basic data types + */ +/* @{ */ + +#ifdef __CC_ARM +/* ARM's compiler throws warnings if we use an enum: like "SDL_bool x = a < b;" */ +#define SDL_FALSE 0 +#define SDL_TRUE 1 +typedef int SDL_bool; +#else +typedef enum +{ + SDL_FALSE = 0, + SDL_TRUE = 1 +} SDL_bool; +#endif + +/** + * \brief A signed 8-bit integer type. + */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ +typedef int8_t Sint8; +/** + * \brief An unsigned 8-bit integer type. + */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ +typedef uint8_t Uint8; +/** + * \brief A signed 16-bit integer type. + */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ +typedef int16_t Sint16; +/** + * \brief An unsigned 16-bit integer type. + */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ +typedef uint16_t Uint16; +/** + * \brief A signed 32-bit integer type. + */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ +typedef int32_t Sint32; +/** + * \brief An unsigned 32-bit integer type. + */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ +typedef uint32_t Uint32; + +/** + * \brief A signed 64-bit integer type. + */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ +typedef int64_t Sint64; +/** + * \brief An unsigned 64-bit integer type. + */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ +typedef uint64_t Uint64; + +/* @} *//* Basic data types */ + +/** + * \name Floating-point constants + */ +/* @{ */ + +#ifdef FLT_EPSILON +#define SDL_FLT_EPSILON FLT_EPSILON +#else +#define SDL_FLT_EPSILON 1.1920928955078125e-07F /* 0x0.000002p0 */ +#endif + +/* @} *//* Floating-point constants */ + +/* Make sure we have macros for printing width-based integers. + * should define these but this is not true all platforms. + * (for example win32) */ +#ifndef SDL_PRIs64 +#ifdef PRIs64 +#define SDL_PRIs64 PRIs64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIs64 "I64d" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIs64 "ld" +#else +#define SDL_PRIs64 "lld" +#endif +#endif +#ifndef SDL_PRIu64 +#ifdef PRIu64 +#define SDL_PRIu64 PRIu64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIu64 "I64u" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIu64 "lu" +#else +#define SDL_PRIu64 "llu" +#endif +#endif +#ifndef SDL_PRIx64 +#ifdef PRIx64 +#define SDL_PRIx64 PRIx64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIx64 "I64x" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIx64 "lx" +#else +#define SDL_PRIx64 "llx" +#endif +#endif +#ifndef SDL_PRIX64 +#ifdef PRIX64 +#define SDL_PRIX64 PRIX64 +#elif defined(__WIN32__) || defined(__GDK__) +#define SDL_PRIX64 "I64X" +#elif defined(__LINUX__) && defined(__LP64__) +#define SDL_PRIX64 "lX" +#else +#define SDL_PRIX64 "llX" +#endif +#endif +#ifndef SDL_PRIs32 +#ifdef PRId32 +#define SDL_PRIs32 PRId32 +#else +#define SDL_PRIs32 "d" +#endif +#endif +#ifndef SDL_PRIu32 +#ifdef PRIu32 +#define SDL_PRIu32 PRIu32 +#else +#define SDL_PRIu32 "u" +#endif +#endif +#ifndef SDL_PRIx32 +#ifdef PRIx32 +#define SDL_PRIx32 PRIx32 +#else +#define SDL_PRIx32 "x" +#endif +#endif +#ifndef SDL_PRIX32 +#ifdef PRIX32 +#define SDL_PRIX32 PRIX32 +#else +#define SDL_PRIX32 "X" +#endif +#endif + +/* Annotations to help code analysis tools */ +#ifdef SDL_DISABLE_ANALYZE_MACROS +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#else +#if defined(_MSC_VER) && (_MSC_VER >= 1600) /* VS 2010 and above */ +#include + +#define SDL_IN_BYTECAP(x) _In_bytecount_(x) +#define SDL_INOUT_Z_CAP(x) _Inout_z_cap_(x) +#define SDL_OUT_Z_CAP(x) _Out_z_cap_(x) +#define SDL_OUT_CAP(x) _Out_cap_(x) +#define SDL_OUT_BYTECAP(x) _Out_bytecap_(x) +#define SDL_OUT_Z_BYTECAP(x) _Out_z_bytecap_(x) + +#define SDL_PRINTF_FORMAT_STRING _Printf_format_string_ +#define SDL_SCANF_FORMAT_STRING _Scanf_format_string_impl_ +#else +#define SDL_IN_BYTECAP(x) +#define SDL_INOUT_Z_CAP(x) +#define SDL_OUT_Z_CAP(x) +#define SDL_OUT_CAP(x) +#define SDL_OUT_BYTECAP(x) +#define SDL_OUT_Z_BYTECAP(x) +#define SDL_PRINTF_FORMAT_STRING +#define SDL_SCANF_FORMAT_STRING +#endif +#if defined(__GNUC__) +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __printf__, fmtargnumber, fmtargnumber+1 ))) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) __attribute__ (( format( __scanf__, fmtargnumber, fmtargnumber+1 ))) +#else +#define SDL_PRINTF_VARARG_FUNC( fmtargnumber ) +#define SDL_SCANF_VARARG_FUNC( fmtargnumber ) +#endif +#endif /* SDL_DISABLE_ANALYZE_MACROS */ + +#ifndef SDL_COMPILE_TIME_ASSERT +#if defined(__cplusplus) +#if (__cplusplus >= 201103L) +#define SDL_COMPILE_TIME_ASSERT(name, x) static_assert(x, #x) +#endif +#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 201112L) +#define SDL_COMPILE_TIME_ASSERT(name, x) _Static_assert(x, #x) +#endif +#endif /* !SDL_COMPILE_TIME_ASSERT */ + +#ifndef SDL_COMPILE_TIME_ASSERT +/* universal, but may trigger -Wunused-local-typedefs */ +#define SDL_COMPILE_TIME_ASSERT(name, x) \ + typedef int SDL_compile_time_assert_ ## name[(x) * 2 - 1] +#endif + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +SDL_COMPILE_TIME_ASSERT(uint8, sizeof(Uint8) == 1); +SDL_COMPILE_TIME_ASSERT(sint8, sizeof(Sint8) == 1); +SDL_COMPILE_TIME_ASSERT(uint16, sizeof(Uint16) == 2); +SDL_COMPILE_TIME_ASSERT(sint16, sizeof(Sint16) == 2); +SDL_COMPILE_TIME_ASSERT(uint32, sizeof(Uint32) == 4); +SDL_COMPILE_TIME_ASSERT(sint32, sizeof(Sint32) == 4); +SDL_COMPILE_TIME_ASSERT(uint64, sizeof(Uint64) == 8); +SDL_COMPILE_TIME_ASSERT(sint64, sizeof(Sint64) == 8); +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +/* Check to make sure enums are the size of ints, for structure packing. + For both Watcom C/C++ and Borland C/C++ the compiler option that makes + enums having the size of an int must be enabled. + This is "-b" for Borland C/C++ and "-ei" for Watcom C/C++ (v11). +*/ + +/** \cond */ +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#if !defined(__ANDROID__) && !defined(__VITA__) && !defined(__3DS__) + /* TODO: include/SDL_stdinc.h:174: error: size of array 'SDL_dummy_enum' is negative */ +typedef enum +{ + DUMMY_ENUM_VALUE +} SDL_DUMMY_ENUM; + +SDL_COMPILE_TIME_ASSERT(enum, sizeof(SDL_DUMMY_ENUM) == sizeof(int)); +#endif +#endif /* DOXYGEN_SHOULD_IGNORE_THIS */ +/** \endcond */ + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef HAVE_ALLOCA +#define SDL_stack_alloc(type, count) (type*)alloca(sizeof(type)*(count)) +#define SDL_stack_free(data) +#else +#define SDL_stack_alloc(type, count) (type*)SDL_malloc(sizeof(type)*(count)) +#define SDL_stack_free(data) SDL_free(data) +#endif + +extern DECLSPEC void *SDLCALL SDL_malloc(size_t size); +extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); +extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); +extern DECLSPEC void SDLCALL SDL_free(void *mem); + +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * Get the original set of SDL memory functions + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC void SDLCALL SDL_GetOriginalMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Get the current set of SDL memory functions + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * Replace SDL's memory allocation functions with a custom set + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * Get the number of outstanding (unfreed) allocations + * + * \since This function is available since SDL 2.0.7. + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + +extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); +extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); + +extern DECLSPEC void SDLCALL SDL_qsort(void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); +extern DECLSPEC void * SDLCALL SDL_bsearch(const void *key, const void *base, size_t nmemb, size_t size, int (SDLCALL *compare) (const void *, const void *)); + +extern DECLSPEC int SDLCALL SDL_abs(int x); + +/* NOTE: these double-evaluate their arguments, so you should never have side effects in the parameters */ +#define SDL_min(x, y) (((x) < (y)) ? (x) : (y)) +#define SDL_max(x, y) (((x) > (y)) ? (x) : (y)) +#define SDL_clamp(x, a, b) (((x) < (a)) ? (a) : (((x) > (b)) ? (b) : (x))) + +extern DECLSPEC int SDLCALL SDL_isalpha(int x); +extern DECLSPEC int SDLCALL SDL_isalnum(int x); +extern DECLSPEC int SDLCALL SDL_isblank(int x); +extern DECLSPEC int SDLCALL SDL_iscntrl(int x); +extern DECLSPEC int SDLCALL SDL_isdigit(int x); +extern DECLSPEC int SDLCALL SDL_isxdigit(int x); +extern DECLSPEC int SDLCALL SDL_ispunct(int x); +extern DECLSPEC int SDLCALL SDL_isspace(int x); +extern DECLSPEC int SDLCALL SDL_isupper(int x); +extern DECLSPEC int SDLCALL SDL_islower(int x); +extern DECLSPEC int SDLCALL SDL_isprint(int x); +extern DECLSPEC int SDLCALL SDL_isgraph(int x); +extern DECLSPEC int SDLCALL SDL_toupper(int x); +extern DECLSPEC int SDLCALL SDL_tolower(int x); + +extern DECLSPEC Uint16 SDLCALL SDL_crc16(Uint16 crc, const void *data, size_t len); +extern DECLSPEC Uint32 SDLCALL SDL_crc32(Uint32 crc, const void *data, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memset(SDL_OUT_BYTECAP(len) void *dst, int c, size_t len); + +#define SDL_zero(x) SDL_memset(&(x), 0, sizeof((x))) +#define SDL_zerop(x) SDL_memset((x), 0, sizeof(*(x))) +#define SDL_zeroa(x) SDL_memset((x), 0, sizeof((x))) + +#define SDL_copyp(dst, src) \ + { SDL_COMPILE_TIME_ASSERT(SDL_copyp, sizeof (*(dst)) == sizeof (*(src))); } \ + SDL_memcpy((dst), (src), sizeof (*(src))) + + +/* Note that memset() is a byte assignment and this is a 32-bit assignment, so they're not directly equivalent. */ +SDL_FORCE_INLINE void SDL_memset4(void *dst, Uint32 val, size_t dwords) +{ +#if defined(__GNUC__) && defined(__i386__) + int u0, u1, u2; + __asm__ __volatile__ ( + "cld \n\t" + "rep ; stosl \n\t" + : "=&D" (u0), "=&a" (u1), "=&c" (u2) + : "0" (dst), "1" (val), "2" (SDL_static_cast(Uint32, dwords)) + : "memory" + ); +#else + size_t _n = (dwords + 3) / 4; + Uint32 *_p = SDL_static_cast(Uint32 *, dst); + Uint32 _val = (val); + if (dwords == 0) { + return; + } + switch (dwords % 4) { + case 0: do { *_p++ = _val; SDL_FALLTHROUGH; + case 3: *_p++ = _val; SDL_FALLTHROUGH; + case 2: *_p++ = _val; SDL_FALLTHROUGH; + case 1: *_p++ = _val; + } while ( --_n ); + } +#endif +} + +extern DECLSPEC void *SDLCALL SDL_memcpy(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); + +extern DECLSPEC void *SDLCALL SDL_memmove(SDL_OUT_BYTECAP(len) void *dst, SDL_IN_BYTECAP(len) const void *src, size_t len); +extern DECLSPEC int SDLCALL SDL_memcmp(const void *s1, const void *s2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_wcslen(const wchar_t *wstr); +extern DECLSPEC size_t SDLCALL SDL_wcslcpy(SDL_OUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_wcslcat(SDL_INOUT_Z_CAP(maxlen) wchar_t *dst, const wchar_t *src, size_t maxlen); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsdup(const wchar_t *wstr); +extern DECLSPEC wchar_t *SDLCALL SDL_wcsstr(const wchar_t *haystack, const wchar_t *needle); + +extern DECLSPEC int SDLCALL SDL_wcscmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncmp(const wchar_t *str1, const wchar_t *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_wcscasecmp(const wchar_t *str1, const wchar_t *str2); +extern DECLSPEC int SDLCALL SDL_wcsncasecmp(const wchar_t *str1, const wchar_t *str2, size_t len); + +extern DECLSPEC size_t SDLCALL SDL_strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_strlcpy(SDL_OUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC size_t SDLCALL SDL_utf8strlcpy(SDL_OUT_Z_CAP(dst_bytes) char *dst, const char *src, size_t dst_bytes); +extern DECLSPEC size_t SDLCALL SDL_strlcat(SDL_INOUT_Z_CAP(maxlen) char *dst, const char *src, size_t maxlen); +extern DECLSPEC char *SDLCALL SDL_strdup(const char *str); +extern DECLSPEC char *SDLCALL SDL_strrev(char *str); +extern DECLSPEC char *SDLCALL SDL_strupr(char *str); +extern DECLSPEC char *SDLCALL SDL_strlwr(char *str); +extern DECLSPEC char *SDLCALL SDL_strchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strrchr(const char *str, int c); +extern DECLSPEC char *SDLCALL SDL_strstr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strcasestr(const char *haystack, const char *needle); +extern DECLSPEC char *SDLCALL SDL_strtokr(char *s1, const char *s2, char **saveptr); +extern DECLSPEC size_t SDLCALL SDL_utf8strlen(const char *str); +extern DECLSPEC size_t SDLCALL SDL_utf8strnlen(const char *str, size_t bytes); + +extern DECLSPEC char *SDLCALL SDL_itoa(int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_uitoa(unsigned int value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ltoa(long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ultoa(unsigned long value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_lltoa(Sint64 value, char *str, int radix); +extern DECLSPEC char *SDLCALL SDL_ulltoa(Uint64 value, char *str, int radix); + +extern DECLSPEC int SDLCALL SDL_atoi(const char *str); +extern DECLSPEC double SDLCALL SDL_atof(const char *str); +extern DECLSPEC long SDLCALL SDL_strtol(const char *str, char **endp, int base); +extern DECLSPEC unsigned long SDLCALL SDL_strtoul(const char *str, char **endp, int base); +extern DECLSPEC Sint64 SDLCALL SDL_strtoll(const char *str, char **endp, int base); +extern DECLSPEC Uint64 SDLCALL SDL_strtoull(const char *str, char **endp, int base); +extern DECLSPEC double SDLCALL SDL_strtod(const char *str, char **endp); + +extern DECLSPEC int SDLCALL SDL_strcmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncmp(const char *str1, const char *str2, size_t maxlen); +extern DECLSPEC int SDLCALL SDL_strcasecmp(const char *str1, const char *str2); +extern DECLSPEC int SDLCALL SDL_strncasecmp(const char *str1, const char *str2, size_t len); + +extern DECLSPEC int SDLCALL SDL_sscanf(const char *text, SDL_SCANF_FORMAT_STRING const char *fmt, ...) SDL_SCANF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vsscanf(const char *text, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_snprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, SDL_PRINTF_FORMAT_STRING const char *fmt, ... ) SDL_PRINTF_VARARG_FUNC(3); +extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size_t maxlen, const char *fmt, va_list ap); +extern DECLSPEC int SDLCALL SDL_asprintf(char **strp, SDL_PRINTF_FORMAT_STRING const char *fmt, ...) SDL_PRINTF_VARARG_FUNC(2); +extern DECLSPEC int SDLCALL SDL_vasprintf(char **strp, const char *fmt, va_list ap); + +#ifndef HAVE_M_PI +#ifndef M_PI +#define M_PI 3.14159265358979323846264338327950288 /**< pi */ +#endif +#endif + +/** + * Use this function to compute arc cosine of `x`. + * + * The definition of `y = acos(x)` is `x = cos(y)`. + * + * Domain: `-1 <= x <= 1` + * + * Range: `0 <= y <= Pi` + * + * \param x floating point value, in radians. + * \returns arc cosine of `x`. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); +extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); +extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); +extern DECLSPEC double SDLCALL SDL_atan2(double y, double x); +extern DECLSPEC float SDLCALL SDL_atan2f(float y, float x); +extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); +extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); +extern DECLSPEC double SDLCALL SDL_cos(double x); +extern DECLSPEC float SDLCALL SDL_cosf(float x); +extern DECLSPEC double SDLCALL SDL_exp(double x); +extern DECLSPEC float SDLCALL SDL_expf(float x); +extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); +extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_trunc(double x); +extern DECLSPEC float SDLCALL SDL_truncf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); +extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); +extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); +extern DECLSPEC double SDLCALL SDL_round(double x); +extern DECLSPEC float SDLCALL SDL_roundf(float x); +extern DECLSPEC long SDLCALL SDL_lround(double x); +extern DECLSPEC long SDLCALL SDL_lroundf(float x); +extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); +extern DECLSPEC double SDLCALL SDL_sin(double x); +extern DECLSPEC float SDLCALL SDL_sinf(float x); +extern DECLSPEC double SDLCALL SDL_sqrt(double x); +extern DECLSPEC float SDLCALL SDL_sqrtf(float x); +extern DECLSPEC double SDLCALL SDL_tan(double x); +extern DECLSPEC float SDLCALL SDL_tanf(float x); + +/* The SDL implementation of iconv() returns these error codes */ +#define SDL_ICONV_ERROR (size_t)-1 +#define SDL_ICONV_E2BIG (size_t)-2 +#define SDL_ICONV_EILSEQ (size_t)-3 +#define SDL_ICONV_EINVAL (size_t)-4 + +/* SDL_iconv_* are now always real symbols/types, not macros or inlined. */ +typedef struct _SDL_iconv_t *SDL_iconv_t; +extern DECLSPEC SDL_iconv_t SDLCALL SDL_iconv_open(const char *tocode, + const char *fromcode); +extern DECLSPEC int SDLCALL SDL_iconv_close(SDL_iconv_t cd); +extern DECLSPEC size_t SDLCALL SDL_iconv(SDL_iconv_t cd, const char **inbuf, + size_t * inbytesleft, char **outbuf, + size_t * outbytesleft); + +/** + * This function converts a buffer or string between encodings in one pass, returning a + * string that must be freed with SDL_free() or NULL on error. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC char *SDLCALL SDL_iconv_string(const char *tocode, + const char *fromcode, + const char *inbuf, + size_t inbytesleft); +#define SDL_iconv_utf8_locale(S) SDL_iconv_string("", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs2(S) (Uint16 *)SDL_iconv_string("UCS-2-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_utf8_ucs4(S) (Uint32 *)SDL_iconv_string("UCS-4-INTERNAL", "UTF-8", S, SDL_strlen(S)+1) +#define SDL_iconv_wchar_utf8(S) SDL_iconv_string("UTF-8", "WCHAR_T", (char *)S, (SDL_wcslen(S)+1)*sizeof(wchar_t)) + +/* force builds using Clang's static analysis tools to use literal C runtime + here, since there are possibly tests that are ineffective otherwise. */ +#if defined(__clang_analyzer__) && !defined(SDL_DISABLE_ANALYZE_MACROS) + +/* The analyzer knows about strlcpy even when the system doesn't provide it */ +#ifndef HAVE_STRLCPY +size_t strlcpy(char* dst, const char* src, size_t size); +#endif + +/* The analyzer knows about strlcat even when the system doesn't provide it */ +#ifndef HAVE_STRLCAT +size_t strlcat(char* dst, const char* src, size_t size); +#endif + +#ifndef HAVE_WCSLCPY +size_t wcslcpy(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +#ifndef HAVE_WCSLCAT +size_t wcslcat(wchar_t *dst, const wchar_t *src, size_t size); +#endif + +/* Starting LLVM 16, the analyser errors out if these functions do not have + their prototype defined (clang-diagnostic-implicit-function-declaration) */ +#include +#include +#include + +#define SDL_malloc malloc +#define SDL_calloc calloc +#define SDL_realloc realloc +#define SDL_free free +#define SDL_memset memset +#define SDL_memcpy memcpy +#define SDL_memmove memmove +#define SDL_memcmp memcmp +#define SDL_strlcpy strlcpy +#define SDL_strlcat strlcat +#define SDL_strlen strlen +#define SDL_wcslen wcslen +#define SDL_wcslcpy wcslcpy +#define SDL_wcslcat wcslcat +#define SDL_strdup strdup +#define SDL_wcsdup wcsdup +#define SDL_strchr strchr +#define SDL_strrchr strrchr +#define SDL_strstr strstr +#define SDL_wcsstr wcsstr +#define SDL_strtokr strtok_r +#define SDL_strcmp strcmp +#define SDL_wcscmp wcscmp +#define SDL_strncmp strncmp +#define SDL_wcsncmp wcsncmp +#define SDL_strcasecmp strcasecmp +#define SDL_strncasecmp strncasecmp +#define SDL_sscanf sscanf +#define SDL_vsscanf vsscanf +#define SDL_snprintf snprintf +#define SDL_vsnprintf vsnprintf +#endif + +SDL_FORCE_INLINE void *SDL_memcpy4(SDL_OUT_BYTECAP(dwords*4) void *dst, SDL_IN_BYTECAP(dwords*4) const void *src, size_t dwords) +{ + return SDL_memcpy(dst, src, dwords * 4); +} + +/** + * If a * b would overflow, return -1. Otherwise store a * b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_mul_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (a != 0 && b > SDL_SIZE_MAX / a) { + return -1; + } + *ret = a * b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_mul_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * because __builtin_mul_overflow() is type-generic, but we want to be + * consistent about interpreting a and b as size_t. */ +SDL_FORCE_INLINE int _SDL_size_mul_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_mul_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_mul_overflow(a, b, ret) (_SDL_size_mul_overflow_builtin(a, b, ret)) +#endif + +/** + * If a + b would overflow, return -1. Otherwise store a + b via ret + * and return 0. + * + * \since This function is available since SDL 2.24.0. + */ +SDL_FORCE_INLINE int SDL_size_add_overflow (size_t a, + size_t b, + size_t *ret) +{ + if (b > SDL_SIZE_MAX - a) { + return -1; + } + *ret = a + b; + return 0; +} + +#if _SDL_HAS_BUILTIN(__builtin_add_overflow) +/* This needs to be wrapped in an inline rather than being a direct #define, + * the same as the call to __builtin_mul_overflow() above. */ +SDL_FORCE_INLINE int _SDL_size_add_overflow_builtin (size_t a, + size_t b, + size_t *ret) +{ + return __builtin_add_overflow(a, b, ret) == 0 ? 0 : -1; +} +#define SDL_size_add_overflow(a, b, ret) (_SDL_size_add_overflow_builtin(a, b, ret)) +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_stdinc_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_surface.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_surface.h new file mode 100644 index 0000000..5af1052 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_surface.h @@ -0,0 +1,997 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_surface.h + * + * Header file for ::SDL_Surface definition and management functions. + */ + +#ifndef SDL_surface_h_ +#define SDL_surface_h_ + +#include +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \name Surface flags + * + * These are the currently supported flags for the ::SDL_Surface. + * + * \internal + * Used internally (read-only). + */ +/* @{ */ +#define SDL_SWSURFACE 0 /**< Just here for compatibility */ +#define SDL_PREALLOC 0x00000001 /**< Surface uses preallocated memory */ +#define SDL_RLEACCEL 0x00000002 /**< Surface is RLE encoded */ +#define SDL_DONTFREE 0x00000004 /**< Surface is referenced internally */ +#define SDL_SIMD_ALIGNED 0x00000008 /**< Surface uses aligned memory */ +/* @} *//* Surface flags */ + +/** + * Evaluates to true if the surface needs to be locked before access. + */ +#define SDL_MUSTLOCK(S) (((S)->flags & SDL_RLEACCEL) != 0) + +typedef struct SDL_BlitMap SDL_BlitMap; /* this is an opaque type. */ + +/** + * \brief A collection of pixels used in software blitting. + * + * \note This structure should be treated as read-only, except for \c pixels, + * which, if not NULL, contains the raw pixel data for the surface. + */ +typedef struct SDL_Surface +{ + Uint32 flags; /**< Read-only */ + SDL_PixelFormat *format; /**< Read-only */ + int w, h; /**< Read-only */ + int pitch; /**< Read-only */ + void *pixels; /**< Read-write */ + + /** Application data associated with the surface */ + void *userdata; /**< Read-write */ + + /** information needed for surfaces requiring locks */ + int locked; /**< Read-only */ + + /** list of BlitMap that hold a reference to this surface */ + void *list_blitmap; /**< Private */ + + /** clipping information */ + SDL_Rect clip_rect; /**< Read-only */ + + /** info for fast blit mapping to other surfaces */ + SDL_BlitMap *map; /**< Private */ + + /** Reference count -- used when freeing surface */ + int refcount; /**< Read-mostly */ +} SDL_Surface; + +/** + * \brief The type of function used for surface blitting functions. + */ +typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, + struct SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + +/** + * Allocate a new RGB surface. + * + * If `depth` is 4 or 8 bits, an empty palette is allocated for the surface. + * If `depth` is greater than 8 bits, the pixel format is set using the + * [RGBA]mask parameters. + * + * The [RGBA]mask parameters are the bitmasks used to extract that color from + * a pixel. For instance, `Rmask` being 0xFF000000 means the red data is + * stored in the most significant byte. Using zeros for the RGB masks sets a + * default value, based on the depth. For example: + * + * ```c++ + * SDL_CreateRGBSurface(0,w,h,32,0,0,0,0); + * ``` + * + * However, using zero for the Amask results in an Amask of 0. + * + * By default surfaces with an alpha mask are set up for blending as with: + * + * ```c++ + * SDL_SetSurfaceBlendMode(surface, SDL_BLENDMODE_BLEND) + * ``` + * + * You can change this by calling SDL_SetSurfaceBlendMode() and selecting a + * different `blendMode`. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurface + (Uint32 flags, int width, int height, int depth, + Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask); + + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with a specific pixel format. + * + * This function operates mostly like SDL_CreateRGBSurface(), except instead + * of providing pixel color masks, you provide it with a predefined format + * from SDL_PixelFormatEnum. + * + * \param flags the flags are unused and should be set to 0 + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormat + (Uint32 flags, int width, int height, int depth, Uint32 format); + +/** + * Allocate a new RGB surface with existing pixel data. + * + * This function operates mostly like SDL_CreateRGBSurface(), except it does + * not allocate memory for the pixel data, instead the caller provides an + * existing buffer of data for the surface to use. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param Rmask the red mask for the pixels + * \param Gmask the green mask for the pixels + * \param Bmask the blue mask for the pixels + * \param Amask the alpha mask for the pixels + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceFrom(void *pixels, + int width, + int height, + int depth, + int pitch, + Uint32 Rmask, + Uint32 Gmask, + Uint32 Bmask, + Uint32 Amask); + +/* !!! FIXME for 2.1: why does this ask for depth? Format provides that. */ + +/** + * Allocate a new RGB surface with with a specific pixel format and existing + * pixel data. + * + * This function operates mostly like SDL_CreateRGBSurfaceFrom(), except + * instead of providing pixel color masks, you provide it with a predefined + * format from SDL_PixelFormatEnum. + * + * No copy is made of the pixel data. Pixel data is not managed automatically; + * you must free the surface before you free the pixel data. + * + * \param pixels a pointer to existing pixel data + * \param width the width of the surface + * \param height the height of the surface + * \param depth the depth of the surface in bits + * \param pitch the pitch of the surface in bytes + * \param format the SDL_PixelFormatEnum for the new surface's pixel format. + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_CreateRGBSurfaceWithFormat + * \sa SDL_FreeSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_CreateRGBSurfaceWithFormatFrom + (void *pixels, int width, int height, int depth, int pitch, Uint32 format); + +/** + * Free an RGB surface. + * + * It is safe to pass NULL to this function. + * + * \param surface the SDL_Surface to free. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateRGBSurface + * \sa SDL_CreateRGBSurfaceFrom + * \sa SDL_LoadBMP + * \sa SDL_LoadBMP_RW + */ +extern DECLSPEC void SDLCALL SDL_FreeSurface(SDL_Surface * surface); + +/** + * Set the palette used by a surface. + * + * A single palette can be shared with many surfaces. + * + * \param surface the SDL_Surface structure to update + * \param palette the SDL_Palette structure to use + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetSurfacePalette(SDL_Surface * surface, + SDL_Palette * palette); + +/** + * Set up a surface for directly accessing the pixels. + * + * Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write to + * and read from `surface->pixels`, using the pixel format stored in + * `surface->format`. Once you are done accessing the surface, you should use + * SDL_UnlockSurface() to release it. + * + * Not all surfaces require locking. If `SDL_MUSTLOCK(surface)` evaluates to + * 0, then you can read and write to the surface at any time, and the pixel + * format of the surface will not change. + * + * \param surface the SDL_Surface structure to be locked + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MUSTLOCK + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_LockSurface(SDL_Surface * surface); + +/** + * Release a surface after directly accessing the pixels. + * + * \param surface the SDL_Surface structure to be unlocked + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LockSurface + */ +extern DECLSPEC void SDLCALL SDL_UnlockSurface(SDL_Surface * surface); + +/** + * Load a BMP image from a seekable SDL data stream. + * + * The new surface should be freed with SDL_FreeSurface(). Not doing so will + * result in a memory leak. + * + * src is an open SDL_RWops buffer, typically loaded with SDL_RWFromFile. + * Alternitavely, you might also use the macro SDL_LoadBMP to load a bitmap + * from a file, convert it to an SDL_Surface and then close the file. + * + * \param src the data stream for the surface + * \param freesrc non-zero to close the stream after being read + * \returns a pointer to a new SDL_Surface structure or NULL if there was an + * error; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FreeSurface + * \sa SDL_RWFromFile + * \sa SDL_LoadBMP + * \sa SDL_SaveBMP_RW + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_LoadBMP_RW(SDL_RWops * src, + int freesrc); + +/** + * Load a surface from a file. + * + * Convenience macro. + */ +#define SDL_LoadBMP(file) SDL_LoadBMP_RW(SDL_RWFromFile(file, "rb"), 1) + +/** + * Save a surface to a seekable SDL data stream in BMP format. + * + * Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + * BMP directly. Other RGB formats with 8-bit or higher get converted to a + * 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + * surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + * not supported. + * + * \param surface the SDL_Surface structure containing the image to be saved + * \param dst a data stream to save to + * \param freedst non-zero to close the stream after being written + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_LoadBMP_RW + * \sa SDL_SaveBMP + */ +extern DECLSPEC int SDLCALL SDL_SaveBMP_RW + (SDL_Surface * surface, SDL_RWops * dst, int freedst); + +/** + * Save a surface to a file. + * + * Convenience macro. + */ +#define SDL_SaveBMP(surface, file) \ + SDL_SaveBMP_RW(surface, SDL_RWFromFile(file, "wb"), 1) + +/** + * Set the RLE acceleration hint for a surface. + * + * If RLE is enabled, color key and alpha blending blits are much faster, but + * the surface must be locked before directly accessing the pixels. + * + * \param surface the SDL_Surface structure to optimize + * \param flag 0 to disable, non-zero to enable RLE acceleration + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_LockSurface + * \sa SDL_UnlockSurface + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceRLE(SDL_Surface * surface, + int flag); + +/** + * Returns whether the surface is RLE enabled + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \returns SDL_TRUE if the surface is RLE enabled, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + * + * \sa SDL_SetSurfaceRLE + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasSurfaceRLE(SDL_Surface * surface); + +/** + * Set the color key (transparent pixel) in a surface. + * + * The color key defines a pixel value that will be treated as transparent in + * a blit. For example, one can use this to specify that cyan pixels should be + * considered transparent, and therefore not rendered. + * + * It is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * RLE acceleration can substantially speed up blitting of images with large + * horizontal runs of transparent pixels. See SDL_SetSurfaceRLE() for details. + * + * \param surface the SDL_Surface structure to update + * \param flag SDL_TRUE to enable color key, SDL_FALSE to disable color key + * \param key the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetColorKey + */ +extern DECLSPEC int SDLCALL SDL_SetColorKey(SDL_Surface * surface, + int flag, Uint32 key); + +/** + * Returns whether the surface has a color key + * + * It is safe to pass a NULL `surface` here; it will return SDL_FALSE. + * + * \param surface the SDL_Surface structure to query + * \return SDL_TRUE if the surface has a color key, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_SetColorKey + * \sa SDL_GetColorKey + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasColorKey(SDL_Surface * surface); + +/** + * Get the color key (transparent pixel) for a surface. + * + * The color key is a pixel of the format used by the surface, as generated by + * SDL_MapRGB(). + * + * If the surface doesn't have color key enabled this function returns -1. + * + * \param surface the SDL_Surface structure to query + * \param key a pointer filled in with the transparent pixel + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetColorKey + */ +extern DECLSPEC int SDLCALL SDL_GetColorKey(SDL_Surface * surface, + Uint32 * key); + +/** + * Set an additional color value multiplied into blit operations. + * + * When this surface is blitted, during the blit operation each source color + * channel is modulated by the appropriate color value according to the + * following formula: + * + * `srcC = srcC * (color / 255)` + * + * \param surface the SDL_Surface structure to update + * \param r the red color value multiplied into blit operations + * \param g the green color value multiplied into blit operations + * \param b the blue color value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceColorMod(SDL_Surface * surface, + Uint8 r, Uint8 g, Uint8 b); + + +/** + * Get the additional color value multiplied into blit operations. + * + * \param surface the SDL_Surface structure to query + * \param r a pointer filled in with the current red color value + * \param g a pointer filled in with the current green color value + * \param b a pointer filled in with the current blue color value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceColorMod(SDL_Surface * surface, + Uint8 * r, Uint8 * g, + Uint8 * b); + +/** + * Set an additional alpha value used in blit operations. + * + * When this surface is blitted, during the blit operation the source alpha + * value is modulated by this alpha value according to the following formula: + * + * `srcA = srcA * (alpha / 255)` + * + * \param surface the SDL_Surface structure to update + * \param alpha the alpha value multiplied into blit operations + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceAlphaMod + * \sa SDL_SetSurfaceColorMod + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 alpha); + +/** + * Get the additional alpha value used in blit operations. + * + * \param surface the SDL_Surface structure to query + * \param alpha a pointer filled in with the current alpha value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceColorMod + * \sa SDL_SetSurfaceAlphaMod + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceAlphaMod(SDL_Surface * surface, + Uint8 * alpha); + +/** + * Set the blend mode used for blit operations. + * + * To copy a surface to another surface (or texture) without blending with the + * existing data, the blendmode of the SOURCE surface should be set to + * `SDL_BLENDMODE_NONE`. + * + * \param surface the SDL_Surface structure to update + * \param blendMode the SDL_BlendMode to use for blit blending + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_SetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode blendMode); + +/** + * Get the blend mode used for blit operations. + * + * \param surface the SDL_Surface structure to query + * \param blendMode a pointer filled in with the current SDL_BlendMode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetSurfaceBlendMode + */ +extern DECLSPEC int SDLCALL SDL_GetSurfaceBlendMode(SDL_Surface * surface, + SDL_BlendMode *blendMode); + +/** + * Set the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * Note that blits are automatically clipped to the edges of the source and + * destination surfaces. + * + * \param surface the SDL_Surface structure to be clipped + * \param rect the SDL_Rect structure representing the clipping rectangle, or + * NULL to disable clipping + * \returns SDL_TRUE if the rectangle intersects the surface, otherwise + * SDL_FALSE and blits will be completely clipped. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_GetClipRect + */ +extern DECLSPEC SDL_bool SDLCALL SDL_SetClipRect(SDL_Surface * surface, + const SDL_Rect * rect); + +/** + * Get the clipping rectangle for a surface. + * + * When `surface` is the destination of a blit, only the area within the clip + * rectangle is drawn into. + * + * \param surface the SDL_Surface structure representing the surface to be + * clipped + * \param rect an SDL_Rect structure filled in with the clipping rectangle for + * the surface + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + * \sa SDL_SetClipRect + */ +extern DECLSPEC void SDLCALL SDL_GetClipRect(SDL_Surface * surface, + SDL_Rect * rect); + +/* + * Creates a new surface identical to the existing surface. + * + * The returned surface should be freed with SDL_FreeSurface(). + * + * \param surface the surface to duplicate. + * \returns a copy of the surface, or NULL on failure; call SDL_GetError() for + * more information. + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_DuplicateSurface(SDL_Surface * surface); + +/** + * Copy an existing surface to a new surface of the specified format. + * + * This function is used to optimize images for faster *repeat* blitting. This + * is accomplished by converting the original and storing the result as a new + * surface. The new, optimized surface can then be used as the source for + * future blits, making them faster. + * + * \param src the existing SDL_Surface structure to convert + * \param fmt the SDL_PixelFormat structure that the new surface is optimized + * for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurfaceFormat + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurface + (SDL_Surface * src, const SDL_PixelFormat * fmt, Uint32 flags); + +/** + * Copy an existing surface to a new surface of the specified format enum. + * + * This function operates just like SDL_ConvertSurface(), but accepts an + * SDL_PixelFormatEnum value instead of an SDL_PixelFormat structure. As such, + * it might be easier to call but it doesn't have access to palette + * information for the destination surface, in case that would be important. + * + * \param src the existing SDL_Surface structure to convert + * \param pixel_format the SDL_PixelFormatEnum that the new surface is + * optimized for + * \param flags the flags are unused and should be set to 0; this is a + * leftover from SDL 1.2's API + * \returns the new SDL_Surface structure that is created or NULL if it fails; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AllocFormat + * \sa SDL_ConvertSurface + * \sa SDL_CreateRGBSurface + */ +extern DECLSPEC SDL_Surface *SDLCALL SDL_ConvertSurfaceFormat + (SDL_Surface * src, Uint32 pixel_format, Uint32 flags); + +/** + * Copy a block of pixels of one format to another format. + * + * \param width the width of the block to copy, in pixels + * \param height the height of the block to copy, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with new pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_ConvertPixels(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Premultiply the alpha on a block of pixels. + * + * This is safe to use with src == dst, but not for other overlapping areas. + * + * This function is currently only implemented for SDL_PIXELFORMAT_ARGB8888. + * + * \param width the width of the block to convert, in pixels + * \param height the height of the block to convert, in pixels + * \param src_format an SDL_PixelFormatEnum value of the `src` pixels format + * \param src a pointer to the source pixels + * \param src_pitch the pitch of the source pixels, in bytes + * \param dst_format an SDL_PixelFormatEnum value of the `dst` pixels format + * \param dst a pointer to be filled in with premultiplied pixel data + * \param dst_pitch the pitch of the destination pixels, in bytes + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_PremultiplyAlpha(int width, int height, + Uint32 src_format, + const void * src, int src_pitch, + Uint32 dst_format, + void * dst, int dst_pitch); + +/** + * Perform a fast fill of a rectangle with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rect the SDL_Rect structure representing the rectangle to fill, or + * NULL to fill the entire surface + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRects + */ +extern DECLSPEC int SDLCALL SDL_FillRect + (SDL_Surface * dst, const SDL_Rect * rect, Uint32 color); + +/** + * Perform a fast fill of a set of rectangles with a specific color. + * + * `color` should be a pixel of the format used by the surface, and can be + * generated by SDL_MapRGB() or SDL_MapRGBA(). If the color value contains an + * alpha component then the destination is simply filled with that alpha + * information, no blending takes place. + * + * If there is a clip rectangle set on the destination (set via + * SDL_SetClipRect()), then this function will fill based on the intersection + * of the clip rectangle and `rect`. + * + * \param dst the SDL_Surface structure that is the drawing target + * \param rects an array of SDL_Rects representing the rectangles to fill. + * \param count the number of rectangles in the array + * \param color the color to fill with + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_FillRect + */ +extern DECLSPEC int SDLCALL SDL_FillRects + (SDL_Surface * dst, const SDL_Rect * rects, int count, Uint32 color); + +/* !!! FIXME: merge this documentation with the wiki */ +/** + * Performs a fast blit from the source surface to the destination surface. + * + * This assumes that the source and destination rectangles are + * the same size. If either \c srcrect or \c dstrect are NULL, the entire + * surface (\c src or \c dst) is copied. The final blit rectangles are saved + * in \c srcrect and \c dstrect after all clipping is performed. + * + * \returns 0 if the blit is successful, otherwise it returns -1. + * + * The blit function should not be called on a locked surface. + * + * The blit semantics for surfaces with and without blending and colorkey + * are defined as follows: + * \verbatim + RGBA->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB, set destination alpha to source per-surface alpha value. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + + RGBA->RGBA: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source alpha-channel and per-surface alpha) + SDL_SRCCOLORKEY ignored. + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy all of RGBA to the destination. + if SDL_SRCCOLORKEY set, only copy the pixels matching the + RGB values of the source color key, ignoring alpha in the + comparison. + + RGB->RGB: + Source surface blend mode set to SDL_BLENDMODE_BLEND: + alpha-blend (using the source per-surface alpha) + Source surface blend mode set to SDL_BLENDMODE_NONE: + copy RGB. + both: + if SDL_SRCCOLORKEY set, only copy the pixels matching the + source color key. + \endverbatim + * + * You should call SDL_BlitSurface() unless you know exactly how SDL + * blitting works internally and how to use the other blit functions. + */ +#define SDL_BlitSurface SDL_UpperBlit + +/** + * Perform a fast blit from the source surface to the destination surface. + * + * SDL_UpperBlit() has been replaced by SDL_BlitSurface(), which is merely a + * macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_UpperBlit + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface blitting only. + * + * This is a semi-private blit function and it performs low-level surface + * blitting, assuming the input rectangles have already been clipped. + * + * Unless you know what you're doing, you should be using SDL_BlitSurface() + * instead. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied, or NULL to copy the entire surface + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitSurface + */ +extern DECLSPEC int SDLCALL SDL_LowerBlit + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + + +/** + * Perform a fast, low quality, stretch blit between two surfaces of the same + * format. + * + * Please use SDL_BlitScaled() instead. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretch(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + +/** + * Perform bilinear scaling between two surfaces of the same format, 32BPP. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_SoftStretchLinear(SDL_Surface * src, + const SDL_Rect * srcrect, + SDL_Surface * dst, + const SDL_Rect * dstrect); + + +#define SDL_BlitScaled SDL_UpperBlitScaled + +/** + * Perform a scaled surface copy to a destination surface. + * + * SDL_UpperBlitScaled() has been replaced by SDL_BlitScaled(), which is + * merely a macro for this function with a less confusing name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_UpperBlitScaled + (SDL_Surface * src, const SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Perform low-level surface scaled blitting only. + * + * This is a semi-private function and it performs low-level surface blitting, + * assuming the input rectangles have already been clipped. + * + * \param src the SDL_Surface structure to be copied from + * \param srcrect the SDL_Rect structure representing the rectangle to be + * copied + * \param dst the SDL_Surface structure that is the blit target + * \param dstrect the SDL_Rect structure representing the rectangle that is + * copied into + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_BlitScaled + */ +extern DECLSPEC int SDLCALL SDL_LowerBlitScaled + (SDL_Surface * src, SDL_Rect * srcrect, + SDL_Surface * dst, SDL_Rect * dstrect); + +/** + * Set the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * Get the YUV conversion mode + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * Get the YUV conversion mode, returning the correct mode for the resolution + * when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_surface_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_system.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_system.h new file mode 100644 index 0000000..1a443ba --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_system.h @@ -0,0 +1,623 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_system.h + * + * Include file for platform specific SDL API functions + */ + +#ifndef SDL_system_h_ +#define SDL_system_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/* Platform specific functions for Windows */ +#if defined(__WIN32__) || defined(__GDK__) + +typedef void (SDLCALL * SDL_WindowsMessageHook)(void *userdata, void *hWnd, unsigned int message, Uint64 wParam, Sint64 lParam); + +/** + * Set a callback for every Windows message, run before TranslateMessage(). + * + * \param callback The SDL_WindowsMessageHook function to call. + * \param userdata a pointer to pass to every iteration of `callback` + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowsMessageHook(SDL_WindowsMessageHook callback, void *userdata); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the D3D9 adapter index that matches the specified display index. + * + * The returned adapter index can be passed to `IDirect3D9::CreateDevice` and + * controls on which monitor a full screen application will appear. + * + * \param displayIndex the display index for which to get the D3D9 adapter + * index + * \returns the D3D9 adapter index on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC int SDLCALL SDL_Direct3D9GetAdapterIndex( int displayIndex ); + +typedef struct IDirect3DDevice9 IDirect3DDevice9; + +/** + * Get the D3D9 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D device + * \returns the D3D9 device associated with given renderer or NULL if it is + * not a D3D9 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.1. + */ +extern DECLSPEC IDirect3DDevice9* SDLCALL SDL_RenderGetD3D9Device(SDL_Renderer * renderer); + +typedef struct ID3D11Device ID3D11Device; + +/** + * Get the D3D11 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D11 device + * \returns the D3D11 device associated with given renderer or NULL if it is + * not a D3D11 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC ID3D11Device* SDLCALL SDL_RenderGetD3D11Device(SDL_Renderer * renderer); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +#if defined(__WIN32__) || defined(__GDK__) + +typedef struct ID3D12Device ID3D12Device; + +/** + * Get the D3D12 device associated with a renderer. + * + * Once you are done using the device, you should release it to avoid a + * resource leak. + * + * \param renderer the renderer from which to get the associated D3D12 device + * \returns the D3D12 device associated with given renderer or NULL if it is + * not a D3D12 renderer; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC ID3D12Device* SDLCALL SDL_RenderGetD3D12Device(SDL_Renderer* renderer); + +#endif /* defined(__WIN32__) || defined(__GDK__) */ + +#if defined(__WIN32__) || defined(__WINGDK__) + +/** + * Get the DXGI Adapter and Output indices for the specified display index. + * + * The DXGI Adapter and Output indices can be passed to `EnumAdapters` and + * `EnumOutputs` respectively to get the objects required to create a DX10 or + * DX11 device and swap chain. + * + * Before SDL 2.0.4 this function did not return a value. Since SDL 2.0.4 it + * returns an SDL_bool. + * + * \param displayIndex the display index for which to get both indices + * \param adapterIndex a pointer to be filled in with the adapter index + * \param outputIndex a pointer to be filled in with the output index + * \returns SDL_TRUE on success or SDL_FALSE on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.2. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_DXGIGetOutputInfo( int displayIndex, int *adapterIndex, int *outputIndex ); + +#endif /* defined(__WIN32__) || defined(__WINGDK__) */ + +/* Platform specific functions for Linux */ +#ifdef __LINUX__ + +/** + * Sets the UNIX nice value for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID the Unix thread ID to change priority of. + * \param priority The new, Unix-specific, priority value. + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriority(Sint64 threadID, int priority); + +/** + * Sets the priority (not nice level) and scheduling policy for a thread. + * + * This uses setpriority() if possible, and RealtimeKit if available. + * + * \param threadID The Unix thread ID to change priority of. + * \param sdlPriority The new SDL_ThreadPriority value. + * \param schedPolicy The new scheduling policy (SCHED_FIFO, SCHED_RR, + * SCHED_OTHER, etc...) + * \returns 0 on success, or -1 on error. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC int SDLCALL SDL_LinuxSetThreadPriorityAndPolicy(Sint64 threadID, int sdlPriority, int schedPolicy); + +#endif /* __LINUX__ */ + +/* Platform specific functions for iOS */ +#ifdef __IPHONEOS__ + +#define SDL_iOSSetAnimationCallback(window, interval, callback, callbackParam) SDL_iPhoneSetAnimationCallback(window, interval, callback, callbackParam) + +/** + * Use this function to set the animation callback on Apple iOS. + * + * The function prototype for `callback` is: + * + * ```c + * void callback(void* callbackParam); + * ``` + * + * Where its parameter, `callbackParam`, is what was passed as `callbackParam` + * to SDL_iPhoneSetAnimationCallback(). + * + * This function is only available on Apple iOS. + * + * For more information see: + * https://github.com/libsdl-org/SDL/blob/main/docs/README-ios.md + * + * This functions is also accessible using the macro + * SDL_iOSSetAnimationCallback() since SDL 2.0.4. + * + * \param window the window for which the animation callback should be set + * \param interval the number of frames after which **callback** will be + * called + * \param callback the function to call for every frame. + * \param callbackParam a pointer that is passed to `callback`. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetEventPump + */ +extern DECLSPEC int SDLCALL SDL_iPhoneSetAnimationCallback(SDL_Window * window, int interval, void (SDLCALL *callback)(void*), void *callbackParam); + +#define SDL_iOSSetEventPump(enabled) SDL_iPhoneSetEventPump(enabled) + +/** + * Use this function to enable or disable the SDL event pump on Apple iOS. + * + * This function is only available on Apple iOS. + * + * This functions is also accessible using the macro SDL_iOSSetEventPump() + * since SDL 2.0.4. + * + * \param enabled SDL_TRUE to enable the event pump, SDL_FALSE to disable it + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_iPhoneSetAnimationCallback + */ +extern DECLSPEC void SDLCALL SDL_iPhoneSetEventPump(SDL_bool enabled); + +#endif /* __IPHONEOS__ */ + + +/* Platform specific functions for Android */ +#ifdef __ANDROID__ + +/** + * Get the Android Java Native Interface Environment of the current thread. + * + * This is the JNIEnv one needs to access the Java virtual machine from native + * code, and is needed for many Android APIs to be usable from C. + * + * The prototype of the function in SDL's code actually declare a void* return + * type, even if the implementation returns a pointer to a JNIEnv. The + * rationale being that the SDL headers can avoid including jni.h. + * + * \returns a pointer to Java native interface object (JNIEnv) to which the + * current thread is attached, or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetActivity + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); + +/** + * Retrieve the Java instance of the Android activity class. + * + * The prototype of the function in SDL's code actually declares a void* + * return type, even if the implementation returns a jobject. The rationale + * being that the SDL headers can avoid including jni.h. + * + * The jobject returned by the function is a local reference and must be + * released by the caller. See the PushLocalFrame() and PopLocalFrame() or + * DeleteLocalRef() functions of the Java native interface: + * + * https://docs.oracle.com/javase/1.5.0/docs/guide/jni/spec/functions.html + * + * \returns the jobject representing the instance of the Activity class of the + * Android application, or NULL on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetJNIEnv + */ +extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); + +/** + * Query Android API level of the current device. + * + * - API level 31: Android 12 + * - API level 30: Android 11 + * - API level 29: Android 10 + * - API level 28: Android 9 + * - API level 27: Android 8.1 + * - API level 26: Android 8.0 + * - API level 25: Android 7.1 + * - API level 24: Android 7.0 + * - API level 23: Android 6.0 + * - API level 22: Android 5.1 + * - API level 21: Android 5.0 + * - API level 20: Android 4.4W + * - API level 19: Android 4.4 + * - API level 18: Android 4.3 + * - API level 17: Android 4.2 + * - API level 16: Android 4.1 + * - API level 15: Android 4.0.3 + * - API level 14: Android 4.0 + * - API level 13: Android 3.2 + * - API level 12: Android 3.1 + * - API level 11: Android 3.0 + * - API level 10: Android 2.3.3 + * + * \returns the Android API level. + * + * \since This function is available since SDL 2.0.12. + */ +extern DECLSPEC int SDLCALL SDL_GetAndroidSDKVersion(void); + +/** + * Query if the application is running on Android TV. + * + * \returns SDL_TRUE if this is Android TV, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + +/** + * Query if the application is running on a Chromebook. + * + * \returns SDL_TRUE if this is a Chromebook, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsChromebook(void); + +/** + * Query if the application is running on a Samsung DeX docking station. + * + * \returns SDL_TRUE if this is a DeX docking station, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsDeXMode(void); + +/** + * Trigger the Android system back button behavior. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC void SDLCALL SDL_AndroidBackButton(void); + +/** + See the official Android developer guide for more information: + http://developer.android.com/guide/topics/data/data-storage.html +*/ +#define SDL_ANDROID_EXTERNAL_STORAGE_READ 0x01 +#define SDL_ANDROID_EXTERNAL_STORAGE_WRITE 0x02 + +/** + * Get the path used for internal storage for this application. + * + * This path is unique to your application and cannot be written to by other + * applications. + * + * Your internal storage path is typically: + * `/data/data/your.app.package/files`. + * + * \returns the path used for internal storage or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetInternalStoragePath(void); + +/** + * Get the current state of external storage. + * + * The current state of external storage, a bitmask of these values: + * `SDL_ANDROID_EXTERNAL_STORAGE_READ`, `SDL_ANDROID_EXTERNAL_STORAGE_WRITE`. + * + * If external storage is currently unavailable, this will return 0. + * + * \returns the current state of external storage on success or 0 on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStoragePath + */ +extern DECLSPEC int SDLCALL SDL_AndroidGetExternalStorageState(void); + +/** + * Get the path used for external storage for this application. + * + * This path is unique to your application, but is public and can be written + * to by other applications. + * + * Your external storage path is typically: + * `/storage/sdcard0/Android/data/your.app.package/files`. + * + * \returns the path used for external storage for this application on success + * or NULL on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AndroidGetExternalStorageState + */ +extern DECLSPEC const char * SDLCALL SDL_AndroidGetExternalStoragePath(void); + +/** + * Request permissions at runtime. + * + * This blocks the calling thread until the permission is granted or denied. + * + * \param permission The permission to request. + * \returns SDL_TRUE if the permission was granted, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.14. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_AndroidRequestPermission(const char *permission); + +/** + * Shows an Android toast notification. + * + * Toasts are a sort of lightweight notification that are unique to Android. + * + * https://developer.android.com/guide/topics/ui/notifiers/toasts + * + * Shows toast in UI thread. + * + * For the `gravity` parameter, choose a value from here, or -1 if you don't + * have a preference: + * + * https://developer.android.com/reference/android/view/Gravity + * + * \param message text message to be shown + * \param duration 0=short, 1=long + * \param gravity where the notification should appear on the screen. + * \param xoffset set this parameter only when gravity >=0 + * \param yoffset set this parameter only when gravity >=0 + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_AndroidShowToast(const char* message, int duration, int gravity, int xoffset, int yoffset); + +/** + * Send a user command to SDLActivity. + * + * Override "boolean onUnhandledMessage(Message msg)" to handle the message. + * + * \param command user command that must be greater or equal to 0x8000 + * \param param user parameter + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC int SDLCALL SDL_AndroidSendMessage(Uint32 command, int param); + +#endif /* __ANDROID__ */ + +/* Platform specific functions for WinRT */ +#ifdef __WINRT__ + +/** + * \brief WinRT / Windows Phone path types + */ +typedef enum +{ + /** \brief The installed app's root directory. + Files here are likely to be read-only. */ + SDL_WINRT_PATH_INSTALLED_LOCATION, + + /** \brief The app's local data store. Files may be written here */ + SDL_WINRT_PATH_LOCAL_FOLDER, + + /** \brief The app's roaming data store. Unsupported on Windows Phone. + Files written here may be copied to other machines via a network + connection. + */ + SDL_WINRT_PATH_ROAMING_FOLDER, + + /** \brief The app's temporary data store. Unsupported on Windows Phone. + Files written here may be deleted at any time. */ + SDL_WINRT_PATH_TEMP_FOLDER +} SDL_WinRT_Path; + + +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UCS-2 string (16-bit, wide-char) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUTF8 + */ +extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path pathType); + +/** + * Retrieve a WinRT defined path on the local file system. + * + * Not all paths are available on all versions of Windows. This is especially + * true on Windows Phone. Check the documentation for the given SDL_WinRT_Path + * for more information on which path types are supported where. + * + * Documentation on most app-specific path types on WinRT can be found on + * MSDN, at the URL: + * + * https://msdn.microsoft.com/en-us/library/windows/apps/hh464917.aspx + * + * \param pathType the type of path to retrieve, one of SDL_WinRT_Path + * \returns a UTF-8 string (8-bit, multi-byte) containing the path, or NULL if + * the path is not available for any reason; call SDL_GetError() for + * more information. + * + * \since This function is available since SDL 2.0.3. + * + * \sa SDL_WinRTGetFSPathUNICODE + */ +extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); + +/** + * Detects the device family of WinRT platform at runtime. + * + * \returns a value from the SDL_WinRT_DeviceFamily enum. + * + * \since This function is available since SDL 2.0.8. + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + +#endif /* __WINRT__ */ + +/** + * Query if the current device is a tablet. + * + * If SDL can't determine this, it will return SDL_FALSE. + * + * \returns SDL_TRUE if the device is a tablet, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.9. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsTablet(void); + +/* Functions used by iOS application delegates to notify SDL about state changes */ +extern DECLSPEC void SDLCALL SDL_OnApplicationWillTerminate(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidReceiveMemoryWarning(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillResignActive(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidEnterBackground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationWillEnterForeground(void); +extern DECLSPEC void SDLCALL SDL_OnApplicationDidBecomeActive(void); +#ifdef __IPHONEOS__ +extern DECLSPEC void SDLCALL SDL_OnApplicationDidChangeStatusBarOrientation(void); +#endif + +/* Functions used only by GDK */ +#if defined(__GDK__) +typedef struct XTaskQueueObject * XTaskQueueHandle; + +/** + * Gets a reference to the global async task queue handle for GDK, + * initializing if needed. + * + * Once you are done with the task queue, you should call + * XTaskQueueCloseHandle to reduce the reference count to avoid a resource + * leak. + * + * \param outTaskQueue a pointer to be filled in with task queue handle. + * \returns 0 if success, -1 if any error occurs. + * + * \since This function is available since SDL 2.24.0. + */ +extern DECLSPEC int SDLCALL SDL_GDKGetTaskQueue(XTaskQueueHandle * outTaskQueue); + +#endif + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_system_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_syswm.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_syswm.h new file mode 100644 index 0000000..bdc38d3 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_syswm.h @@ -0,0 +1,386 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_syswm.h + * + * Include file for SDL custom system window manager hooks. + */ + +#ifndef SDL_syswm_h_ +#define SDL_syswm_h_ + +#include +#include +#include +#include + +/** + * \brief SDL_syswm.h + * + * Your application has access to a special type of event ::SDL_SYSWMEVENT, + * which contains window-manager specific information and arrives whenever + * an unhandled window event occurs. This event is ignored by default, but + * you can enable it with SDL_EventState(). + */ +struct SDL_SysWMinfo; + +#if !defined(SDL_PROTOTYPES_ONLY) + +#if defined(SDL_VIDEO_DRIVER_WINDOWS) +#ifndef WIN32_LEAN_AND_MEAN +#define WIN32_LEAN_AND_MEAN +#endif +#ifndef NOMINMAX /* don't define min() and max(). */ +#define NOMINMAX +#endif +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_WINRT) +#include +#endif + +/* This is the structure for custom window manager events */ +#if defined(SDL_VIDEO_DRIVER_X11) +#if defined(__APPLE__) && defined(__MACH__) +/* conflicts with Quickdraw.h */ +#define Cursor X11Cursor +#endif + +#include +#include + +#if defined(__APPLE__) && defined(__MACH__) +/* matches the re-define above */ +#undef Cursor +#endif + +#endif /* defined(SDL_VIDEO_DRIVER_X11) */ + +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_COCOA) +#ifdef __OBJC__ +@class NSWindow; +#else +typedef struct _NSWindow NSWindow; +#endif +#endif + +#if defined(SDL_VIDEO_DRIVER_UIKIT) +#ifdef __OBJC__ +#include +#else +typedef struct _UIWindow UIWindow; +typedef struct _UIViewController UIViewController; +#endif +typedef Uint32 GLuint; +#endif + +#if defined(SDL_VIDEO_VULKAN) || defined(SDL_VIDEO_METAL) +#define SDL_METALVIEW_TAG 255 +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) +typedef struct ANativeWindow ANativeWindow; +typedef void *EGLSurface; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) +#include +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) +#define INCL_WIN +#include +#endif +#endif /* SDL_PROTOTYPES_ONLY */ + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) +struct gbm_device; +#endif + + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(SDL_PROTOTYPES_ONLY) +/** + * These are the various supported windowing subsystems + */ +typedef enum +{ + SDL_SYSWM_UNKNOWN, + SDL_SYSWM_WINDOWS, + SDL_SYSWM_X11, + SDL_SYSWM_DIRECTFB, + SDL_SYSWM_COCOA, + SDL_SYSWM_UIKIT, + SDL_SYSWM_WAYLAND, + SDL_SYSWM_MIR, /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + SDL_SYSWM_WINRT, + SDL_SYSWM_ANDROID, + SDL_SYSWM_VIVANTE, + SDL_SYSWM_OS2, + SDL_SYSWM_HAIKU, + SDL_SYSWM_KMSDRM, + SDL_SYSWM_RISCOS +} SDL_SYSWM_TYPE; + +/** + * The custom event structure. + */ +struct SDL_SysWMmsg +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct { + HWND hwnd; /**< The window for the message */ + UINT msg; /**< The type of message */ + WPARAM wParam; /**< WORD message parameter */ + LPARAM lParam; /**< LONG message parameter */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct { + XEvent event; + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct { + DFBEvent event; + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { + /* Latest version of Xcode clang complains about empty structs in C v. C++: + error: empty struct has size 0 in C, size 1 in C++ + */ + int dummy; + /* No Cocoa window events yet */ + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { + int dummy; + /* No UIKit window events yet */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + int dummy; + /* No Vivante window events yet */ + } vivante; +#endif +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + BOOL fFrame; /**< TRUE if hwnd is a frame window */ + HWND hwnd; /**< The window receiving the message */ + ULONG msg; /**< The message identifier */ + MPARAM mp1; /**< The first first message parameter */ + MPARAM mp2; /**< The second first message parameter */ + } os2; +#endif + /* Can't have an empty union */ + int dummy; + } msg; +}; + +/** + * The custom window manager information structure. + * + * When this structure is returned, it holds information about which + * low level system it is using, and will be one of SDL_SYSWM_TYPE. + */ +struct SDL_SysWMinfo +{ + SDL_version version; + SDL_SYSWM_TYPE subsystem; + union + { +#if defined(SDL_VIDEO_DRIVER_WINDOWS) + struct + { + HWND window; /**< The window handle */ + HDC hdc; /**< The window device context */ + HINSTANCE hinstance; /**< The instance handle */ + } win; +#endif +#if defined(SDL_VIDEO_DRIVER_WINRT) + struct + { + IInspectable * window; /**< The WinRT CoreWindow */ + } winrt; +#endif +#if defined(SDL_VIDEO_DRIVER_X11) + struct + { + Display *display; /**< The X11 display */ + Window window; /**< The X11 window */ + } x11; +#endif +#if defined(SDL_VIDEO_DRIVER_DIRECTFB) + struct + { + IDirectFB *dfb; /**< The directfb main interface */ + IDirectFBWindow *window; /**< The directfb window handle */ + IDirectFBSurface *surface; /**< The directfb client surface */ + } dfb; +#endif +#if defined(SDL_VIDEO_DRIVER_COCOA) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + NSWindow __unsafe_unretained *window; /**< The Cocoa window */ + #else + NSWindow *window; /**< The Cocoa window */ + #endif +#else + NSWindow *window; /**< The Cocoa window */ +#endif + } cocoa; +#endif +#if defined(SDL_VIDEO_DRIVER_UIKIT) + struct + { +#if defined(__OBJC__) && defined(__has_feature) + #if __has_feature(objc_arc) + UIWindow __unsafe_unretained *window; /**< The UIKit window */ + #else + UIWindow *window; /**< The UIKit window */ + #endif +#else + UIWindow *window; /**< The UIKit window */ +#endif + GLuint framebuffer; /**< The GL view's Framebuffer Object. It must be bound when rendering to the screen using GL. */ + GLuint colorbuffer; /**< The GL view's color Renderbuffer Object. It must be bound when SDL_GL_SwapWindow is called. */ + GLuint resolveFramebuffer; /**< The Framebuffer Object which holds the resolve color Renderbuffer, when MSAA is used. */ + } uikit; +#endif +#if defined(SDL_VIDEO_DRIVER_WAYLAND) + struct + { + struct wl_display *display; /**< Wayland display */ + struct wl_surface *surface; /**< Wayland surface */ + void *shell_surface; /**< DEPRECATED Wayland shell_surface (window manager handle) */ + struct wl_egl_window *egl_window; /**< Wayland EGL window (native window) */ + struct xdg_surface *xdg_surface; /**< Wayland xdg surface (window manager handle) */ + struct xdg_toplevel *xdg_toplevel; /**< Wayland xdg toplevel role */ + struct xdg_popup *xdg_popup; /**< Wayland xdg popup role */ + struct xdg_positioner *xdg_positioner; /**< Wayland xdg positioner, for popup */ + } wl; +#endif +#if defined(SDL_VIDEO_DRIVER_MIR) /* no longer available, left for API/ABI compatibility. Remove in 2.1! */ + struct + { + void *connection; /**< Mir display server connection */ + void *surface; /**< Mir surface */ + } mir; +#endif + +#if defined(SDL_VIDEO_DRIVER_ANDROID) + struct + { + ANativeWindow *window; + EGLSurface surface; + } android; +#endif + +#if defined(SDL_VIDEO_DRIVER_OS2) + struct + { + HWND hwnd; /**< The window handle */ + HWND hwndFrame; /**< The frame window handle */ + } os2; +#endif + +#if defined(SDL_VIDEO_DRIVER_VIVANTE) + struct + { + EGLNativeDisplayType display; + EGLNativeWindowType window; + } vivante; +#endif + +#if defined(SDL_VIDEO_DRIVER_KMSDRM) + struct + { + int dev_index; /**< Device index (ex: the X in /dev/dri/cardX) */ + int drm_fd; /**< DRM FD (unavailable on Vulkan windows) */ + struct gbm_device *gbm_dev; /**< GBM device (unavailable on Vulkan windows) */ + } kmsdrm; +#endif + + /* Make sure this union is always 64 bytes (8 64-bit pointers). */ + /* Be careful not to overflow this if you add a new target! */ + Uint8 dummy[64]; + } info; +}; + +#endif /* SDL_PROTOTYPES_ONLY */ + +typedef struct SDL_SysWMinfo SDL_SysWMinfo; + + +/** + * Get driver-specific information about a window. + * + * You must include SDL_syswm.h for the declaration of SDL_SysWMinfo. + * + * The caller must initialize the `info` structure's version by using + * `SDL_VERSION(&info.version)`, and then this function will fill in the rest + * of the structure with information about the given window. + * + * \param window the window about which information is being requested + * \param info an SDL_SysWMinfo structure filled in with window information + * \returns SDL_TRUE if the function is implemented and the `version` member + * of the `info` struct is valid, or SDL_FALSE if the information + * could not be retrieved; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowWMInfo(SDL_Window * window, + SDL_SysWMinfo * info); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_syswm_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_thread.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_thread.h new file mode 100644 index 0000000..fad1afb --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_thread.h @@ -0,0 +1,464 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_thread_h_ +#define SDL_thread_h_ + +/** + * \file SDL_thread.h + * + * Header for the SDL thread management routines. + */ + +#include +#include + +/* Thread synchronization primitives */ +#include +#include + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +#include /* _beginthreadex() and _endthreadex() */ +#endif +#if defined(__OS2__) /* for _beginthread() and _endthread() */ +#ifndef __EMX__ +#include +#else +#include +#endif +#endif + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* The SDL thread structure, defined in SDL_thread.c */ +struct SDL_Thread; +typedef struct SDL_Thread SDL_Thread; + +/* The SDL thread ID */ +typedef unsigned long SDL_threadID; + +/* Thread local storage ID, 0 is the invalid ID */ +typedef unsigned int SDL_TLSID; + +/** + * The SDL thread priority. + * + * SDL will make system changes as necessary in order to apply the thread priority. + * Code which attempts to control thread state related to priority should be aware + * that calling SDL_SetThreadPriority may alter such state. + * SDL_HINT_THREAD_PRIORITY_POLICY can be used to control aspects of this behavior. + * + * \note On many systems you require special privileges to set high or time critical priority. + */ +typedef enum { + SDL_THREAD_PRIORITY_LOW, + SDL_THREAD_PRIORITY_NORMAL, + SDL_THREAD_PRIORITY_HIGH, + SDL_THREAD_PRIORITY_TIME_CRITICAL +} SDL_ThreadPriority; + +/** + * The function passed to SDL_CreateThread(). + * + * \param data what was passed as `data` to SDL_CreateThread() + * \returns a value that can be reported through SDL_WaitThread(). + */ +typedef int (SDLCALL * SDL_ThreadFunction) (void *data); + + +#if (defined(__WIN32__) || defined(__GDK__)) && !defined(__WINRT__) +/** + * \file SDL_thread.h + * + * We compile SDL into a DLL. This means, that it's the DLL which + * creates a new thread for the calling process with the SDL_CreateThread() + * API. There is a problem with this, that only the RTL of the SDL2.DLL will + * be initialized for those threads, and not the RTL of the calling + * application! + * + * To solve this, we make a little hack here. + * + * We'll always use the caller's _beginthread() and _endthread() APIs to + * start a new thread. This way, if it's the SDL2.DLL which uses this API, + * then the RTL of SDL2.DLL will be used to create the new thread, and if it's + * the application, then the RTL of the application will be used. + * + * So, in short: + * Always use the _beginthread() and _endthread() of the calling runtime + * library! + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef uintptr_t (__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); +typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthreadex +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthreadex +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, + const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#elif defined(__OS2__) +/* + * just like the windows case above: We compile SDL2 + * into a dll with Watcom's runtime statically linked. + */ +#define SDL_PASSED_BEGINTHREAD_ENDTHREAD + +typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); +typedef void (*pfnSDL_CurrentEndThread)(void); + +#ifndef SDL_beginthread +#define SDL_beginthread _beginthread +#endif +#ifndef SDL_endthread +#define SDL_endthread _endthread +#endif + +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data, + pfnSDL_CurrentBeginThread pfnBeginThread, + pfnSDL_CurrentEndThread pfnEndThread); + +#if defined(SDL_CreateThread) && SDL_DYNAMIC_API +#undef SDL_CreateThread +#define SDL_CreateThread(fn, name, data) SDL_CreateThread_REAL(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#undef SDL_CreateThreadWithStackSize +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize_REAL(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#else +#define SDL_CreateThread(fn, name, data) SDL_CreateThread(fn, name, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#define SDL_CreateThreadWithStackSize(fn, name, stacksize, data) SDL_CreateThreadWithStackSize(fn, name, stacksize, data, (pfnSDL_CurrentBeginThread)SDL_beginthread, (pfnSDL_CurrentEndThread)SDL_endthread) +#endif + +#else + +/** + * Create a new thread with a default stack size. + * + * This is equivalent to calling: + * + * ```c + * SDL_CreateThreadWithStackSize(fn, name, 0, data); + * ``` + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThreadWithStackSize + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data); + +/** + * Create a new thread with a specific stack size. + * + * SDL makes an attempt to report `name` to the system, so that debuggers can + * display it. Not all platforms support this. + * + * Thread naming is a little complicated: Most systems have very small limits + * for the string length (Haiku has 32 bytes, Linux currently has 16, Visual + * C++ 6.0 has _nine_!), and possibly other arbitrary rules. You'll have to + * see what happens with your system's debugger. The name should be UTF-8 (but + * using the naming limits of C identifiers is a better bet). There are no + * requirements for thread naming conventions, so long as the string is + * null-terminated UTF-8, but these guidelines are helpful in choosing a name: + * + * https://stackoverflow.com/questions/149932/naming-conventions-for-threads + * + * If a system imposes requirements, SDL will try to munge the string for it + * (truncate, etc), but the original string contents will be available from + * SDL_GetThreadName(). + * + * The size (in bytes) of the new stack can be specified. Zero means "use the + * system default" which might be wildly different between platforms. x86 + * Linux generally defaults to eight megabytes, an embedded device might be a + * few kilobytes instead. You generally need to specify a stack that is a + * multiple of the system's page size (in many cases, this is 4 kilobytes, but + * check your system documentation). + * + * In SDL 2.1, stack size will be folded into the original SDL_CreateThread + * function, but for backwards compatibility, this is currently a separate + * function. + * + * \param fn the SDL_ThreadFunction function to call in the new thread + * \param name the name of the thread + * \param stacksize the size, in bytes, to allocate for the new thread stack. + * \param data a pointer that is passed to `fn` + * \returns an opaque pointer to the new thread object on success, NULL if the + * new thread could not be created; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_WaitThread + */ +extern DECLSPEC SDL_Thread *SDLCALL +SDL_CreateThreadWithStackSize(SDL_ThreadFunction fn, const char *name, const size_t stacksize, void *data); + +#endif + +/** + * Get the thread name as it was specified in SDL_CreateThread(). + * + * This is internal memory, not to be freed by the caller, and remains valid + * until the specified thread is cleaned up by SDL_WaitThread(). + * + * \param thread the thread to query + * \returns a pointer to a UTF-8 string that names the specified thread, or + * NULL if it doesn't have a name. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + */ +extern DECLSPEC const char *SDLCALL SDL_GetThreadName(SDL_Thread *thread); + +/** + * Get the thread identifier for the current thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * This function also returns a valid thread ID when called from the main + * thread. + * + * \returns the ID of the current thread. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_ThreadID(void); + +/** + * Get the thread identifier for the specified thread. + * + * This thread identifier is as reported by the underlying operating system. + * If SDL is running on a platform that does not support threads the return + * value will always be zero. + * + * \param thread the thread to query + * \returns the ID of the specified thread, or the ID of the current thread if + * `thread` is NULL. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ThreadID + */ +extern DECLSPEC SDL_threadID SDLCALL SDL_GetThreadID(SDL_Thread * thread); + +/** + * Set the priority for the current thread. + * + * Note that some platforms will not let you alter the priority (or at least, + * promote the thread to a higher priority) at all, and some require you to be + * an administrator account. Be prepared for this to fail. + * + * \param priority the SDL_ThreadPriority to set + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC int SDLCALL SDL_SetThreadPriority(SDL_ThreadPriority priority); + +/** + * Wait for a thread to finish. + * + * Threads that haven't been detached will remain (as a "zombie") until this + * function cleans them up. Not doing so is a resource leak. + * + * Once a thread has been cleaned up through this function, the SDL_Thread + * that references it becomes invalid and should not be referenced again. As + * such, only one thread may call SDL_WaitThread() on another. + * + * The return code for the thread function is placed in the area pointed to by + * `status`, if `status` is not NULL. + * + * You may not wait on a thread that has been used in a call to + * SDL_DetachThread(). Use either that function or this one, but not both, or + * behavior is undefined. + * + * It is safe to pass a NULL thread to this function; it is a no-op. + * + * Note that the thread pointer is freed by this function and is not valid + * afterward. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * \param status pointer to an integer that will receive the value returned + * from the thread function by its 'return', or NULL to not + * receive such value back. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateThread + * \sa SDL_DetachThread + */ +extern DECLSPEC void SDLCALL SDL_WaitThread(SDL_Thread * thread, int *status); + +/** + * Let a thread clean up on exit without intervention. + * + * A thread may be "detached" to signify that it should not remain until + * another thread has called SDL_WaitThread() on it. Detaching a thread is + * useful for long-running threads that nothing needs to synchronize with or + * further manage. When a detached thread is done, it simply goes away. + * + * There is no way to recover the return code of a detached thread. If you + * need this, don't detach the thread and instead use SDL_WaitThread(). + * + * Once a thread is detached, you should usually assume the SDL_Thread isn't + * safe to reference again, as it will become invalid immediately upon the + * detached thread's exit, instead of remaining until someone has called + * SDL_WaitThread() to finally clean it up. As such, don't detach the same + * thread more than once. + * + * If a thread has already exited when passed to SDL_DetachThread(), it will + * stop waiting for a call to SDL_WaitThread() and clean up immediately. It is + * not safe to detach a thread that might be used with SDL_WaitThread(). + * + * You may not call SDL_WaitThread() on a thread that has been detached. Use + * either that function or this one, but not both, or behavior is undefined. + * + * It is safe to pass NULL to this function; it is a no-op. + * + * \param thread the SDL_Thread pointer that was returned from the + * SDL_CreateThread() call that started this thread + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_CreateThread + * \sa SDL_WaitThread + */ +extern DECLSPEC void SDLCALL SDL_DetachThread(SDL_Thread * thread); + +/** + * Create a piece of thread-local storage. + * + * This creates an identifier that is globally visible to all threads but + * refers to data that is thread-specific. + * + * \returns the newly created thread local storage identifier or 0 on error. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSGet + * \sa SDL_TLSSet + */ +extern DECLSPEC SDL_TLSID SDLCALL SDL_TLSCreate(void); + +/** + * Get the current thread's value associated with a thread local storage ID. + * + * \param id the thread local storage ID + * \returns the value associated with the ID for the current thread or NULL if + * no value has been set; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSSet + */ +extern DECLSPEC void * SDLCALL SDL_TLSGet(SDL_TLSID id); + +/** + * Set the current thread's value associated with a thread local storage ID. + * + * The function prototype for `destructor` is: + * + * ```c + * void destructor(void *value) + * ``` + * + * where its parameter `value` is what was passed as `value` to SDL_TLSSet(). + * + * \param id the thread local storage ID + * \param value the value to associate with the ID for the current thread + * \param destructor a function called when the thread exits, to free the + * value + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TLSCreate + * \sa SDL_TLSGet + */ +extern DECLSPEC int SDLCALL SDL_TLSSet(SDL_TLSID id, const void *value, void (SDLCALL *destructor)(void*)); + +/** + * Cleanup all TLS data for this thread. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC void SDLCALL SDL_TLSCleanup(void); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_thread_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_timer.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_timer.h new file mode 100644 index 0000000..02ef910 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_timer.h @@ -0,0 +1,222 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +#ifndef SDL_timer_h_ +#define SDL_timer_h_ + +/** + * \file SDL_timer.h + * + * Header for the SDL time management routines. + */ + +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Get the number of milliseconds since SDL library initialization. + * + * This value wraps if the program runs for more than ~49 days. + * + * This function is not recommended as of SDL 2.0.18; use SDL_GetTicks64() + * instead, where the value doesn't wrap every ~49 days. There are places in + * SDL where we provide a 32-bit timestamp that can not change without + * breaking binary compatibility, though, so this function isn't officially + * deprecated. + * + * \returns an unsigned 32-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_TICKS_PASSED + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetTicks(void); + +/** + * Get the number of milliseconds since SDL library initialization. + * + * Note that you should not use the SDL_TICKS_PASSED macro with values + * returned by this function, as that macro does clever math to compensate for + * the 32-bit overflow every ~49 days that SDL_GetTicks() suffers from. 64-bit + * values from this function can be safely compared directly. + * + * For example, if you want to wait 100 ms, you could do this: + * + * ```c + * const Uint64 timeout = SDL_GetTicks64() + 100; + * while (SDL_GetTicks64() < timeout) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * \returns an unsigned 64-bit value representing the number of milliseconds + * since the SDL library initialized. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetTicks64(void); + +/** + * Compare 32-bit SDL ticks values, and return true if `A` has passed `B`. + * + * This should be used with results from SDL_GetTicks(), as this macro + * attempts to deal with the 32-bit counter wrapping back to zero every ~49 + * days, but should _not_ be used with SDL_GetTicks64(), which does not have + * that problem. + * + * For example, with SDL_GetTicks(), if you want to wait 100 ms, you could + * do this: + * + * ```c + * const Uint32 timeout = SDL_GetTicks() + 100; + * while (!SDL_TICKS_PASSED(SDL_GetTicks(), timeout)) { + * // ... do work until timeout has elapsed + * } + * ``` + * + * Note that this does not handle tick differences greater + * than 2^31 so take care when using the above kind of code + * with large timeout delays (tens of days). + */ +#define SDL_TICKS_PASSED(A, B) ((Sint32)((B) - (A)) <= 0) + +/** + * Get the current value of the high resolution counter. + * + * This function is typically used for profiling. + * + * The counter values are only meaningful relative to each other. Differences + * between values can be converted to times by using + * SDL_GetPerformanceFrequency(). + * + * \returns the current counter value. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceFrequency + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceCounter(void); + +/** + * Get the count per second of the high resolution counter. + * + * \returns a platform-specific count per second. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetPerformanceCounter + */ +extern DECLSPEC Uint64 SDLCALL SDL_GetPerformanceFrequency(void); + +/** + * Wait a specified number of milliseconds before returning. + * + * This function waits a specified number of milliseconds before returning. It + * waits at least the specified time, but possibly longer due to OS + * scheduling. + * + * \param ms the number of milliseconds to delay + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_Delay(Uint32 ms); + +/** + * Function prototype for the timer callback function. + * + * The callback function is passed the current timer interval and returns + * the next timer interval. If the returned value is the same as the one + * passed in, the periodic alarm continues, otherwise a new alarm is + * scheduled. If the callback returns 0, the periodic alarm is cancelled. + */ +typedef Uint32 (SDLCALL * SDL_TimerCallback) (Uint32 interval, void *param); + +/** + * Definition of the timer ID type. + */ +typedef int SDL_TimerID; + +/** + * Call a callback function at a future time. + * + * If you use this function, you must pass `SDL_INIT_TIMER` to SDL_Init(). + * + * The callback function is passed the current timer interval and the user + * supplied parameter from the SDL_AddTimer() call and should return the next + * timer interval. If the value returned from the callback is 0, the timer is + * canceled. + * + * The callback is run on a separate thread. + * + * Timers take into account the amount of time it took to execute the + * callback. For example, if the callback took 250 ms to execute and returned + * 1000 (ms), the timer would only wait another 750 ms before its next + * iteration. + * + * Timing may be inexact due to OS scheduling. Be sure to note the current + * time with SDL_GetTicks() or SDL_GetPerformanceCounter() in case your + * callback needs to adjust for variances. + * + * \param interval the timer delay, in milliseconds, passed to `callback` + * \param callback the SDL_TimerCallback function to call when the specified + * `interval` elapses + * \param param a pointer that is passed to `callback` + * \returns a timer ID or 0 if an error occurs; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RemoveTimer + */ +extern DECLSPEC SDL_TimerID SDLCALL SDL_AddTimer(Uint32 interval, + SDL_TimerCallback callback, + void *param); + +/** + * Remove a timer created with SDL_AddTimer(). + * + * \param id the ID of the timer to remove + * \returns SDL_TRUE if the timer is removed or SDL_FALSE if the timer wasn't + * found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_AddTimer + */ +extern DECLSPEC SDL_bool SDLCALL SDL_RemoveTimer(SDL_TimerID id); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_timer_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_touch.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_touch.h new file mode 100644 index 0000000..0649005 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_touch.h @@ -0,0 +1,150 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_touch.h + * + * Include file for SDL touch event handling. + */ + +#ifndef SDL_touch_h_ +#define SDL_touch_h_ + +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +typedef Sint64 SDL_TouchID; +typedef Sint64 SDL_FingerID; + +typedef enum +{ + SDL_TOUCH_DEVICE_INVALID = -1, + SDL_TOUCH_DEVICE_DIRECT, /* touch screen with window-relative coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_ABSOLUTE, /* trackpad with absolute device coordinates */ + SDL_TOUCH_DEVICE_INDIRECT_RELATIVE /* trackpad with screen cursor-relative coordinates */ +} SDL_TouchDeviceType; + +typedef struct SDL_Finger +{ + SDL_FingerID id; + float x; + float y; + float pressure; +} SDL_Finger; + +/* Used as the device ID for mouse events simulated with touch input */ +#define SDL_TOUCH_MOUSEID ((Uint32)-1) + +/* Used as the SDL_TouchID for touch events simulated with mouse input */ +#define SDL_MOUSE_TOUCHID ((Sint64)-1) + + +/** + * Get the number of registered touch devices. + * + * On some platforms SDL first sees the touch device if it was actually used. + * Therefore SDL_GetNumTouchDevices() may return 0 although devices are + * available. After using all devices at least once the number will be + * correct. + * + * This was fixed for Android in SDL 2.0.1. + * + * \returns the number of registered touch devices. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchDevice + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchDevices(void); + +/** + * Get the touch ID with the given index. + * + * \param index the touch device index + * \returns the touch ID with the given index on success or 0 if the index is + * invalid; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumTouchDevices + */ +extern DECLSPEC SDL_TouchID SDLCALL SDL_GetTouchDevice(int index); + +/** + * Get the touch device name as reported from the driver or NULL if the index + * is invalid. + * + * \since This function is available since SDL 2.0.22. + */ +extern DECLSPEC const char* SDLCALL SDL_GetTouchName(int index); + +/** + * Get the type of the given touch device. + * + * \since This function is available since SDL 2.0.10. + */ +extern DECLSPEC SDL_TouchDeviceType SDLCALL SDL_GetTouchDeviceType(SDL_TouchID touchID); + +/** + * Get the number of active fingers for a given touch device. + * + * \param touchID the ID of a touch device + * \returns the number of active fingers for a given touch device on success + * or 0 on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetTouchFinger + */ +extern DECLSPEC int SDLCALL SDL_GetNumTouchFingers(SDL_TouchID touchID); + +/** + * Get the finger object for specified touch device ID and finger index. + * + * The returned resource is owned by SDL and should not be deallocated. + * + * \param touchID the ID of the requested touch device + * \param index the index of the requested finger + * \returns a pointer to the SDL_Finger object or NULL if no object at the + * given ID and index could be found. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_RecordGesture + */ +extern DECLSPEC SDL_Finger * SDLCALL SDL_GetTouchFinger(SDL_TouchID touchID, int index); + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_touch_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_types.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_types.h new file mode 100644 index 0000000..e9f77a1 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_types.h @@ -0,0 +1,29 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_types.h + * + * \deprecated + */ + +/* DEPRECATED */ +#include diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_version.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_version.h new file mode 100644 index 0000000..082cc98 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_version.h @@ -0,0 +1,204 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_version.h + * + * This header defines the current SDL version. + */ + +#ifndef SDL_version_h_ +#define SDL_version_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * Information about the version of SDL in use. + * + * Represents the library's version as three levels: major revision + * (increments with massive changes, additions, and enhancements), + * minor revision (increments with backwards-compatible changes to the + * major revision), and patchlevel (increments with fixes to the minor + * revision). + * + * \sa SDL_VERSION + * \sa SDL_GetVersion + */ +typedef struct SDL_version +{ + Uint8 major; /**< major version */ + Uint8 minor; /**< minor version */ + Uint8 patch; /**< update version */ +} SDL_version; + +/* Printable format: "%d.%d.%d", MAJOR, MINOR, PATCHLEVEL +*/ +#define SDL_MAJOR_VERSION 2 +#define SDL_MINOR_VERSION 28 +#define SDL_PATCHLEVEL 5 + +/** + * Macro to determine SDL version program was compiled against. + * + * This macro fills in a SDL_version structure with the version of the + * library you compiled against. This is determined by what header the + * compiler uses. Note that if you dynamically linked the library, you might + * have a slightly newer or older version at runtime. That version can be + * determined with SDL_GetVersion(), which, unlike SDL_VERSION(), + * is not a macro. + * + * \param x A pointer to a SDL_version struct to initialize. + * + * \sa SDL_version + * \sa SDL_GetVersion + */ +#define SDL_VERSION(x) \ +{ \ + (x)->major = SDL_MAJOR_VERSION; \ + (x)->minor = SDL_MINOR_VERSION; \ + (x)->patch = SDL_PATCHLEVEL; \ +} + +/* TODO: Remove this whole block in SDL 3 */ +#if SDL_MAJOR_VERSION < 3 +/** + * This macro turns the version numbers into a numeric value: + * \verbatim + (1,2,3) -> (1203) + \endverbatim + * + * This assumes that there will never be more than 100 patchlevels. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300, + * and 2.255.99 would be encoded as 25799. + * This macro will not be available in SDL 3.x. + */ +#define SDL_VERSIONNUM(X, Y, Z) \ + ((X)*1000 + (Y)*100 + (Z)) + +/** + * This is the version number macro for the current SDL version. + * + * In versions higher than 2.9.0, the minor version overflows into + * the thousands digit: for example, 2.23.0 is encoded as 4300. + * This macro will not be available in SDL 3.x. + * + * Deprecated, use SDL_VERSION_ATLEAST or SDL_VERSION instead. + */ +#define SDL_COMPILEDVERSION \ + SDL_VERSIONNUM(SDL_MAJOR_VERSION, SDL_MINOR_VERSION, SDL_PATCHLEVEL) +#endif /* SDL_MAJOR_VERSION < 3 */ + +/** + * This macro will evaluate to true if compiled with SDL at least X.Y.Z. + */ +#define SDL_VERSION_ATLEAST(X, Y, Z) \ + ((SDL_MAJOR_VERSION >= X) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION >= Y) && \ + (SDL_MAJOR_VERSION > X || SDL_MINOR_VERSION > Y || SDL_PATCHLEVEL >= Z)) + +/** + * Get the version of SDL that is linked against your program. + * + * If you are linking to SDL dynamically, then it is possible that the current + * version will be different than the version you compiled against. This + * function returns the current version, while SDL_VERSION() is a macro that + * tells you what version you compiled with. + * + * This function may be called safely at any time, even before SDL_Init(). + * + * \param ver the SDL_version structure that contains the version information + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern DECLSPEC void SDLCALL SDL_GetVersion(SDL_version * ver); + +/** + * Get the code revision of SDL that is linked against your program. + * + * This value is the revision of the code you are linked with and may be + * different from the code you are compiling with, which is found in the + * constant SDL_REVISION. + * + * The revision is arbitrary string (a hash value) uniquely identifying the + * exact revision of the SDL library in use, and is only useful in comparing + * against other revisions. It is NOT an incrementing number. + * + * If SDL wasn't built from a git repository with the appropriate tools, this + * will return an empty string. + * + * Prior to SDL 2.0.16, before development moved to GitHub, this returned a + * hash for a Mercurial repository. + * + * You shouldn't use this function for anything but logging it for debugging + * purposes. The string is not intended to be reliable in any way. + * + * \returns an arbitrary string, uniquely identifying the exact revision of + * the SDL library in use. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVersion + */ +extern DECLSPEC const char *SDLCALL SDL_GetRevision(void); + +/** + * Obsolete function, do not use. + * + * When SDL was hosted in a Mercurial repository, and was built carefully, + * this would return the revision number that the build was created from. This + * number was not reliable for several reasons, but more importantly, SDL is + * now hosted in a git repository, which does not offer numbers at all, only + * hashes. This function only ever returns zero now. Don't use it. + * + * Before SDL 2.0.16, this might have returned an unreliable, but non-zero + * number. + * + * \deprecated Use SDL_GetRevision() instead; if SDL was carefully built, it + * will return a git hash. + * + * \returns zero, always, in modern SDL releases. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetRevision + */ +extern SDL_DEPRECATED DECLSPEC int SDLCALL SDL_GetRevisionNumber(void); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_version_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_video.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_video.h new file mode 100644 index 0000000..d1da813 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_video.h @@ -0,0 +1,2178 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_video.h + * + * Header file for SDL video functions. + */ + +#ifndef SDL_video_h_ +#define SDL_video_h_ + +#include +#include +#include +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief The structure that defines a display mode + * + * \sa SDL_GetNumDisplayModes() + * \sa SDL_GetDisplayMode() + * \sa SDL_GetDesktopDisplayMode() + * \sa SDL_GetCurrentDisplayMode() + * \sa SDL_GetClosestDisplayMode() + * \sa SDL_SetWindowDisplayMode() + * \sa SDL_GetWindowDisplayMode() + */ +typedef struct +{ + Uint32 format; /**< pixel format */ + int w; /**< width, in screen coordinates */ + int h; /**< height, in screen coordinates */ + int refresh_rate; /**< refresh rate (or zero for unspecified) */ + void *driverdata; /**< driver-specific data, initialize to 0 */ +} SDL_DisplayMode; + +/** + * \brief The type used to identify a window + * + * \sa SDL_CreateWindow() + * \sa SDL_CreateWindowFrom() + * \sa SDL_DestroyWindow() + * \sa SDL_FlashWindow() + * \sa SDL_GetWindowData() + * \sa SDL_GetWindowFlags() + * \sa SDL_GetWindowGrab() + * \sa SDL_GetWindowKeyboardGrab() + * \sa SDL_GetWindowMouseGrab() + * \sa SDL_GetWindowPosition() + * \sa SDL_GetWindowSize() + * \sa SDL_GetWindowTitle() + * \sa SDL_HideWindow() + * \sa SDL_MaximizeWindow() + * \sa SDL_MinimizeWindow() + * \sa SDL_RaiseWindow() + * \sa SDL_RestoreWindow() + * \sa SDL_SetWindowData() + * \sa SDL_SetWindowFullscreen() + * \sa SDL_SetWindowGrab() + * \sa SDL_SetWindowKeyboardGrab() + * \sa SDL_SetWindowMouseGrab() + * \sa SDL_SetWindowIcon() + * \sa SDL_SetWindowPosition() + * \sa SDL_SetWindowSize() + * \sa SDL_SetWindowBordered() + * \sa SDL_SetWindowResizable() + * \sa SDL_SetWindowTitle() + * \sa SDL_ShowWindow() + */ +typedef struct SDL_Window SDL_Window; + +/** + * \brief The flags on a window + * + * \sa SDL_GetWindowFlags() + */ +typedef enum +{ + SDL_WINDOW_FULLSCREEN = 0x00000001, /**< fullscreen window */ + SDL_WINDOW_OPENGL = 0x00000002, /**< window usable with OpenGL context */ + SDL_WINDOW_SHOWN = 0x00000004, /**< window is visible */ + SDL_WINDOW_HIDDEN = 0x00000008, /**< window is not visible */ + SDL_WINDOW_BORDERLESS = 0x00000010, /**< no window decoration */ + SDL_WINDOW_RESIZABLE = 0x00000020, /**< window can be resized */ + SDL_WINDOW_MINIMIZED = 0x00000040, /**< window is minimized */ + SDL_WINDOW_MAXIMIZED = 0x00000080, /**< window is maximized */ + SDL_WINDOW_MOUSE_GRABBED = 0x00000100, /**< window has grabbed mouse input */ + SDL_WINDOW_INPUT_FOCUS = 0x00000200, /**< window has input focus */ + SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ + SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), + SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ + SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to MOUSE_GRABBED) */ + SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ + SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ + SDL_WINDOW_UTILITY = 0x00020000, /**< window should be treated as a utility window */ + SDL_WINDOW_TOOLTIP = 0x00040000, /**< window should be treated as a tooltip */ + SDL_WINDOW_POPUP_MENU = 0x00080000, /**< window should be treated as a popup menu */ + SDL_WINDOW_KEYBOARD_GRABBED = 0x00100000, /**< window has grabbed keyboard input */ + SDL_WINDOW_VULKAN = 0x10000000, /**< window usable for Vulkan surface */ + SDL_WINDOW_METAL = 0x20000000, /**< window usable for Metal view */ + + SDL_WINDOW_INPUT_GRABBED = SDL_WINDOW_MOUSE_GRABBED /**< equivalent to SDL_WINDOW_MOUSE_GRABBED for compatibility */ +} SDL_WindowFlags; + +/** + * \brief Used to indicate that you don't care what the window position is. + */ +#define SDL_WINDOWPOS_UNDEFINED_MASK 0x1FFF0000u +#define SDL_WINDOWPOS_UNDEFINED_DISPLAY(X) (SDL_WINDOWPOS_UNDEFINED_MASK|(X)) +#define SDL_WINDOWPOS_UNDEFINED SDL_WINDOWPOS_UNDEFINED_DISPLAY(0) +#define SDL_WINDOWPOS_ISUNDEFINED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_UNDEFINED_MASK) + +/** + * \brief Used to indicate that the window position should be centered. + */ +#define SDL_WINDOWPOS_CENTERED_MASK 0x2FFF0000u +#define SDL_WINDOWPOS_CENTERED_DISPLAY(X) (SDL_WINDOWPOS_CENTERED_MASK|(X)) +#define SDL_WINDOWPOS_CENTERED SDL_WINDOWPOS_CENTERED_DISPLAY(0) +#define SDL_WINDOWPOS_ISCENTERED(X) \ + (((X)&0xFFFF0000) == SDL_WINDOWPOS_CENTERED_MASK) + +/** + * \brief Event subtype for window events + */ +typedef enum +{ + SDL_WINDOWEVENT_NONE, /**< Never used */ + SDL_WINDOWEVENT_SHOWN, /**< Window has been shown */ + SDL_WINDOWEVENT_HIDDEN, /**< Window has been hidden */ + SDL_WINDOWEVENT_EXPOSED, /**< Window has been exposed and should be + redrawn */ + SDL_WINDOWEVENT_MOVED, /**< Window has been moved to data1, data2 + */ + SDL_WINDOWEVENT_RESIZED, /**< Window has been resized to data1xdata2 */ + SDL_WINDOWEVENT_SIZE_CHANGED, /**< The window size has changed, either as + a result of an API call or through the + system or user changing the window size. */ + SDL_WINDOWEVENT_MINIMIZED, /**< Window has been minimized */ + SDL_WINDOWEVENT_MAXIMIZED, /**< Window has been maximized */ + SDL_WINDOWEVENT_RESTORED, /**< Window has been restored to normal size + and position */ + SDL_WINDOWEVENT_ENTER, /**< Window has gained mouse focus */ + SDL_WINDOWEVENT_LEAVE, /**< Window has lost mouse focus */ + SDL_WINDOWEVENT_FOCUS_GAINED, /**< Window has gained keyboard focus */ + SDL_WINDOWEVENT_FOCUS_LOST, /**< Window has lost keyboard focus */ + SDL_WINDOWEVENT_CLOSE, /**< The window manager requests that the window be closed */ + SDL_WINDOWEVENT_TAKE_FOCUS, /**< Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) */ + SDL_WINDOWEVENT_HIT_TEST, /**< Window had a hit test that wasn't SDL_HITTEST_NORMAL. */ + SDL_WINDOWEVENT_ICCPROF_CHANGED,/**< The ICC profile of the window's display has changed. */ + SDL_WINDOWEVENT_DISPLAY_CHANGED /**< Window has been moved to display data1. */ +} SDL_WindowEventID; + +/** + * \brief Event subtype for display events + */ +typedef enum +{ + SDL_DISPLAYEVENT_NONE, /**< Never used */ + SDL_DISPLAYEVENT_ORIENTATION, /**< Display orientation has changed to data1 */ + SDL_DISPLAYEVENT_CONNECTED, /**< Display has been added to the system */ + SDL_DISPLAYEVENT_DISCONNECTED, /**< Display has been removed from the system */ + SDL_DISPLAYEVENT_MOVED /**< Display has changed position */ +} SDL_DisplayEventID; + +/** + * \brief Display orientation + */ +typedef enum +{ + SDL_ORIENTATION_UNKNOWN, /**< The display orientation can't be determined */ + SDL_ORIENTATION_LANDSCAPE, /**< The display is in landscape mode, with the right side up, relative to portrait mode */ + SDL_ORIENTATION_LANDSCAPE_FLIPPED, /**< The display is in landscape mode, with the left side up, relative to portrait mode */ + SDL_ORIENTATION_PORTRAIT, /**< The display is in portrait mode */ + SDL_ORIENTATION_PORTRAIT_FLIPPED /**< The display is in portrait mode, upside down */ +} SDL_DisplayOrientation; + +/** + * \brief Window flash operation + */ +typedef enum +{ + SDL_FLASH_CANCEL, /**< Cancel any window flash state */ + SDL_FLASH_BRIEFLY, /**< Flash the window briefly to get attention */ + SDL_FLASH_UNTIL_FOCUSED /**< Flash the window until it gets focus */ +} SDL_FlashOperation; + +/** + * \brief An opaque handle to an OpenGL context. + */ +typedef void *SDL_GLContext; + +/** + * \brief OpenGL configuration attributes + */ +typedef enum +{ + SDL_GL_RED_SIZE, + SDL_GL_GREEN_SIZE, + SDL_GL_BLUE_SIZE, + SDL_GL_ALPHA_SIZE, + SDL_GL_BUFFER_SIZE, + SDL_GL_DOUBLEBUFFER, + SDL_GL_DEPTH_SIZE, + SDL_GL_STENCIL_SIZE, + SDL_GL_ACCUM_RED_SIZE, + SDL_GL_ACCUM_GREEN_SIZE, + SDL_GL_ACCUM_BLUE_SIZE, + SDL_GL_ACCUM_ALPHA_SIZE, + SDL_GL_STEREO, + SDL_GL_MULTISAMPLEBUFFERS, + SDL_GL_MULTISAMPLESAMPLES, + SDL_GL_ACCELERATED_VISUAL, + SDL_GL_RETAINED_BACKING, + SDL_GL_CONTEXT_MAJOR_VERSION, + SDL_GL_CONTEXT_MINOR_VERSION, + SDL_GL_CONTEXT_EGL, + SDL_GL_CONTEXT_FLAGS, + SDL_GL_CONTEXT_PROFILE_MASK, + SDL_GL_SHARE_WITH_CURRENT_CONTEXT, + SDL_GL_FRAMEBUFFER_SRGB_CAPABLE, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR, + SDL_GL_CONTEXT_RESET_NOTIFICATION, + SDL_GL_CONTEXT_NO_ERROR, + SDL_GL_FLOATBUFFERS +} SDL_GLattr; + +typedef enum +{ + SDL_GL_CONTEXT_PROFILE_CORE = 0x0001, + SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 0x0002, + SDL_GL_CONTEXT_PROFILE_ES = 0x0004 /**< GLX_CONTEXT_ES2_PROFILE_BIT_EXT */ +} SDL_GLprofile; + +typedef enum +{ + SDL_GL_CONTEXT_DEBUG_FLAG = 0x0001, + SDL_GL_CONTEXT_FORWARD_COMPATIBLE_FLAG = 0x0002, + SDL_GL_CONTEXT_ROBUST_ACCESS_FLAG = 0x0004, + SDL_GL_CONTEXT_RESET_ISOLATION_FLAG = 0x0008 +} SDL_GLcontextFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_NONE = 0x0000, + SDL_GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH = 0x0001 +} SDL_GLcontextReleaseFlag; + +typedef enum +{ + SDL_GL_CONTEXT_RESET_NO_NOTIFICATION = 0x0000, + SDL_GL_CONTEXT_RESET_LOSE_CONTEXT = 0x0001 +} SDL_GLContextResetNotification; + +/* Function prototypes */ + +/** + * Get the number of video drivers compiled into SDL. + * + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDrivers(void); + +/** + * Get the name of a built in video driver. + * + * The video drivers are presented in the order in which they are normally + * checked during initialization. + * + * \param index the index of a video driver + * \returns the name of the video driver with the given **index**. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + */ +extern DECLSPEC const char *SDLCALL SDL_GetVideoDriver(int index); + +/** + * Initialize the video subsystem, optionally specifying a video driver. + * + * This function initializes the video subsystem, setting up a connection to + * the window manager, etc, and determines the available display modes and + * pixel formats, but does not initialize a window or graphics mode. + * + * If you use this function and you haven't used the SDL_INIT_VIDEO flag with + * either SDL_Init() or SDL_InitSubSystem(), you should call SDL_VideoQuit() + * before calling SDL_Quit(). + * + * It is safe to call this function multiple times. SDL_VideoInit() will call + * SDL_VideoQuit() itself if the video subsystem has already been initialized. + * + * You can use SDL_GetNumVideoDrivers() and SDL_GetVideoDriver() to find a + * specific `driver_name`. + * + * \param driver_name the name of a video driver to initialize, or NULL for + * the default driver + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + * \sa SDL_InitSubSystem + * \sa SDL_VideoQuit + */ +extern DECLSPEC int SDLCALL SDL_VideoInit(const char *driver_name); + +/** + * Shut down the video subsystem, if initialized with SDL_VideoInit(). + * + * This function closes all windows, and restores the original video mode. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_VideoInit + */ +extern DECLSPEC void SDLCALL SDL_VideoQuit(void); + +/** + * Get the name of the currently initialized video driver. + * + * \returns the name of the current video driver or NULL if no driver has been + * initialized. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDrivers + * \sa SDL_GetVideoDriver + */ +extern DECLSPEC const char *SDLCALL SDL_GetCurrentVideoDriver(void); + +/** + * Get the number of available video displays. + * + * \returns a number >= 1 or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + */ +extern DECLSPEC int SDLCALL SDL_GetNumVideoDisplays(void); + +/** + * Get the name of a display in UTF-8 encoding. + * + * \param displayIndex the index of display from which the name should be + * queried + * \returns the name of a display or NULL for an invalid display index or + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC const char * SDLCALL SDL_GetDisplayName(int displayIndex); + +/** + * Get the desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * \param displayIndex the index of the display to query + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the usable desktop area represented by a display. + * + * The primary display (`displayIndex` zero) is always located at 0,0. + * + * This is the same area as SDL_GetDisplayBounds() reports, but with portions + * reserved by the system removed. For example, on Apple's macOS, this + * subtracts the area occupied by the menu bar and dock. + * + * Setting a window to be fullscreen generally bypasses these unusable areas, + * so these are good guidelines for the maximum space available to a + * non-fullscreen window. + * + * The parameter `rect` is ignored if it is NULL. + * + * This function also returns -1 if the parameter `displayIndex` is out of + * range. + * + * \param displayIndex the index of the display to query the usable bounds + * from + * \param rect the SDL_Rect structure filled in with the display bounds + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayUsableBounds(int displayIndex, SDL_Rect * rect); + +/** + * Get the dots/pixels-per-inch for a display. + * + * Diagonal, horizontal and vertical DPI can all be optionally returned if the + * appropriate parameter is non-NULL. + * + * A failure of this function usually means that either no DPI information is + * available or the `displayIndex` is out of range. + * + * **WARNING**: This reports the DPI that the hardware reports, and it is not + * always reliable! It is almost always better to use SDL_GetWindowSize() to + * find the window size, which might be in logical points instead of pixels, + * and then SDL_GL_GetDrawableSize(), SDL_Vulkan_GetDrawableSize(), + * SDL_Metal_GetDrawableSize(), or SDL_GetRendererOutputSize(), and compare + * the two values to get an actual scaling value between the two. We will be + * rethinking how high-dpi details should be managed in SDL3 to make things + * more consistent, reliable, and clear. + * + * \param displayIndex the index of the display from which DPI information + * should be queried + * \param ddpi a pointer filled in with the diagonal DPI of the display; may + * be NULL + * \param hdpi a pointer filled in with the horizontal DPI of the display; may + * be NULL + * \param vdpi a pointer filled in with the vertical DPI of the display; may + * be NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayDPI(int displayIndex, float * ddpi, float * hdpi, float * vdpi); + +/** + * Get the orientation of a display. + * + * \param displayIndex the index of the display to query + * \returns The SDL_DisplayOrientation enum value of the display, or + * `SDL_ORIENTATION_UNKNOWN` if it isn't available. + * + * \since This function is available since SDL 2.0.9. + * + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC SDL_DisplayOrientation SDLCALL SDL_GetDisplayOrientation(int displayIndex); + +/** + * Get the number of available display modes. + * + * The `displayIndex` needs to be in the range from 0 to + * SDL_GetNumVideoDisplays() - 1. + * + * \param displayIndex the index of the display to query + * \returns a number >= 1 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetNumDisplayModes(int displayIndex); + +/** + * Get information about a specific display mode. + * + * The display modes are sorted in this priority: + * + * - width -> largest to smallest + * - height -> largest to smallest + * - bits per pixel -> more colors to fewer colors + * - packed pixel layout -> largest to smallest + * - refresh rate -> highest to lowest + * + * \param displayIndex the index of the display to query + * \param modeIndex the index of the display mode to query + * \param mode an SDL_DisplayMode structure filled in with the mode at + * `modeIndex` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC int SDLCALL SDL_GetDisplayMode(int displayIndex, int modeIndex, + SDL_DisplayMode * mode); + +/** + * Get information about the desktop's display mode. + * + * There's a difference between this function and SDL_GetCurrentDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the previous native display mode, and not the current + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetCurrentDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetDesktopDisplayMode(int displayIndex, SDL_DisplayMode * mode); + +/** + * Get information about the current display mode. + * + * There's a difference between this function and SDL_GetDesktopDisplayMode() + * when SDL runs fullscreen and has changed the resolution. In that case this + * function will return the current display mode, and not the previous native + * display mode. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure filled in with the current display + * mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDesktopDisplayMode + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumVideoDisplays + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_GetCurrentDisplayMode(int displayIndex, SDL_DisplayMode * mode); + + +/** + * Get the closest match to the requested display mode. + * + * The available display modes are scanned and `closest` is filled in with the + * closest mode matching the requested mode and returned. The mode format and + * refresh rate default to the desktop mode if they are set to 0. The modes + * are scanned with size being first priority, format being second priority, + * and finally checking the refresh rate. If all the available modes are too + * small, then NULL is returned. + * + * \param displayIndex the index of the display to query + * \param mode an SDL_DisplayMode structure containing the desired display + * mode + * \param closest an SDL_DisplayMode structure filled in with the closest + * match of the available display modes + * \returns the passed in value `closest` or NULL if no matching video mode + * was available; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayMode + * \sa SDL_GetNumDisplayModes + */ +extern DECLSPEC SDL_DisplayMode * SDLCALL SDL_GetClosestDisplayMode(int displayIndex, const SDL_DisplayMode * mode, SDL_DisplayMode * closest); + +/** + * Get the index of the display containing a point + * + * \param point the point to query + * \returns the index of the display containing the point or a negative error + * code on failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetPointDisplayIndex(const SDL_Point * point); + +/** + * Get the index of the display primarily containing a rect + * + * \param rect the rect to query + * \returns the index of the display entirely containing the rect or closest + * to the center of the rect on success or a negative error code on + * failure; call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.24.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetRectDisplayIndex(const SDL_Rect * rect); + +/** + * Get the index of the display associated with a window. + * + * \param window the window to query + * \returns the index of the display containing the center of the window on + * success or a negative error code on failure; call SDL_GetError() + * for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetDisplayBounds + * \sa SDL_GetNumVideoDisplays + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayIndex(SDL_Window * window); + +/** + * Set the display mode to use when a window is visible at fullscreen. + * + * This only affects the display mode used when the window is fullscreen. To + * change the window size when the window is not fullscreen, use + * SDL_SetWindowSize(). + * + * \param window the window to affect + * \param mode the SDL_DisplayMode structure representing the mode to use, or + * NULL to use the window's dimensions and the desktop's format + * and refresh rate + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_SetWindowDisplayMode(SDL_Window * window, + const SDL_DisplayMode * mode); + +/** + * Query the display mode to use when a window is visible at fullscreen. + * + * \param window the window to query + * \param mode an SDL_DisplayMode structure filled in with the fullscreen + * display mode + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowDisplayMode + * \sa SDL_SetWindowFullscreen + */ +extern DECLSPEC int SDLCALL SDL_GetWindowDisplayMode(SDL_Window * window, + SDL_DisplayMode * mode); + +/** + * Get the raw ICC profile data for the screen the window is currently on. + * + * Data returned should be freed with SDL_free. + * + * \param window the window to query + * \param size the size of the ICC profile + * \returns the raw ICC profile data on success or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + */ +extern DECLSPEC void* SDLCALL SDL_GetWindowICCProfile(SDL_Window * window, size_t* size); + +/** + * Get the pixel format associated with the window. + * + * \param window the window to query + * \returns the pixel format of the window on success or + * SDL_PIXELFORMAT_UNKNOWN on failure; call SDL_GetError() for more + * information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); + +/** + * Create a window with the specified position, dimensions, and flags. + * + * `flags` may be any of the following OR'd together: + * + * - `SDL_WINDOW_FULLSCREEN`: fullscreen window + * - `SDL_WINDOW_FULLSCREEN_DESKTOP`: fullscreen window at desktop resolution + * - `SDL_WINDOW_OPENGL`: window usable with an OpenGL context + * - `SDL_WINDOW_VULKAN`: window usable with a Vulkan instance + * - `SDL_WINDOW_METAL`: window usable with a Metal instance + * - `SDL_WINDOW_HIDDEN`: window is not visible + * - `SDL_WINDOW_BORDERLESS`: no window decoration + * - `SDL_WINDOW_RESIZABLE`: window can be resized + * - `SDL_WINDOW_MINIMIZED`: window is minimized + * - `SDL_WINDOW_MAXIMIZED`: window is maximized + * - `SDL_WINDOW_INPUT_GRABBED`: window has grabbed input focus + * - `SDL_WINDOW_ALLOW_HIGHDPI`: window should be created in high-DPI mode if + * supported (>= SDL 2.0.1) + * + * `SDL_WINDOW_SHOWN` is ignored by SDL_CreateWindow(). The SDL_Window is + * implicitly shown if SDL_WINDOW_HIDDEN is not set. `SDL_WINDOW_SHOWN` may be + * queried later using SDL_GetWindowFlags(). + * + * On Apple's macOS, you **must** set the NSHighResolutionCapable Info.plist + * property to YES, otherwise you will not receive a High-DPI OpenGL canvas. + * + * If the window is created with the `SDL_WINDOW_ALLOW_HIGHDPI` flag, its size + * in pixels may differ from its size in screen coordinates on platforms with + * high-DPI support (e.g. iOS and macOS). Use SDL_GetWindowSize() to query the + * client area's size in screen coordinates, and SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to query the drawable size in pixels. Note that + * when this flag is set, the drawable size can vary after the window is + * created and should be queried after major window events such as when the + * window is resized or moved between displays. + * + * If the window is set fullscreen, the width and height parameters `w` and + * `h` will not be used. However, invalid size parameters (e.g. too large) may + * still fail. Window size is actually limited to 16384 x 16384 for all + * platforms at window creation. + * + * If the window is created with any of the SDL_WINDOW_OPENGL or + * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). + * + * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + * + * If SDL_WINDOW_METAL is specified on an OS that does not support Metal, + * SDL_CreateWindow() will fail. + * + * On non-Apple devices, SDL requires you to either not link to the Vulkan + * loader or link to a dynamic library version. This limitation may be removed + * in a future version of SDL. + * + * \param title the title of the window, in UTF-8 encoding + * \param x the x position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param y the y position of the window, `SDL_WINDOWPOS_CENTERED`, or + * `SDL_WINDOWPOS_UNDEFINED` + * \param w the width of the window, in screen coordinates + * \param h the height of the window, in screen coordinates + * \param flags 0, or one or more SDL_WindowFlags OR'd together + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindowFrom + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindow(const char *title, + int x, int y, int w, + int h, Uint32 flags); + +/** + * Create an SDL window from an existing native window. + * + * In some cases (e.g. OpenGL) and on some platforms (e.g. Microsoft Windows) + * the hint `SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT` needs to be configured + * before using SDL_CreateWindowFrom(). + * + * \param data a pointer to driver-dependent window creation data, typically + * your native window cast to a void* + * \returns the window that was created or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_DestroyWindow + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_CreateWindowFrom(const void *data); + +/** + * Get the numeric ID of a window. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param window the window to query + * \returns the ID of the window on success or 0 on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFromID + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowID(SDL_Window * window); + +/** + * Get a window from a stored ID. + * + * The numeric ID is what SDL_WindowEvent references, and is necessary to map + * these events to specific SDL_Window objects. + * + * \param id the ID of the window + * \returns the window associated with `id` or NULL if it doesn't exist; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowID + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetWindowFromID(Uint32 id); + +/** + * Get the window flags. + * + * \param window the window to query + * \returns a mask of the SDL_WindowFlags associated with `window` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_HideWindow + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + * \sa SDL_SetWindowFullscreen + * \sa SDL_SetWindowGrab + * \sa SDL_ShowWindow + */ +extern DECLSPEC Uint32 SDLCALL SDL_GetWindowFlags(SDL_Window * window); + +/** + * Set the title of a window. + * + * This string is expected to be in UTF-8 encoding. + * + * \param window the window to change + * \param title the desired window title in UTF-8 format + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowTitle + */ +extern DECLSPEC void SDLCALL SDL_SetWindowTitle(SDL_Window * window, + const char *title); + +/** + * Get the title of a window. + * + * \param window the window to query + * \returns the title of the window in UTF-8 format or "" if there is no + * title. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowTitle + */ +extern DECLSPEC const char *SDLCALL SDL_GetWindowTitle(SDL_Window * window); + +/** + * Set the icon for a window. + * + * \param window the window to change + * \param icon an SDL_Surface structure containing the icon for the window + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_SetWindowIcon(SDL_Window * window, + SDL_Surface * icon); + +/** + * Associate an arbitrary named pointer with a window. + * + * `name` is case-sensitive. + * + * \param window the window to associate with the pointer + * \param name the name of the pointer + * \param userdata the associated pointer + * \returns the previous value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowData + */ +extern DECLSPEC void* SDLCALL SDL_SetWindowData(SDL_Window * window, + const char *name, + void *userdata); + +/** + * Retrieve the data pointer associated with a window. + * + * \param window the window to query + * \param name the name of the pointer + * \returns the value associated with `name`. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowData + */ +extern DECLSPEC void *SDLCALL SDL_GetWindowData(SDL_Window * window, + const char *name); + +/** + * Set the position of a window. + * + * The window coordinate origin is the upper left of the display. + * + * \param window the window to reposition + * \param x the x coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * \param y the y coordinate of the window in screen coordinates, or + * `SDL_WINDOWPOS_CENTERED` or `SDL_WINDOWPOS_UNDEFINED` + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_SetWindowPosition(SDL_Window * window, + int x, int y); + +/** + * Get the position of a window. + * + * If you do not need the value for one of the positions a NULL may be passed + * in the `x` or `y` parameter. + * + * \param window the window to query + * \param x a pointer filled in with the x position of the window, in screen + * coordinates, may be NULL + * \param y a pointer filled in with the y position of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowPosition + */ +extern DECLSPEC void SDLCALL SDL_GetWindowPosition(SDL_Window * window, + int *x, int *y); + +/** + * Set the size of a window's client area. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize() or + * SDL_GetRendererOutputSize() to get the real client area size in pixels. + * + * Fullscreen windows automatically match the size of the display mode, and + * you should use SDL_SetWindowDisplayMode() to change their size. + * + * \param window the window to change + * \param w the width of the window in pixels, in screen coordinates, must be + * > 0 + * \param h the height of the window in pixels, in screen coordinates, must be + * > 0 + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSize + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC void SDLCALL SDL_SetWindowSize(SDL_Window * window, int w, + int h); + +/** + * Get the size of a window's client area. + * + * NULL can safely be passed as the `w` or `h` parameter if the width or + * height value is not desired. + * + * The window size in screen coordinates may differ from the size in pixels, + * if the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a platform + * with high-dpi support (e.g. iOS or macOS). Use SDL_GL_GetDrawableSize(), + * SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to get the + * real client area size in pixels. + * + * \param window the window to query the width and height from + * \param w a pointer filled in with the width of the window, in screen + * coordinates, may be NULL + * \param h a pointer filled in with the height of the window, in screen + * coordinates, may be NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetDrawableSize + * \sa SDL_Vulkan_GetDrawableSize + * \sa SDL_SetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSize(SDL_Window * window, int *w, + int *h); + +/** + * Get the size of a window's borders (decorations) around the client area. + * + * Note: If this function fails (returns -1), the size values will be + * initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as if the + * window in question was borderless. + * + * Note: This function may fail on systems where the window has not yet been + * decorated by the display server (for example, immediately after calling + * SDL_CreateWindow). It is recommended that you wait at least until the + * window has been presented and composited, so that the window system has a + * chance to decorate the window and provide the border dimensions to SDL. + * + * This function also returns -1 if getting the information is not supported. + * + * \param window the window to query the size values of the border + * (decorations) from + * \param top pointer to variable for storing the size of the top border; NULL + * is permitted + * \param left pointer to variable for storing the size of the left border; + * NULL is permitted + * \param bottom pointer to variable for storing the size of the bottom + * border; NULL is permitted + * \param right pointer to variable for storing the size of the right border; + * NULL is permitted + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowSize + */ +extern DECLSPEC int SDLCALL SDL_GetWindowBordersSize(SDL_Window * window, + int *top, int *left, + int *bottom, int *right); + +/** + * Get the size of a window in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.26.0. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowSizeInPixels(SDL_Window * window, + int *w, int *h); + +/** + * Set the minimum size of a window's client area. + * + * \param window the window to change + * \param min_w the minimum width of the window in pixels + * \param min_h the minimum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMinimumSize(SDL_Window * window, + int min_w, int min_h); + +/** + * Get the minimum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the minimum width of the window, may be + * NULL + * \param h a pointer filled in with the minimum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMinimumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the maximum size of a window's client area. + * + * \param window the window to change + * \param max_w the maximum width of the window in pixels + * \param max_h the maximum height of the window in pixels + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMaximumSize + * \sa SDL_SetWindowMinimumSize + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMaximumSize(SDL_Window * window, + int max_w, int max_h); + +/** + * Get the maximum size of a window's client area. + * + * \param window the window to query + * \param w a pointer filled in with the maximum width of the window, may be + * NULL + * \param h a pointer filled in with the maximum height of the window, may be + * NULL + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowMinimumSize + * \sa SDL_SetWindowMaximumSize + */ +extern DECLSPEC void SDLCALL SDL_GetWindowMaximumSize(SDL_Window * window, + int *w, int *h); + +/** + * Set the border state of a window. + * + * This will add or remove the window's `SDL_WINDOW_BORDERLESS` flag and add + * or remove the border from the actual window. This is a no-op if the + * window's border already matches the requested state. + * + * You can't change the border state of a fullscreen window. + * + * \param window the window of which to change the border state + * \param bordered SDL_FALSE to remove border, SDL_TRUE to add border + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowBordered(SDL_Window * window, + SDL_bool bordered); + +/** + * Set the user-resizable state of a window. + * + * This will add or remove the window's `SDL_WINDOW_RESIZABLE` flag and + * allow/disallow user resizing of the window. This is a no-op if the window's + * resizable state already matches the requested state. + * + * You can't change the resizable state of a fullscreen window. + * + * \param window the window of which to change the resizable state + * \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowResizable(SDL_Window * window, + SDL_bool resizable); + +/** + * Set the window to always be above the others. + * + * This will add or remove the window's `SDL_WINDOW_ALWAYS_ON_TOP` flag. This + * will bring the window to the front and keep the window above the rest. + * + * \param window The window of which to change the always on top state + * \param on_top SDL_TRUE to set the window always on top, SDL_FALSE to + * disable + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowFlags + */ +extern DECLSPEC void SDLCALL SDL_SetWindowAlwaysOnTop(SDL_Window * window, + SDL_bool on_top); + +/** + * Show a window. + * + * \param window the window to show + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_HideWindow + * \sa SDL_RaiseWindow + */ +extern DECLSPEC void SDLCALL SDL_ShowWindow(SDL_Window * window); + +/** + * Hide a window. + * + * \param window the window to hide + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_ShowWindow + */ +extern DECLSPEC void SDLCALL SDL_HideWindow(SDL_Window * window); + +/** + * Raise a window above other windows and set the input focus. + * + * \param window the window to raise + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_RaiseWindow(SDL_Window * window); + +/** + * Make a window as large as possible. + * + * \param window the window to maximize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MinimizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MaximizeWindow(SDL_Window * window); + +/** + * Minimize a window to an iconic representation. + * + * \param window the window to minimize + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_RestoreWindow + */ +extern DECLSPEC void SDLCALL SDL_MinimizeWindow(SDL_Window * window); + +/** + * Restore the size and position of a minimized or maximized window. + * + * \param window the window to restore + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_MaximizeWindow + * \sa SDL_MinimizeWindow + */ +extern DECLSPEC void SDLCALL SDL_RestoreWindow(SDL_Window * window); + +/** + * Set a window's fullscreen state. + * + * `flags` may be `SDL_WINDOW_FULLSCREEN`, for "real" fullscreen with a + * videomode change; `SDL_WINDOW_FULLSCREEN_DESKTOP` for "fake" fullscreen + * that takes the size of the desktop; and 0 for windowed mode. + * + * \param window the window to change + * \param flags `SDL_WINDOW_FULLSCREEN`, `SDL_WINDOW_FULLSCREEN_DESKTOP` or 0 + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowDisplayMode + * \sa SDL_SetWindowDisplayMode + */ +extern DECLSPEC int SDLCALL SDL_SetWindowFullscreen(SDL_Window * window, + Uint32 flags); + +/** + * Return whether the window has a surface associated with it. + * + * \returns SDL_TRUE if there is a surface associated with the window, or SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_HasWindowSurface(SDL_Window *window); + +/** + * Get the SDL surface associated with the window. + * + * A new surface will be created with the optimal format for the window, if + * necessary. This surface will be freed when the window is destroyed. Do not + * free this surface. + * + * This surface will be invalidated if the window is resized. After resizing a + * window this function must be called again to return a valid surface. + * + * You may not combine this with 3D or the rendering API on this window. + * + * This function is affected by `SDL_HINT_FRAMEBUFFER_ACCELERATION`. + * + * \param window the window to query + * \returns the surface associated with the window, or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DestroyWindowSurface + * \sa SDL_HasWindowSurface + * \sa SDL_UpdateWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC SDL_Surface * SDLCALL SDL_GetWindowSurface(SDL_Window * window); + +/** + * Copy the window surface to the screen. + * + * This is the function you use to reflect any changes to the surface on the + * screen. + * + * This function is equivalent to the SDL 1.2 API SDL_Flip(). + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurfaceRects + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurface(SDL_Window * window); + +/** + * Copy areas of the window surface to the screen. + * + * This is the function you use to reflect changes to portions of the surface + * on the screen. + * + * This function is equivalent to the SDL 1.2 API SDL_UpdateRects(). + * + * \param window the window to update + * \param rects an array of SDL_Rect structures representing areas of the + * surface to copy, in pixels + * \param numrects the number of rectangles + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_UpdateWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_UpdateWindowSurfaceRects(SDL_Window * window, + const SDL_Rect * rects, + int numrects); + +/** + * Destroy the surface associated with the window. + * + * \param window the window to update + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.28.0. + * + * \sa SDL_GetWindowSurface + * \sa SDL_HasWindowSurface + */ +extern DECLSPEC int SDLCALL SDL_DestroyWindowSurface(SDL_Window *window); + +/** + * Set a window's input grab mode. + * + * When input is grabbed, the mouse is confined to the window. This function + * will also grab the keyboard if `SDL_HINT_GRAB_KEYBOARD` is set. To grab the + * keyboard without also grabbing the mouse, use SDL_SetWindowKeyboardGrab(). + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window the window for which the input grab mode should be set + * \param grabbed SDL_TRUE to grab input or SDL_FALSE to release input + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetGrabbedWindow + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's keyboard grab mode. + * + * Keyboard grab enables capture of system keyboard shortcuts like Alt+Tab or + * the Meta/Super key. Note that not all system keyboard shortcuts can be + * captured by applications (one example is Ctrl+Alt+Del on Windows). + * + * This is primarily intended for specialized applications such as VNC clients + * or VM frontends. Normal games should not use keyboard grab. + * + * When keyboard grab is enabled, SDL will continue to handle Alt+Tab when the + * window is full-screen to ensure the user is not trapped in your + * application. If you have a custom keyboard shortcut to exit fullscreen + * mode, you may suppress this behavior with + * `SDL_HINT_ALLOW_ALT_TAB_WHILE_GRABBED`. + * + * If the caller enables a grab while another window is currently grabbed, the + * other window loses its grab in favor of the caller's window. + * + * \param window The window for which the keyboard grab mode should be set. + * \param grabbed This is SDL_TRUE to grab keyboard, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowKeyboardGrab + * \sa SDL_SetWindowMouseGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowKeyboardGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Set a window's mouse grab mode. + * + * Mouse grab confines the mouse cursor to the window. + * + * \param window The window for which the mouse grab mode should be set. + * \param grabbed This is SDL_TRUE to grab mouse, and SDL_FALSE to release. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_GetWindowMouseGrab + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC void SDLCALL SDL_SetWindowMouseGrab(SDL_Window * window, + SDL_bool grabbed); + +/** + * Get a window's input grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if input is grabbed, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowGrab(SDL_Window * window); + +/** + * Get a window's keyboard grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if keyboard is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowKeyboardGrab(SDL_Window * window); + +/** + * Get a window's mouse grab mode. + * + * \param window the window to query + * \returns SDL_TRUE if mouse is grabbed, and SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.16. + * + * \sa SDL_SetWindowKeyboardGrab + * \sa SDL_GetWindowGrab + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GetWindowMouseGrab(SDL_Window * window); + +/** + * Get the window that currently has an input grab enabled. + * + * \returns the window if input is grabbed or NULL otherwise. + * + * \since This function is available since SDL 2.0.4. + * + * \sa SDL_GetWindowGrab + * \sa SDL_SetWindowGrab + */ +extern DECLSPEC SDL_Window * SDLCALL SDL_GetGrabbedWindow(void); + +/** + * Confines the cursor to the specified area of a window. + * + * Note that this does NOT grab the cursor, it only defines the area a cursor + * is restricted to when the window has mouse focus. + * + * \param window The window that will be associated with the barrier. + * \param rect A rectangle area in window-relative coordinates. If NULL the + * barrier for the specified window will be destroyed. + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_GetWindowMouseRect + * \sa SDL_SetWindowMouseGrab + */ +extern DECLSPEC int SDLCALL SDL_SetWindowMouseRect(SDL_Window * window, const SDL_Rect * rect); + +/** + * Get the mouse confinement rectangle of a window. + * + * \param window The window to query + * \returns A pointer to the mouse confinement rectangle of a window, or NULL + * if there isn't one. + * + * \since This function is available since SDL 2.0.18. + * + * \sa SDL_SetWindowMouseRect + */ +extern DECLSPEC const SDL_Rect * SDLCALL SDL_GetWindowMouseRect(SDL_Window * window); + +/** + * Set the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method sets the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The + * brightness set will not follow the window if it is moved to another + * display. + * + * Many platforms will refuse to set the display brightness in modern times. + * You are better off using a shader to adjust gamma during rendering, or + * something similar. + * + * \param window the window used to select the display whose brightness will + * be changed + * \param brightness the brightness (gamma multiplier) value to set where 0.0 + * is completely dark and 1.0 is normal brightness + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowBrightness + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowBrightness(SDL_Window * window, float brightness); + +/** + * Get the brightness (gamma multiplier) for a given window's display. + * + * Despite the name and signature, this method retrieves the brightness of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose brightness will + * be queried + * \returns the brightness for the display where 0.0 is completely dark and + * 1.0 is normal brightness. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowBrightness + */ +extern DECLSPEC float SDLCALL SDL_GetWindowBrightness(SDL_Window * window); + +/** + * Set the opacity for a window. + * + * The parameter `opacity` will be clamped internally between 0.0f + * (transparent) and 1.0f (opaque). + * + * This function also returns -1 if setting the opacity isn't supported. + * + * \param window the window which will be made transparent or opaque + * \param opacity the opacity value (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_GetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_SetWindowOpacity(SDL_Window * window, float opacity); + +/** + * Get the opacity of a window. + * + * If transparency isn't supported on this platform, opacity will be reported + * as 1.0f without error. + * + * The parameter `opacity` is ignored if it is NULL. + * + * This function also returns -1 if an invalid window was provided. + * + * \param window the window to get the current opacity value from + * \param out_opacity the float filled in (0.0f - transparent, 1.0f - opaque) + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_SetWindowOpacity + */ +extern DECLSPEC int SDLCALL SDL_GetWindowOpacity(SDL_Window * window, float * out_opacity); + +/** + * Set the window as a modal for another window. + * + * \param modal_window the window that should be set modal + * \param parent_window the parent window for the modal window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowModalFor(SDL_Window * modal_window, SDL_Window * parent_window); + +/** + * Explicitly set input focus to the window. + * + * You almost certainly want SDL_RaiseWindow() instead of this function. Use + * this with caution, as you might give focus to a window that is completely + * obscured by other windows. + * + * \param window the window that should get the input focus + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.5. + * + * \sa SDL_RaiseWindow + */ +extern DECLSPEC int SDLCALL SDL_SetWindowInputFocus(SDL_Window * window); + +/** + * Set the gamma ramp for the display that owns a given window. + * + * Set the gamma translation table for the red, green, and blue channels of + * the video hardware. Each table is an array of 256 16-bit quantities, + * representing a mapping between the input and output for that channel. The + * input is the index into the array, and the output is the 16-bit gamma value + * at that index, scaled to the output color precision. + * + * Despite the name and signature, this method sets the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) The gamma + * ramp set will not follow the window if it is moved to another display. + * + * \param window the window used to select the display whose gamma ramp will + * be changed + * \param red a 256 element array of 16-bit quantities representing the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities representing the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities representing the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_SetWindowGammaRamp(SDL_Window * window, + const Uint16 * red, + const Uint16 * green, + const Uint16 * blue); + +/** + * Get the gamma ramp for a given window's display. + * + * Despite the name and signature, this method retrieves the gamma ramp of the + * entire display, not an individual window. A window is considered to be + * owned by the display that contains the window's center pixel. (The index of + * this display can be retrieved using SDL_GetWindowDisplayIndex().) + * + * \param window the window used to select the display whose gamma ramp will + * be queried + * \param red a 256 element array of 16-bit quantities filled in with the + * translation table for the red channel, or NULL + * \param green a 256 element array of 16-bit quantities filled in with the + * translation table for the green channel, or NULL + * \param blue a 256 element array of 16-bit quantities filled in with the + * translation table for the blue channel, or NULL + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_SetWindowGammaRamp + */ +extern DECLSPEC int SDLCALL SDL_GetWindowGammaRamp(SDL_Window * window, + Uint16 * red, + Uint16 * green, + Uint16 * blue); + +/** + * Possible return values from the SDL_HitTest callback. + * + * \sa SDL_HitTest + */ +typedef enum +{ + SDL_HITTEST_NORMAL, /**< Region is normal. No special properties. */ + SDL_HITTEST_DRAGGABLE, /**< Region can drag entire window. */ + SDL_HITTEST_RESIZE_TOPLEFT, + SDL_HITTEST_RESIZE_TOP, + SDL_HITTEST_RESIZE_TOPRIGHT, + SDL_HITTEST_RESIZE_RIGHT, + SDL_HITTEST_RESIZE_BOTTOMRIGHT, + SDL_HITTEST_RESIZE_BOTTOM, + SDL_HITTEST_RESIZE_BOTTOMLEFT, + SDL_HITTEST_RESIZE_LEFT +} SDL_HitTestResult; + +/** + * Callback used for hit-testing. + * + * \param win the SDL_Window where hit-testing was set on + * \param area an SDL_Point which should be hit-tested + * \param data what was passed as `callback_data` to SDL_SetWindowHitTest() + * \return an SDL_HitTestResult value. + * + * \sa SDL_SetWindowHitTest + */ +typedef SDL_HitTestResult (SDLCALL *SDL_HitTest)(SDL_Window *win, + const SDL_Point *area, + void *data); + +/** + * Provide a callback that decides if a window region has special properties. + * + * Normally windows are dragged and resized by decorations provided by the + * system window manager (a title bar, borders, etc), but for some apps, it + * makes sense to drag them from somewhere else inside the window itself; for + * example, one might have a borderless window that wants to be draggable from + * any part, or simulate its own title bar, etc. + * + * This function lets the app provide a callback that designates pieces of a + * given window as special. This callback is run during event processing if we + * need to tell the OS to treat a region of the window specially; the use of + * this callback is known as "hit testing." + * + * Mouse input may not be delivered to your application if it is within a + * special area; the OS will often apply that input to moving the window or + * resizing the window and not deliver it to the application. + * + * Specifying NULL for a callback disables hit-testing. Hit-testing is + * disabled by default. + * + * Platforms that don't support this functionality will return -1 + * unconditionally, even if you're attempting to disable hit-testing. + * + * Your callback may fire at any time, and its firing does not indicate any + * specific behavior (for example, on Windows, this certainly might fire when + * the OS is deciding whether to drag your window, but it fires for lots of + * other reasons, too, some unrelated to anything you probably care about _and + * when the mouse isn't actually at the location it is testing_). Since this + * can fire at any time, you should try to keep your callback efficient, + * devoid of allocations, etc. + * + * \param window the window to set hit-testing on + * \param callback the function to call when doing a hit-test + * \param callback_data an app-defined void pointer passed to **callback** + * \returns 0 on success or -1 on error (including unsupported); call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.4. + */ +extern DECLSPEC int SDLCALL SDL_SetWindowHitTest(SDL_Window * window, + SDL_HitTest callback, + void *callback_data); + +/** + * Request a window to demand attention from the user. + * + * \param window the window to be flashed + * \param operation the flash operation + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.16. + */ +extern DECLSPEC int SDLCALL SDL_FlashWindow(SDL_Window * window, SDL_FlashOperation operation); + +/** + * Destroy a window. + * + * If `window` is NULL, this function will return immediately after setting + * the SDL error message to "Invalid window". See SDL_GetError(). + * + * \param window the window to destroy + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_CreateWindow + * \sa SDL_CreateWindowFrom + */ +extern DECLSPEC void SDLCALL SDL_DestroyWindow(SDL_Window * window); + + +/** + * Check whether the screensaver is currently enabled. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * The default can also be changed using `SDL_HINT_VIDEO_ALLOW_SCREENSAVER`. + * + * \returns SDL_TRUE if the screensaver is enabled, SDL_FALSE if it is + * disabled. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_EnableScreenSaver + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsScreenSaverEnabled(void); + +/** + * Allow the screen to be blanked by a screen saver. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_DisableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_EnableScreenSaver(void); + +/** + * Prevent the screen from being blanked by a screen saver. + * + * If you disable the screensaver, it is automatically re-enabled when SDL + * quits. + * + * The screensaver is disabled by default since SDL 2.0.2. Before SDL 2.0.2 + * the screensaver was enabled by default. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_EnableScreenSaver + * \sa SDL_IsScreenSaverEnabled + */ +extern DECLSPEC void SDLCALL SDL_DisableScreenSaver(void); + + +/** + * \name OpenGL support functions + */ +/* @{ */ + +/** + * Dynamically load an OpenGL library. + * + * This should be done after initializing the video driver, but before + * creating any OpenGL windows. If no OpenGL library is loaded, the default + * library will be loaded upon creation of the first OpenGL window. + * + * If you do this, you need to retrieve all of the GL functions used in your + * program from the dynamic library using SDL_GL_GetProcAddress(). + * + * \param path the platform dependent OpenGL library name, or NULL to open the + * default OpenGL library + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetProcAddress + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_GL_LoadLibrary(const char *path); + +/** + * Get an OpenGL function by name. + * + * If the GL library is loaded at runtime with SDL_GL_LoadLibrary(), then all + * GL functions must be retrieved this way. Usually this is used to retrieve + * function pointers to OpenGL extensions. + * + * There are some quirks to looking up OpenGL functions that require some + * extra care from the application. If you code carefully, you can handle + * these quirks without any platform-specific code, though: + * + * - On Windows, function pointers are specific to the current GL context; + * this means you need to have created a GL context and made it current + * before calling SDL_GL_GetProcAddress(). If you recreate your context or + * create a second context, you should assume that any existing function + * pointers aren't valid to use with it. This is (currently) a + * Windows-specific limitation, and in practice lots of drivers don't suffer + * this limitation, but it is still the way the wgl API is documented to + * work and you should expect crashes if you don't respect it. Store a copy + * of the function pointers that comes and goes with context lifespan. + * - On X11, function pointers returned by this function are valid for any + * context, and can even be looked up before a context is created at all. + * This means that, for at least some common OpenGL implementations, if you + * look up a function that doesn't exist, you'll get a non-NULL result that + * is _NOT_ safe to call. You must always make sure the function is actually + * available for a given GL context before calling it, by checking for the + * existence of the appropriate extension with SDL_GL_ExtensionSupported(), + * or verifying that the version of OpenGL you're using offers the function + * as core functionality. + * - Some OpenGL drivers, on all platforms, *will* return NULL if a function + * isn't supported, but you can't count on this behavior. Check for + * extensions you use, and if you get a NULL anyway, act as if that + * extension wasn't available. This is probably a bug in the driver, but you + * can code defensively for this scenario anyhow. + * - Just because you're on Linux/Unix, don't assume you'll be using X11. + * Next-gen display servers are waiting to replace it, and may or may not + * make the same promises about function pointers. + * - OpenGL function pointers must be declared `APIENTRY` as in the example + * code. This will ensure the proper calling convention is followed on + * platforms where this matters (Win32) thereby avoiding stack corruption. + * + * \param proc the name of an OpenGL function + * \returns a pointer to the named OpenGL function. The returned pointer + * should be cast to the appropriate function signature. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ExtensionSupported + * \sa SDL_GL_LoadLibrary + * \sa SDL_GL_UnloadLibrary + */ +extern DECLSPEC void *SDLCALL SDL_GL_GetProcAddress(const char *proc); + +/** + * Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_GL_UnloadLibrary(void); + +/** + * Check if an OpenGL extension is supported for the current context. + * + * This function operates on the current GL context; you must have created a + * context and it must be current before calling this function. Do not assume + * that all contexts you create will have the same set of extensions + * available, or that recreating an existing context will offer the same + * extensions again. + * + * While it's probably not a massive overhead, this function is not an O(1) + * operation. Check the extensions you care about after creating the GL + * context and save that information somewhere instead of calling the function + * every time you need to know. + * + * \param extension the name of the extension to check + * \returns SDL_TRUE if the extension is supported, SDL_FALSE otherwise. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_bool SDLCALL SDL_GL_ExtensionSupported(const char + *extension); + +/** + * Reset all previously set OpenGL context attributes to their default values. + * + * \since This function is available since SDL 2.0.2. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC void SDLCALL SDL_GL_ResetAttributes(void); + +/** + * Set an OpenGL window attribute before window creation. + * + * This function sets the OpenGL attribute `attr` to `value`. The requested + * attributes should be set before creating an OpenGL window. You should use + * SDL_GL_GetAttribute() to check the values after creating the OpenGL + * context, since the values obtained can differ from the requested ones. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to set + * \param value the desired value for the attribute + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetAttribute + * \sa SDL_GL_ResetAttributes + */ +extern DECLSPEC int SDLCALL SDL_GL_SetAttribute(SDL_GLattr attr, int value); + +/** + * Get the actual value for an attribute from the current context. + * + * \param attr an SDL_GLattr enum value specifying the OpenGL attribute to get + * \param value a pointer filled in with the current value of `attr` + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_ResetAttributes + * \sa SDL_GL_SetAttribute + */ +extern DECLSPEC int SDLCALL SDL_GL_GetAttribute(SDL_GLattr attr, int *value); + +/** + * Create an OpenGL context for an OpenGL window, and make it current. + * + * Windows users new to OpenGL should note that, for historical reasons, GL + * functions added after OpenGL version 1.1 are not available by default. + * Those functions must be loaded at run-time, either with an OpenGL + * extension-handling library or with SDL_GL_GetProcAddress() and its related + * functions. + * + * SDL_GLContext is an alias for `void *`. It's opaque to the application. + * + * \param window the window to associate with the context + * \returns the OpenGL context associated with `window` or NULL on error; call + * SDL_GetError() for more details. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_DeleteContext + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_CreateContext(SDL_Window * + window); + +/** + * Set up an OpenGL context for rendering into an OpenGL window. + * + * The context must have been created with a compatible window. + * + * \param window the window to associate with the context + * \param context the OpenGL context to associate with the window + * \returns 0 on success or a negative error code on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC int SDLCALL SDL_GL_MakeCurrent(SDL_Window * window, + SDL_GLContext context); + +/** + * Get the currently active OpenGL window. + * + * \returns the currently active OpenGL window on success or NULL on failure; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC SDL_Window* SDLCALL SDL_GL_GetCurrentWindow(void); + +/** + * Get the currently active OpenGL context. + * + * \returns the currently active OpenGL context or NULL on failure; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_MakeCurrent + */ +extern DECLSPEC SDL_GLContext SDLCALL SDL_GL_GetCurrentContext(void); + +/** + * Get the size of a window's underlying drawable in pixels. + * + * This returns info useful for calling glViewport(). + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window the window from which the drawable size should be queried + * \param w a pointer to variable for storing the width in pixels, may be NULL + * \param h a pointer to variable for storing the height in pixels, may be + * NULL + * + * \since This function is available since SDL 2.0.1. + * + * \sa SDL_CreateWindow + * \sa SDL_GetWindowSize + */ +extern DECLSPEC void SDLCALL SDL_GL_GetDrawableSize(SDL_Window * window, int *w, + int *h); + +/** + * Set the swap interval for the current OpenGL context. + * + * Some systems allow specifying -1 for the interval, to enable adaptive + * vsync. Adaptive vsync works the same as vsync, but if you've already missed + * the vertical retrace for a given frame, it swaps buffers immediately, which + * might be less jarring for the user during occasional framerate drops. If an + * application requests adaptive vsync and the system does not support it, + * this function will fail and return -1. In such a case, you should probably + * retry the call with 1 for the interval. + * + * Adaptive vsync is implemented for some glX drivers with + * GLX_EXT_swap_control_tear, and for some Windows drivers with + * WGL_EXT_swap_control_tear. + * + * Read more on the Khronos wiki: + * https://www.khronos.org/opengl/wiki/Swap_Interval#Adaptive_Vsync + * + * \param interval 0 for immediate updates, 1 for updates synchronized with + * the vertical retrace, -1 for adaptive vsync + * \returns 0 on success or -1 if setting the swap interval is not supported; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_GetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_SetSwapInterval(int interval); + +/** + * Get the swap interval for the current OpenGL context. + * + * If the system can't determine the swap interval, or there isn't a valid + * current context, this function will return 0 as a safe default. + * + * \returns 0 if there is no vertical retrace synchronization, 1 if the buffer + * swap is synchronized with the vertical retrace, and -1 if late + * swaps happen immediately instead of waiting for the next retrace; + * call SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_SetSwapInterval + */ +extern DECLSPEC int SDLCALL SDL_GL_GetSwapInterval(void); + +/** + * Update a window with OpenGL rendering. + * + * This is used with double-buffered OpenGL contexts, which are the default. + * + * On macOS, make sure you bind 0 to the draw framebuffer before swapping the + * window, otherwise nothing will happen. If you aren't using + * glBindFramebuffer(), this is the default and you won't have to do anything + * extra. + * + * \param window the window to change + * + * \since This function is available since SDL 2.0.0. + */ +extern DECLSPEC void SDLCALL SDL_GL_SwapWindow(SDL_Window * window); + +/** + * Delete an OpenGL context. + * + * \param context the OpenGL context to be deleted + * + * \since This function is available since SDL 2.0.0. + * + * \sa SDL_GL_CreateContext + */ +extern DECLSPEC void SDLCALL SDL_GL_DeleteContext(SDL_GLContext context); + +/* @} *//* OpenGL support functions */ + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_video_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_vulkan.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_vulkan.h new file mode 100644 index 0000000..cca130b --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/SDL_vulkan.h @@ -0,0 +1,215 @@ +/* + Simple DirectMedia Layer + Copyright (C) 2017, Mark Callow + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_vulkan.h + * + * Header file for functions to creating Vulkan surfaces on SDL windows. + */ + +#ifndef SDL_vulkan_h_ +#define SDL_vulkan_h_ + +#include + +#include +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + +/* Avoid including vulkan.h, don't define VkInstance if it's already included */ +#ifdef VULKAN_H_ +#define NO_SDL_VULKAN_TYPEDEFS +#endif +#ifndef NO_SDL_VULKAN_TYPEDEFS +#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; + +#if defined(__LP64__) || defined(_WIN64) || defined(__x86_64__) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef struct object##_T *object; +#else +#define VK_DEFINE_NON_DISPATCHABLE_HANDLE(object) typedef uint64_t object; +#endif + +VK_DEFINE_HANDLE(VkInstance) +VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSurfaceKHR) + +#endif /* !NO_SDL_VULKAN_TYPEDEFS */ + +typedef VkInstance SDL_vulkanInstance; +typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ + +/** + * \name Vulkan support functions + * + * \note SDL_Vulkan_GetInstanceExtensions & SDL_Vulkan_CreateSurface API + * is compatable with Tizen's implementation of Vulkan in SDL. + */ +/* @{ */ + +/** + * Dynamically load the Vulkan loader library. + * + * This should be called after initializing the video driver, but before + * creating any Vulkan windows. If no Vulkan loader library is loaded, the + * default library will be loaded upon creation of the first Vulkan window. + * + * It is fairly common for Vulkan applications to link with libvulkan instead + * of explicitly loading it at run time. This will work with SDL provided the + * application links to a dynamic library and both it and SDL use the same + * search path. + * + * If you specify a non-NULL `path`, an application should retrieve all of the + * Vulkan functions it uses from the dynamic library using + * SDL_Vulkan_GetVkGetInstanceProcAddr unless you can guarantee `path` points + * to the same vulkan loader library the application linked to. + * + * On Apple devices, if `path` is NULL, SDL will attempt to find the + * `vkGetInstanceProcAddr` address within all the Mach-O images of the current + * process. This is because it is fairly common for Vulkan applications to + * link with libvulkan (and historically MoltenVK was provided as a static + * library). If it is not found, on macOS, SDL will attempt to load + * `vulkan.framework/vulkan`, `libvulkan.1.dylib`, + * `MoltenVK.framework/MoltenVK`, and `libMoltenVK.dylib`, in that order. On + * iOS, SDL will attempt to load `libMoltenVK.dylib`. Applications using a + * dynamic framework or .dylib must ensure it is included in its application + * bundle. + * + * On non-Apple devices, application linking with a static libvulkan is not + * supported. Either do not link to the Vulkan loader or link to a dynamic + * library version. + * + * \param path The platform dependent Vulkan loader library name or NULL + * \returns 0 on success or -1 if the library couldn't be loaded; call + * SDL_GetError() for more information. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetVkInstanceProcAddr + * \sa SDL_Vulkan_UnloadLibrary + */ +extern DECLSPEC int SDLCALL SDL_Vulkan_LoadLibrary(const char *path); + +/** + * Get the address of the `vkGetInstanceProcAddr` function. + * + * This should be called after either calling SDL_Vulkan_LoadLibrary() or + * creating an SDL_Window with the `SDL_WINDOW_VULKAN` flag. + * + * \returns the function pointer for `vkGetInstanceProcAddr` or NULL on error. + * + * \since This function is available since SDL 2.0.6. + */ +extern DECLSPEC void *SDLCALL SDL_Vulkan_GetVkGetInstanceProcAddr(void); + +/** + * Unload the Vulkan library previously loaded by SDL_Vulkan_LoadLibrary() + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_LoadLibrary + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_UnloadLibrary(void); + +/** + * Get the names of the Vulkan instance extensions needed to create a surface + * with SDL_Vulkan_CreateSurface. + * + * If `pNames` is NULL, then the number of required Vulkan instance extensions + * is returned in `pCount`. Otherwise, `pCount` must point to a variable set + * to the number of elements in the `pNames` array, and on return the variable + * is overwritten with the number of names actually written to `pNames`. If + * `pCount` is less than the number of required extensions, at most `pCount` + * structures will be written. If `pCount` is smaller than the number of + * required extensions, SDL_FALSE will be returned instead of SDL_TRUE, to + * indicate that not all the required extensions were returned. + * + * The `window` parameter is currently needed to be valid as of SDL 2.0.8, + * however, this parameter will likely be removed in future releases + * + * \param window A window for which the required Vulkan instance extensions + * should be retrieved (will be deprecated in a future release) + * \param pCount A pointer to an unsigned int corresponding to the number of + * extensions to be returned + * \param pNames NULL or a pointer to an array to be filled with required + * Vulkan instance extensions + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_GetInstanceExtensions(SDL_Window *window, + unsigned int *pCount, + const char **pNames); + +/** + * Create a Vulkan rendering surface for a window. + * + * The `window` must have been created with the `SDL_WINDOW_VULKAN` flag and + * `instance` must have been created with extensions returned by + * SDL_Vulkan_GetInstanceExtensions() enabled. + * + * \param window The window to which to attach the Vulkan surface + * \param instance The Vulkan instance handle + * \param surface A pointer to a VkSurfaceKHR handle to output the newly + * created surface + * \returns SDL_TRUE on success, SDL_FALSE on error. + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_Vulkan_GetInstanceExtensions + * \sa SDL_Vulkan_GetDrawableSize + */ +extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface(SDL_Window *window, + VkInstance instance, + VkSurfaceKHR* surface); + +/** + * Get the size of the window's underlying drawable dimensions in pixels. + * + * This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + * drawable, i.e. the window was created with `SDL_WINDOW_ALLOW_HIGHDPI` on a + * platform with high-DPI support (Apple calls this "Retina"), and not + * disabled by the `SDL_HINT_VIDEO_HIGHDPI_DISABLED` hint. + * + * \param window an SDL_Window for which the size is to be queried + * \param w Pointer to the variable to write the width to or NULL + * \param h Pointer to the variable to write the height to or NULL + * + * \since This function is available since SDL 2.0.6. + * + * \sa SDL_GetWindowSize + * \sa SDL_CreateWindow + * \sa SDL_Vulkan_CreateSurface + */ +extern DECLSPEC void SDLCALL SDL_Vulkan_GetDrawableSize(SDL_Window * window, + int *w, int *h); + +/* @} *//* Vulkan support functions */ + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include + +#endif /* SDL_vulkan_h_ */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/begin_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/begin_code.h new file mode 100644 index 0000000..4142ffe --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/begin_code.h @@ -0,0 +1,187 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file begin_code.h + * + * This file sets things up for C dynamic library function definitions, + * static inlined functions, and structures aligned at 4-byte alignment. + * If you don't like ugly C preprocessor code, don't look at this file. :) + */ + +/* This shouldn't be nested -- included it around code only. */ +#ifdef SDL_begin_code_h +#error Nested inclusion of begin_code.h +#endif +#define SDL_begin_code_h + +#ifndef SDL_DEPRECATED +# if defined(__GNUC__) && (__GNUC__ >= 4) /* technically, this arrived in gcc 3.1, but oh well. */ +# define SDL_DEPRECATED __attribute__((deprecated)) +# else +# define SDL_DEPRECATED +# endif +#endif + +#ifndef SDL_UNUSED +# ifdef __GNUC__ +# define SDL_UNUSED __attribute__((unused)) +# else +# define SDL_UNUSED +# endif +#endif + +/* Some compilers use a special export keyword */ +#ifndef DECLSPEC +# if defined(__WIN32__) || defined(__WINRT__) || defined(__CYGWIN__) || defined(__GDK__) +# ifdef DLL_EXPORT +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# elif defined(__OS2__) +# ifdef BUILD_SDL +# define DECLSPEC __declspec(dllexport) +# else +# define DECLSPEC +# endif +# else +# if defined(__GNUC__) && __GNUC__ >= 4 +# define DECLSPEC __attribute__ ((visibility("default"))) +# else +# define DECLSPEC +# endif +# endif +#endif + +/* By default SDL uses the C calling convention */ +#ifndef SDLCALL +#if (defined(__WIN32__) || defined(__WINRT__) || defined(__GDK__)) && !defined(__GNUC__) +#define SDLCALL __cdecl +#elif defined(__OS2__) || defined(__EMX__) +#define SDLCALL _System +# if defined (__GNUC__) && !defined(_System) +# define _System /* for old EMX/GCC compat. */ +# endif +#else +#define SDLCALL +#endif +#endif /* SDLCALL */ + +/* Removed DECLSPEC on Symbian OS because SDL cannot be a DLL in EPOC */ +#ifdef __SYMBIAN32__ +#undef DECLSPEC +#define DECLSPEC +#endif /* __SYMBIAN32__ */ + +/* Force structure packing at 4 byte alignment. + This is necessary if the header is included in code which has structure + packing set to an alternate value, say for loading structures from disk. + The packing is reset to the previous value in close_code.h + */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef _MSC_VER +#pragma warning(disable: 4103) +#endif +#ifdef __clang__ +#pragma clang diagnostic ignored "-Wpragma-pack" +#endif +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#ifdef _WIN64 +/* Use 8-byte alignment on 64-bit architectures, so pointers are aligned */ +#pragma pack(push,8) +#else +#pragma pack(push,4) +#endif +#endif /* Compiler needs structure packing set */ + +#ifndef SDL_INLINE +#if defined(__GNUC__) +#define SDL_INLINE __inline__ +#elif defined(_MSC_VER) || defined(__BORLANDC__) || \ + defined(__DMC__) || defined(__SC__) || \ + defined(__WATCOMC__) || defined(__LCC__) || \ + defined(__DECC) || defined(__CC_ARM) +#define SDL_INLINE __inline +#ifndef __inline__ +#define __inline__ __inline +#endif +#else +#define SDL_INLINE inline +#ifndef __inline__ +#define __inline__ inline +#endif +#endif +#endif /* SDL_INLINE not defined */ + +#ifndef SDL_FORCE_INLINE +#if defined(_MSC_VER) +#define SDL_FORCE_INLINE __forceinline +#elif ( (defined(__GNUC__) && (__GNUC__ >= 4)) || defined(__clang__) ) +#define SDL_FORCE_INLINE __attribute__((always_inline)) static __inline__ +#else +#define SDL_FORCE_INLINE static SDL_INLINE +#endif +#endif /* SDL_FORCE_INLINE not defined */ + +#ifndef SDL_NORETURN +#if defined(__GNUC__) +#define SDL_NORETURN __attribute__((noreturn)) +#elif defined(_MSC_VER) +#define SDL_NORETURN __declspec(noreturn) +#else +#define SDL_NORETURN +#endif +#endif /* SDL_NORETURN not defined */ + +/* Apparently this is needed by several Windows compilers */ +#if !defined(__MACH__) +#ifndef NULL +#ifdef __cplusplus +#define NULL 0 +#else +#define NULL ((void *)0) +#endif +#endif /* NULL */ +#endif /* ! Mac OS X - breaks precompiled headers */ + +#ifndef SDL_FALLTHROUGH +#if (defined(__cplusplus) && __cplusplus >= 201703L) || \ + (defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L) +#define SDL_FALLTHROUGH [[fallthrough]] +#else +#if defined(__has_attribute) +#define SDL_HAS_FALLTHROUGH __has_attribute(__fallthrough__) +#else +#define SDL_HAS_FALLTHROUGH 0 +#endif /* __has_attribute */ +#if SDL_HAS_FALLTHROUGH && \ + ((defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang_major__) && __clang_major__ >= 10)) +#define SDL_FALLTHROUGH __attribute__((__fallthrough__)) +#else +#define SDL_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif /* SDL_HAS_FALLTHROUGH */ +#undef SDL_HAS_FALLTHROUGH +#endif /* C++17 or C2x */ +#endif /* SDL_FALLTHROUGH not defined */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/close_code.h b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/close_code.h new file mode 100644 index 0000000..b5ff3e2 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Headers/close_code.h @@ -0,0 +1,40 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2023 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file close_code.h + * + * This file reverses the effects of begin_code.h and should be included + * after you finish any function and structure declarations in your headers + */ + +#ifndef SDL_begin_code_h +#error close_code.h included without matching begin_code.h +#endif +#undef SDL_begin_code_h + +/* Reset structure packing at previous byte alignment */ +#if defined(_MSC_VER) || defined(__MWERKS__) || defined(__BORLANDC__) +#ifdef __BORLANDC__ +#pragma nopackwarning +#endif +#pragma pack(pop) +#endif /* Compiler needs structure packing set */ diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config-version.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config-version.cmake new file mode 100644 index 0000000..feea76e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config-version.cmake @@ -0,0 +1,48 @@ +# based on the files generated by CMake's write_basic_package_version_file + +# SDL2 CMake version configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +if(NOT EXISTS "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h") + message(AUTHOR_WARNING "Could not find SDL_version.h. This script is meant to be placed in the Resources/CMake directory of SDL2.framework") + return() +endif() + +file(READ "${CMAKE_CURRENT_LIST_DIR}/../../Headers/SDL_version.h" _sdl_version_h) +string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl_major_re "${_sdl_version_h}") +set(_sdl_major "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl_minor_re "${_sdl_version_h}") +set(_sdl_minor "${CMAKE_MATCH_1}") +string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl_patch_re "${_sdl_version_h}") +set(_sdl_patch "${CMAKE_MATCH_1}") +if(_sdl_major_re AND _sdl_minor_re AND _sdl_patch_re) + set(PACKAGE_VERSION "${_sdl_major}.${_sdl_minor}.${_sdl_patch}") +else() + message(AUTHOR_WARNING "Could not extract version from SDL_version.h.") + return() +endif() + +if(PACKAGE_FIND_VERSION_RANGE) + # Package version must be in the requested version range + if ((PACKAGE_FIND_VERSION_RANGE_MIN STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION_MIN) + OR ((PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "INCLUDE" AND PACKAGE_VERSION VERSION_GREATER PACKAGE_FIND_VERSION_MAX) + OR (PACKAGE_FIND_VERSION_RANGE_MAX STREQUAL "EXCLUDE" AND PACKAGE_VERSION VERSION_GREATER_EQUAL PACKAGE_FIND_VERSION_MAX))) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + endif() +else() + if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION) + set(PACKAGE_VERSION_COMPATIBLE FALSE) + else() + set(PACKAGE_VERSION_COMPATIBLE TRUE) + if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION) + set(PACKAGE_VERSION_EXACT TRUE) + endif() + endif() +endif() + +# if the using project doesn't have CMAKE_SIZEOF_VOID_P set, fail. +if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "") + set(PACKAGE_VERSION_UNSUITABLE TRUE) +endif() diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config.cmake b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config.cmake new file mode 100644 index 0000000..e1b7713 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/CMake/sdl2-config.cmake @@ -0,0 +1,71 @@ +# SDL2 CMake configuration file: +# This file is meant to be placed in Resources/CMake of a SDL2 framework + +# INTERFACE_LINK_OPTIONS needs CMake 3.12 +cmake_minimum_required(VERSION 3.12) + +include(FeatureSummary) +set_package_properties(SDL2 PROPERTIES + URL "https://www.libsdl.org/" + DESCRIPTION "low level access to audio, keyboard, mouse, joystick, and graphics hardware" +) + +# Copied from `configure_package_config_file` +macro(set_and_check _var _file) + set(${_var} "${_file}") + if(NOT EXISTS "${_file}") + message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !") + endif() +endmacro() + +# Copied from `configure_package_config_file` +macro(check_required_components _NAME) + foreach(comp ${${_NAME}_FIND_COMPONENTS}) + if(NOT ${_NAME}_${comp}_FOUND) + if(${_NAME}_FIND_REQUIRED_${comp}) + set(${_NAME}_FOUND FALSE) + endif() + endif() + endforeach() +endmacro() + +set(SDL2_FOUND TRUE) + +string(REGEX REPLACE "SDL2\\.framework.*" "SDL2.framework" SDL2_FRAMEWORK_PATH "${CMAKE_CURRENT_LIST_DIR}") +string(REGEX REPLACE "SDL2\\.framework.*" "" SDL2_FRAMEWORK_PARENT_PATH "${CMAKE_CURRENT_LIST_DIR}") + +# For compatibility with autotools sdl2-config.cmake, provide SDL2_* variables. + +set_and_check(SDL2_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_EXEC_PREFIX "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_INCLUDE_DIR "${SDL2_FRAMEWORK_PATH}/Headers") +set(SDL2_INCLUDE_DIRS "${SDL2_INCLUDE_DIR};${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_BINDIR "${SDL2_FRAMEWORK_PATH}") +set_and_check(SDL2_LIBDIR "${SDL2_FRAMEWORK_PATH}") + +set(SDL2_LIBRARIES "SDL2::SDL2") + +# All targets are created, even when some might not be requested though COMPONENTS. +# This is done for compatibility with CMake generated SDL2-target.cmake files. + +if(NOT TARGET SDL2::SDL2) + add_library(SDL2::SDL2 INTERFACE IMPORTED) + set_target_properties(SDL2::SDL2 + PROPERTIES + INTERFACE_COMPILE_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\"" + INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}" + INTERFACE_LINK_OPTIONS "SHELL:-F \"${SDL2_FRAMEWORK_PARENT_PATH}\";SHELL:-framework SDL2" + COMPATIBLE_INTERFACE_BOOL "SDL2_SHARED" + INTERFACE_SDL2_SHARED "ON" + COMPATIBLE_INTERFACE_STRING "SDL_VERSION" + INTERFACE_SDL_VERSION "SDL2" + ) +endif() +set(SDL2_SDL2_FOUND TRUE) + +if(NOT TARGET SDL2::SDL2main) + add_library(SDL2::SDL2main INTERFACE IMPORTED) +endif() +set(SDL2_SDL2main_FOUND TRUE) + +check_required_components(SDL2) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/Info.plist b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/Info.plist new file mode 100644 index 0000000..931edd0 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/Info.plist @@ -0,0 +1,50 @@ + + + + + BuildMachineOSBuild + 22F82 + CFBundleDevelopmentRegion + English + CFBundleExecutable + SDL2 + CFBundleGetInfoString + http://www.libsdl.org + CFBundleIdentifier + org.libsdl.SDL2 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + Simple DirectMedia Layer + CFBundlePackageType + FMWK + CFBundleShortVersionString + 2.28.5 + CFBundleSignature + SDLX + CFBundleSupportedPlatforms + + MacOSX + + CFBundleVersion + 2.28.5 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + + DTPlatformName + macosx + DTPlatformVersion + 13.3 + DTSDKBuild + 22E245 + DTSDKName + macosx13.3 + DTXcode + 1431 + DTXcodeBuild + 14E300c + LSMinimumSystemVersion + 10.11 + + diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/License.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/License.txt new file mode 100644 index 0000000..523c51e --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/License.txt @@ -0,0 +1,19 @@ + +Simple DirectMedia Layer +Copyright (C) 1997-2023 Sam Lantinga + +This software is provided 'as-is', without any express or implied +warranty. In no event will the authors be held liable for any damages +arising from the use of this software. + +Permission is granted to anyone to use this software for any purpose, +including commercial applications, and to alter it and redistribute it +freely, subject to the following restrictions: + +1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. +2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. +3. This notice may not be removed or altered from any source distribution. diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/ReadMe.txt b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/ReadMe.txt new file mode 100644 index 0000000..9f49591 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/ReadMe.txt @@ -0,0 +1,44 @@ +The Simple DirectMedia Layer (SDL for short) is a cross-platform +library designed to make it easy to write multi-media software, +such as games and emulators. + +The Simple DirectMedia Layer library source code is available from: +http://www.libsdl.org/ + +This library is distributed under the terms of the zlib license: +http://zlib.net/zlib_license.html + + +This packages contains the SDL framework for OS X. +Conforming with Apple guidelines, this framework +contains both the SDL runtime component and development header files. + + +To Install: +Copy the SDL2.framework to /Library/Frameworks + +You may alternatively install it in /Library/Frameworks +if your access privileges are not high enough. + + +Use in CMake projects: +SDL2.framework can be used in CMake projects using the following pattern: +``` +find_package(SDL2 REQUIRED COMPONENTS SDL2) +add_executable(my_game ${MY_SOURCES}) +target_link_libraries(my_game PRIVATE SDL2::SDL2) +``` +If SDL2.framework is installed in a non-standard location, +please refer to the following link for ways to configure CMake: +https://cmake.org/cmake/help/latest/command/find_package.html#config-mode-search-procedure + + +Additional References: + + - Screencast tutorials for getting started with OpenSceneGraph/Mac OS X are + available at: + http://www.openscenegraph.org/projects/osg/wiki/Support/Tutorials/MacOSXTips + Though these are OpenSceneGraph centric, the same exact concepts apply to + SDL, thus the videos are recommended for everybody getting started with + developing on Mac OS X. (You can skim over the PlugIns stuff since SDL + doesn't have any PlugIns to worry about.) diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/default.metallib b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/Resources/default.metallib new file mode 100644 index 0000000000000000000000000000000000000000..a30298d0aaceab4ca7aeb32083e06dc3dfa99dfb GIT binary patch literal 21968 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Μ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Ĺ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 z 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 z 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

KoK;r-v5rFZ+0l#V~o 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 z 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 =~%_FKtFRR^DJ$iRy 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�S}s~Q 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 zΠ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 z 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 kj@?GK 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 z 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 z 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ℑR=n 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 literal 0 HcmV?d00001 diff --git a/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/_CodeSignature/CodeResources b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/_CodeSignature/CodeResources new file mode 100644 index 0000000..9e81817 --- /dev/null +++ b/PICO-8.app/Contents/Frameworks/SDL2.framework/Versions/Current/_CodeSignature/CodeResources @@ -0,0 +1,933 @@ + + + + + files + + Resources/CMake/sdl2-config-version.cmake + + GOmfPsl6+zUzjRroR1OeRUu1Do0= + + Resources/CMake/sdl2-config.cmake + + s2hXhDxzy/ilC+gLamGy/Kq13jo= + + Resources/Info.plist + + E/exzjLmO25/xe18BS765cbGzWY= + + Resources/License.txt + + fCUUBjJ4JuUAC8MRSCszNcY21v8= + + Resources/ReadMe.txt + + 04Gl3MPa3Etx4qtkaftLHaPqBVU= + + Resources/default.metallib + + 07w7GQmm31+NEK8ne4mSo7m70Do= + + + files2 + + Headers/SDL.h + + hash + + hzPz83uejvKAqzL0Xoi6aO8h8jw= + + hash2 + + 9u/or17IhYmY6rFVU14yva0lEIgG9DmS4LbiwXBLBL8= + + + Headers/SDL_assert.h + + hash + + S50t60okfb3/ykWKavFC3tnkGgE= + + hash2 + + uPZQOi25pO/BZWjREOhxmXsoreSNJyZrNOnVJ/TyYzs= + + + Headers/SDL_atomic.h + + hash + + yrv6uC/CjYpeCteZDUbBFr2nwiU= + + hash2 + + Mrfc980NeBAvQ5I040V8xusL6cHBcFfPaA9B2prA4dw= + + + Headers/SDL_audio.h + + hash + + ATRDpv42XjNUWqjKPDAPYqIqvDY= + + hash2 + + MThYj7HEVNC7MdUTbzgyHDqlDMDS9g664b6M5d7tsdY= + + + Headers/SDL_bits.h + + hash + + Y7zU8XCX6cvmN/FK9COruPP8VGs= + + hash2 + + 5bLOm9HAk5AScYemc5V1usN7NqP685ZYN5MOBjzC2IE= + + + Headers/SDL_blendmode.h + + hash + + ThQw2vcWPo/mLtvKmhQrjhSQhLk= + + hash2 + + o3UtzbWJqnTeh6+r+oLVdOzcJZ1b3XhfPINDjKHftu4= + + + Headers/SDL_clipboard.h + + hash + + pFjnEWnFn2vCXZrSDQ6m8N6h0MM= + + hash2 + + t9Fr9UxC9zwgfkCY5P5DW9k3TndMFRn+tU/heffUOQk= + + + Headers/SDL_config.h + + hash + + B13VD2wcb7zADcKXB+B/kBYhpHw= + + hash2 + + LmXzL1O6PasyaBOUhPezJnqtqwCV9rqOyiJNEvGKgHo= + + + Headers/SDL_config_macosx.h + + hash + + /CrGe7lmePlmR7DD9sqN4LHqM/0= + + hash2 + + EpnSzka/wAuxi4wcgIktwQnuYWsMAATYMt6yDmo4zOg= + + + Headers/SDL_copying.h + + hash + + OzEuv+IaGVfj3A2BEoXc87vV+Wk= + + hash2 + + 5zsYMLhj8aKXm4gWJoGHC55ipiUi1OIxXdOtUIHQQw4= + + + Headers/SDL_cpuinfo.h + + hash + + 4/UkY/aNgAY5RsZ61XSnwtCXW9I= + + hash2 + + pWPZkQcmPyAzgZNKcmiYutw8VFjBcHOinO+VVKIBeN0= + + + Headers/SDL_endian.h + + hash + + j6/tuHiJfdv8YaI9k3fogDw4bNc= + + hash2 + + P5KOVzR2wBlhdSw7biIJ3O78dnYnoGdi4pHxvyFcLdY= + + + Headers/SDL_error.h + + hash + + 6cwM6B1MfW2wTFB+g6c1GO9UH7g= + + hash2 + + ULQrtxP4RfbnV5GGj3i+PrYSI/rzDYskl0XQtCd72SU= + + + Headers/SDL_events.h + + hash + + feHsZTKREoq2xXa4dv/4lzZqzUc= + + hash2 + + FVz2yvXnjsUNWBsWQOcBqaZrXCCdohSRWDh1l3SKqRY= + + + Headers/SDL_filesystem.h + + hash + + sicIJ2kroxv3QVkoKklHGN3tbWo= + + hash2 + + k3ybgbDF/Ap8kf4vKxLVZnRXoXtZwpFb4Nsk8GWqDCY= + + + Headers/SDL_gamecontroller.h + + hash + + DGpJeIYXN/t/Yyqilband2kKOSk= + + hash2 + + hgAaf8SQwVfc94yXKjNFA3VpsTCYwL65W5X6lXEnsgI= + + + Headers/SDL_gesture.h + + hash + + iBwReSkmy4b/H3FD3mZZtLNdCMk= + + hash2 + + H7K4JyorBvI9vlJegmEZ6NvapE7/l/2bhOGeQ9zudiE= + + + Headers/SDL_guid.h + + hash + + jTpr9nvDtYvix2njIOclQs9xYuk= + + hash2 + + ifUKQBbQRJdNqsJBO7Mor3KqQyqDulvyNC82/RWPXhs= + + + Headers/SDL_haptic.h + + hash + + +Wt7zxeuXghMudXSohdJr12ueGM= + + hash2 + + VhCeKNAvsH+lrvZW9g65G84lg0FofrbORvS0TqPWaRQ= + + + Headers/SDL_hidapi.h + + hash + + CBwPZQMZ5wsa03aBND8rQvsLfUg= + + hash2 + + CJEdgW9T0b2VRNRFaEZqPeCTg3FjsEFOHZvwuJbVHX0= + + + Headers/SDL_hints.h + + hash + + SWTHcoPzInj/HwBHNEFfQGmL6Dw= + + hash2 + + BQwW6YWVYXbaOLc9Id+ZjuKHs2VIfcSjM/Oo9JBI6Yk= + + + Headers/SDL_joystick.h + + hash + + Y/dkiMb7+9Wmo8oyyOuh4igQK4o= + + hash2 + + d3rYIj9RV45IuiYZAbOQyNe3iR4DORkkqwYiSA81c6k= + + + Headers/SDL_keyboard.h + + hash + + 4jiEP+XRfvz8VFmNWlHkcsMS2nI= + + hash2 + + EPdkxf3E/uXb/dm3gpxepX+d5JNWswuHP+PG/c33p84= + + + Headers/SDL_keycode.h + + hash + + j4z7vftDr05ahrBr5bZnBxZ3Ufs= + + hash2 + + abAEws/ibkdlWSE/bP/uq0oIjcebU59aul5g4Lu0pbA= + + + Headers/SDL_loadso.h + + hash + + 1fe02ZD9+yDX75ZVM1rk7RqDLCc= + + hash2 + + eOcuzAcWhFDvl3bV+3m54GtOrTQztPLIiFHK6NOQuZM= + + + Headers/SDL_locale.h + + hash + + UOhBMG0JOnoQAEGMY7S6as755IY= + + hash2 + + yM4RN7sKzLhnVlwbW1pJX3S6YLZl2LM/0qsLyQf5GXM= + + + Headers/SDL_log.h + + hash + + Ij4wEHg0aIMC28dTUSur/CAxQss= + + hash2 + + A1Xc1+qvTtDHCz8f4e6oWq8SlifqizcVZ1Q37GJkhG0= + + + Headers/SDL_main.h + + hash + + j0/bBvlkrYcnXeoB6sWoCQiIlV0= + + hash2 + + QOjL/8v8HMC/N+1jocNxIGBB5pifTDWxbwOvD7wJtRg= + + + Headers/SDL_messagebox.h + + hash + + TZHRdWCuyxbRdc1GZjnTjHdKV5A= + + hash2 + + Y+cutYk+JQOcbC9kbCdqbLr4oIBCxcX8HIzKJW+MOTE= + + + Headers/SDL_metal.h + + hash + + yggpDR8fWdb4ZAxZDLO7ztOMa84= + + hash2 + + aVk9kP7LRPopLu52brj5b7qNwMeUyUOwDPVyXwOm4O0= + + + Headers/SDL_misc.h + + hash + + wkzkXLc/0JwEBj+pVGBGODS/N7g= + + hash2 + + qClRwcNymRF0gmpjyJ+EQ7fChV48OUN8NAAM2x8NsRM= + + + Headers/SDL_mouse.h + + hash + + AL6jjX5llLXh3nscuX0MJQQJ7C0= + + hash2 + + 8R3uVCCs2wF9vtwJEqAi+xjYtAtJ1F6UIqCPUhiBwxU= + + + Headers/SDL_mutex.h + + hash + + c4s6haEURwhr1L/ZsIoQHgDC1Rw= + + hash2 + + L1kG6r9N1C+njGEvU0sAJeAVFwr6gkCCwGcBxsjDuNU= + + + Headers/SDL_name.h + + hash + + 86Aic9zf8RE0YQGymeyFxdGck34= + + hash2 + + U6Hh9de6D0JfccwHBmoAy/zaFw30VuNT1ofo30X7cCw= + + + Headers/SDL_opengl.h + + hash + + a83WQIdV8u+rut4US8joNjpA6kA= + + hash2 + + HxWMmpZ2o+Z1atgt7Ou2sf5/4s2raLbApxzyqqzQcGY= + + + Headers/SDL_opengl_glext.h + + hash + + eOvalGUielSzNuOWWDLYkwqpYrg= + + hash2 + + GrsoiRybBmG2/zdJ3iZx2l/hK+tbyxgzsta99ciezfg= + + + Headers/SDL_opengles.h + + hash + + Vc//lrKlqY/bME9ocSWczplleP4= + + hash2 + + hJHBadVAgpV3dIMW++DPSJKqsNOCvkA8qNrMoFbXd5g= + + + Headers/SDL_opengles2.h + + hash + + gyrJUUv02Am+DYc5V42xH7EQev4= + + hash2 + + T7CsPQJXfeZ3+pVjGLqzKBfEjyHX2Ne0vV44iZMKDgs= + + + Headers/SDL_opengles2_gl2.h + + hash + + GbD4M9ZIR9sxgLX4G8T/ojLVQJk= + + hash2 + + 1uxEsdc/OvzjogrGl223+z2sZWxRkPC1Y+TOkNeaFao= + + + Headers/SDL_opengles2_gl2ext.h + + hash + + frTvd+EfShO/uonAvnnsnPkqc80= + + hash2 + + T8WwA03N6cElki4+cNAUiaazNQdoVu5mApThpjBaNxk= + + + Headers/SDL_opengles2_gl2platform.h + + hash + + JO1DB28zz7TCz/P5YCSvV1PaqWg= + + hash2 + + R3m+mZrNGQRFgjjwnIaYO3lgrEDmEuBdstuX22FfHg8= + + + Headers/SDL_opengles2_khrplatform.h + + hash + + mBjqEs+5bGC9u1ED2M93VNzONPQ= + + hash2 + + ex4Bqqetj2/DS1x733nr9RibsJ4sTS55/F01BiPRHoM= + + + Headers/SDL_pixels.h + + hash + + 4PRTgauh2fx03ubJfuuHNOPhN28= + + hash2 + + GZQPt4sz55DRDRzw6E2c1WMjhNqInkQA3gxLQiTPQlw= + + + Headers/SDL_platform.h + + hash + + Ey0u3gHjhY9CsV6rnGPL6l/Lqx4= + + hash2 + + n9zH0IFb2hWb/ZQ3TBMQxLzDre/VQcI6Obhdmq8O7QU= + + + Headers/SDL_power.h + + hash + + SmO5g1nUZ1IAgDQGIlzbR8F5udg= + + hash2 + + Lmp/XdN6xQbqR/eAmoKFcpqk+MM65gGxjv1cLYUqG8c= + + + Headers/SDL_quit.h + + hash + + xxqxk2GqAVUt7s8YiRcGMegy160= + + hash2 + + cd4fDfe+MqMZ35xoFn5VPkGBafcN9tPvL9J74IeKtXI= + + + Headers/SDL_rect.h + + hash + + AtB+xgoXRW94PDzzbBVBYyAW0gI= + + hash2 + + rFxcleBxja/rwskrEIytxw3evL+Drkx3YsihtllIw78= + + + Headers/SDL_render.h + + hash + + 5yyytzTD1eS/K13NSzW6faLAUlA= + + hash2 + + +ljWDPQHFdheD/Z6QxHzbpNQVg/XVlqx5+B3ovMbIF0= + + + Headers/SDL_revision.h + + hash + + bdjBB5+RLx5fhpvXy3LbyEC9q70= + + hash2 + + GAe3NNLzg+OqUvN6Bxys9o9XWV6xzSDq/uCDwqmLz2s= + + + Headers/SDL_rwops.h + + hash + + sCmzKOj8q3vee6JV6acptKOzBoQ= + + hash2 + + j6rnTfnMJaCsq2CviHQP8obbVNgrElC0OXJBt3ltyVg= + + + Headers/SDL_scancode.h + + hash + + JPnDQuCIC32+ugD3OX3igjdGfmE= + + hash2 + + vC/EC0A66ywzXwlp8iGE7nlOpWGZ18iHhEdS7BsM3VU= + + + Headers/SDL_sensor.h + + hash + + J+9woN1Qec074rah/rly1BHM5sY= + + hash2 + + sEfbN4S8Lpxm0XDblgOvnVV0fsgx/zo/q0s5h9OvhmE= + + + Headers/SDL_shape.h + + hash + + Hv8O7XLnXLIVAOf6cjF56yyrRkg= + + hash2 + + XFA3qPWL1vJ3EQtae2baJlOZ9ESEmhB1FMYI3fITLZY= + + + Headers/SDL_stdinc.h + + hash + + iliyExriwpoxEAgG8CI8CG8go54= + + hash2 + + I4aI+ExJq+16kZfDjF++Uaa2lHZjUWmuFc83IUDfuIk= + + + Headers/SDL_surface.h + + hash + + Toy3u0xKUfSMmknlIToaUmf5vwE= + + hash2 + + CDctL0QJDSDvlB+uXO69kLW2uA0Xdc0xiJBN8h3pX74= + + + Headers/SDL_system.h + + hash + + I1i3X5zfVBg7YFzag2Dj43RzuUI= + + hash2 + + mt328KSVoSMSjZ4Wy268tC04JQmyCAsDM60TWeG3K4s= + + + Headers/SDL_syswm.h + + hash + + 7sdDIYSuCZbE13gdwZ+rmiqUBEk= + + hash2 + + 6QWGeehhVCpiwN9fQv1by5vpdNg8JqxY1XgR48Fxpdc= + + + Headers/SDL_thread.h + + hash + + rdWafQMEiS2pSqeEGdRXDjaU96Q= + + hash2 + + pVkN+av2tjneOX9IafFyXjDRaWe/ROSrLwUQRfCrYYA= + + + Headers/SDL_timer.h + + hash + + Nstsm7GCSSnoH66923lImFIE0fY= + + hash2 + + 6jmEztIQClT68gsMRHHP9tVPF5TxqLfBgmkTqOA00fs= + + + Headers/SDL_touch.h + + hash + + LWDPymUVgQxlg3DwBCJ8klXPq6U= + + hash2 + + y/Kqn35XtKznNX9foqsPjC+jlnbRvBuF8A1MzKIjBmY= + + + Headers/SDL_types.h + + hash + + 8xeioL5fy1QauaS4i9g5UdMotoM= + + hash2 + + Em64WSsB0scWcgjtDOAhVyy4XoRBRciw+YaG3vyn6hM= + + + Headers/SDL_version.h + + hash + + uQu/n7fxrWWekVzFRLxJgncZHTA= + + hash2 + + DSeMgtt/ULGqpA7hISV4OMHyIDRvvY5Cr6a8loDxcVY= + + + Headers/SDL_video.h + + hash + + oDSfm7hvyakVAn3MJ/vPYpDiTi8= + + hash2 + + 4kgMp+1L702uCbe5U3mPNYx/zonCSDmAoqKxZGMWlC0= + + + Headers/SDL_vulkan.h + + hash + + k22upiGXgz0TzSKkWtDwaKrV2fw= + + hash2 + + kg2f48mMRh4+Ev5cnsEDDyQqf6YbP7YqWNhykRYzgDo= + + + Headers/begin_code.h + + hash + + BXr58UQDjOvu3YEpLqbL6MzdnEw= + + hash2 + + lZjnBGKuQiSupwtm3kZTliIMMPlHVmUsVTRtQ7E0WMU= + + + Headers/close_code.h + + hash + + b9BWGnHVTllZJNggBlv8S0bczLA= + + hash2 + + /x8Gxc1GaIoziXOz/sebI7d0PytDiEWi8kWZfjkp0Ww= + + + Resources/CMake/sdl2-config-version.cmake + + hash + + GOmfPsl6+zUzjRroR1OeRUu1Do0= + + hash2 + + YeQ8SoXGqMam3mk/39htvQ5fF5Twd16X5JPfl7/hSuk= + + + Resources/CMake/sdl2-config.cmake + + hash + + s2hXhDxzy/ilC+gLamGy/Kq13jo= + + hash2 + + DuTUW8idzRp7WT1FT5x/m1C1SbVH0FKvKRKOgVlRVhU= + + + Resources/Info.plist + + hash + + E/exzjLmO25/xe18BS765cbGzWY= + + hash2 + + lMA4Mg67jCQrkxVHL0vBdN74dU3iomW7AggH3QYKJ44= + + + Resources/License.txt + + hash + + fCUUBjJ4JuUAC8MRSCszNcY21v8= + + hash2 + + d+3CuMuNTuvjYs+HODz44b3nsOHwwJqlcyQOq7qhAPc= + + + Resources/ReadMe.txt + + hash + + 04Gl3MPa3Etx4qtkaftLHaPqBVU= + + hash2 + + OjTqSEaeNJpJyrrZIzKimvTn011CW6ucNulPPxUwgL0= + + + Resources/default.metallib + + hash + + 07w7GQmm31+NEK8ne4mSo7m70Do= + + hash2 + + vmrmeHQ4l7Q4flA5dILQw27M4T0Sc70MQIfP+lFY/do= + + + + rules + + ^Resources/ + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ + + nested + + weight + 10 + + ^.* + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^Resources/ + + weight + 20 + + ^Resources/.*\.lproj/ + + optional + + weight + 1000 + + ^Resources/.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Resources/Base\.lproj/ + + weight + 1010 + + ^[^/]+$ + + nested + + weight + 10 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/PICO-8.app/Contents/Info.plist b/PICO-8.app/Contents/Info.plist new file mode 100644 index 0000000..0747a04 --- /dev/null +++ b/PICO-8.app/Contents/Info.plist @@ -0,0 +1,32 @@ + + + + + CFBundleExecutable + pico8 + CFBundleGetInfoString + pico8 + CFBundleIconFile + pico8.icns + CFBundleIdentifier + com.lexaloffle.pico8 + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + pico8 + CFBundlePackageType + APPL + CFBundleShortVersionString + 0.2.7 + CFBundleSignature + \?\?\?\? + CFBundleVersion + 0.2.7 + LSMinimumSystemVersion + 10.7 + NSHighResolutionCapable + YES + NSSupportsAutomaticGraphicsSwitching + TRUE + + diff --git a/PICO-8.app/Contents/MacOS/pico8 b/PICO-8.app/Contents/MacOS/pico8 new file mode 100755 index 0000000000000000000000000000000000000000..98518a606ab717a90884006c1827639734cfc377 GIT binary patch literal 2957720 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ⅇ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

S)C{Q$P%>3#v_z&b!)*K- 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._dqet0-F7VFIO>DvB0%m_X^J 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 -GmJQDFJdj^5;fNd11+XI;!=(OBFCp6| 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�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

vf+hTTBh=WB11)pcexK_# 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 ^Nx6O|ljn8-583uZo=2~Dr&^#dLU9t< z>lN7R9kljeh&;=gb(cINq`RW9h`*VLzaj}=B9ibW2}$@+5QVm)3reb=-Z-pe1fqjT z!W>S!Eo^6x4O^)fhfVBIt{{9Yn14>I*y<8zXc6v=C&K3TxDb4iByi5(hYiR5R8@-8{6Q}WSd zJNx!<{(5cMi$X357Z}VZ{AM8$%gzy;GUz=8E{!R^3zwOY?{py2l~er9VDuvpYGc?u z8qD4HO?&jNDR#!rQTtT=nW<#>%M9($WYP~X=LeW`iA=e-^hh}WtiT!yX2b2vT~hcS?Q^d!C$OmjJ_Ex z?{LN!HunU5$3vXB^lhR0SPTv_?w~a)Xx<`?gzfL9lfakbIh@MM-=ZzMl2v?%ot-WH zM%22U)kx&{?JVH!Vc%YUDH&^imZTG3(nr4y``&PfIT1>SN`ZS-fy8)SNr~e^!Q35F z>_^`7OtG^Mg}iXi`eCE?ksm2Db&tSr5AZV%v|=5AYzzF}7Wf_3Dy|fBWlwz;gj@_C zVxxeG?qAz5g5L0Pj+@BnI^ap?m1JwNCu#em6VZ94L{zMrrco?<6BP0Z~!cMBoeLZV%g!yu$*TiENR*2d_4n1Hh96 z9mt8Xx0TO~y#k*={>-YzU^N`SB zIb@gv!4V~&=+*O;;7Q`!kzunl7%@{hx&ihKx%4W)D+$s?gnXk^$kHh)9w2A`C zi-LbH=p{Snp0N2LOEo{(9o4JG=LNer1oKbA%B~g;Kw9`K^tPQwztS?O&9?i6dLifd z8%y$H-*Qf6G+*@=q>eM~BUG8+_mnBUNzOq>HY`e_a2&xl#(u+p#c4gVg}kh3OL~fz zG&MiGT@kwqAk%k;)}eP(-Qs_tvj5-o4tV}Iz59Owy}Nt%f784F&(OQWGcH8$Ml>eV zyR|)Kz6ia0x~DkwZqXLmGjjiwe5dyBoDIPoPpYSR1to%JUBIp$=1C!NFdxo=jsMun z<`&WXgXR;%C>S*FO%Iv`LA@6{R;$|DlKPrG6ieP8RPmeD7U9Co0MvQJ0DYb81QH-U zU{5+5uzo7Fksf{icSBY|x;UKsngaIYDAi5+>8Q8Fm@~-nV;N#tA!}Hexc25Y_Ch$b7g1GGePdk4&>aln`W{5 z*jpZwR1lG2d`^oD=W|A644)510!3O^1OJUAiBQj%@SNYf`9H`#Rc;C8P>eI#U@T*U z@sFW?^MSMc3xjh5L$5bC8@^g}0QQSeY+?ny+ei5IqC5Dtm-h)={$AiRiS0nWJ37e> z{dm}9JA)MBPWtd5nKmm9AOcOAljRk7>(Qe_CRrt_)BpsTui*e$r|#^ON#=|n51TY+nm4Hu?u31NVD}=n@}jo%0VE-3;*?(H>ca_rW15Od zOnm+BB*g4~LlASr`G`5}&pg20C}>vX$%KVXVnm0{@p*Cqz&;2e-J2)OJ%9)ar}I-!$xD zZ1k{8EM;#>taQH>vWJlgVnCSa)8*|7>!NzKe8*l%?C%Fn)oa}vH>ck5B^lzk9;_S| z>i6s6s%N{yzJq$CJyl!wkIcEAKc4fy|H@U+E?~Pfl*fVXS~2=x>+~;d4GP^dP^*+f zAY!Eu1wEYKS^Pn0oJzSdKhv-V`o|3tr=MD!eu%pMKPPiJ zKdikp5Qytz2kF|g(Xe-OY+T&l&j#J78tfODMgB^_IkTqZ+hKEO%XH9A$@e^$Rec#6 z>uZ~$EyTgt9Q4&n+c@9hu~UN`?M?olQ~(Y7-VB>E;^Z1je@}FsRQ(m45Lg#Gd(($P z;vJ1H9GiNJR*7>)5`4roXU`DuG)VZ5Y6R`|2{j$rO zzgv8iFm2))s=hgzHnRrev!PIXxxz2_6!vZKo4fr?cw3Fo^wJ@E_a?1!7}FDncervJ zudUW9{sw5^b3^=6emR*&oz4DfAcu|3TD*t>?1Zsi>AP)yUI zV5DQ1w)AO=@cbU0Qz-$x(2Z*ehPa&)MTVCYD>GLYe@}`#d}`tSIA$&no14*>TJd|! z!h@ye1gx$u0$V2A#N?*AI@)*cJTIDUgBFG zG&jivC-i6DZz?J)IhW^H!A#u`QXoj9+X+|-v zvAJ8k!(D6s%G0G|XtG9f&2(1^bU4CVO(Ez5Hxzvs_q;&e-B{L^o`P$%{3Z+CQ^D`o zW7NaPRzfePa*0bgeuyswXJfYZzhIT_5ICv+nR^_=`aF5T46g{y-h?+=28bo~yYxqk z+{uZ-I~?bSuCV2Ym{lsiosR`+CKIOS(AiEWdKiA5ZF|^x3$*PeXi{us61>2tJ;39S zGX-7~?a>1Z%n|_tgC)I8`}~`XIhhIgSTmj*hIMFA$hTjtO~Mz~tyKi7I*xBa)9Hx0 zS0Kg#H3643!1S-4Q{&Pr-7+eN1-&)I(Dc>dhz7D&N~YSN9qiI={ak4FZc@&WIjb6! z^+3`EzyWPCEWxpNTFzECCUou$=b>8ahWQ30ex+LOJ@|lc9D4V(R4*2xVPmsy)+z^4 zD`#-^d^nuAkDD`b+`T6i79~{?&uV^75_|&I*8;5nd&K$-4r0OTERF?S+IX>b%eb$V za$hK;nA;u7n5n&dOOg9Pt$iLSy2#qU1p+r=?AKWPwIS~|);{qoPD|J$?+FqV39#_p zhPlX?#a|?dvCLl3g`F#9@ik%2Ixol#c5j7>g+`wvqywjdxA@0?v%6$hEQ4HEi+C&6 zPk6ug{ebTT5~jd+IsjCv-eG+k(kM7L(cZiSJ* z9yHY|-WaI3x!|)L<9vnyQ~no1UMw}N4~&k_)a2lVcPOO!H;2qUA>XF3`8IohAbuyt z?0(vlS7FPlsDaNb4A=Z_S}XO_uleh!uZ%@eg%NuNeC(3yOPC{F3$fZN)hb#M^0Ec4 zUSnU3Ei5nVq)cv-D2fO7&^6q+Wf2HC`r-rR-AB>(AwlzvCAV4FOI?QkG6y*I7cFP~VW1S3kF1L)jm^kpwP}?Dcqjihtr7x)dUY=@OwVWXhD$BNoc1A{ zjANe?dkV+@9}>f^tUn$K|5aJC=3i!5L;d51$e2sLJ8;>_9`C3S`C}Ka6Y>XLpAKD?p&C| zG*<=3&Gam|lr=bG%-OJgclV^RGj0=xxVnV5o|Bb}$P@N;2J>qlzm`~#0y@911MC2a z#qGEOk-FMhf7;7+iRBmY^~{dDU`q$;-EV4@FR==Z{7+bc!ZzH=)haGhixI!xaV}4G zWKx#f{2QQ~&MctCy*@$aLl#zkR2DP*3A3moG=)cXbP$>#(o@Z_!Q&!HY8k0_vL#U)u=YV#n; z9XTA8xVYvUzV%MLr|Js^^K#@5&eGR6zqby7i38-$%8(`y`2@@|{6y>-Qu1Ac^*9A$ zsYcr9ZBV|;u`ImB@l}@hsyL9+9UI7pPWUgJF&Q5W4v#u^(+hF*s>hqIUfkK+wgt#X zM|ixjdA9iOka;lVYgDm0?x08R(SU%tQv%)*lHmlzjPRT_NIi2?YsDa4n<)}d>IN}L zZvX*h7rL(WKp>yAiPHb}QZ1H4Y&1kJS6&TRka$wh%4$Jk&F?7w$S^mJP`gUHJ>hJT zsYM>!;VH>Bqw(2Lr^P{`Ss;nF?2^I29{{lL0{I=PJ^3r(UKZ7=F6Q-*oXB$vb$dl3 z;03V>C4ky+0X2jX`La~(Ep9Be104N-SXKm%;j`Du48STBVGfH6wSP7HV)JAcWCjL$ z_xaXy-YHuJ!(a+v%JMSjHP|_6Jy5(xV&|A{l1yPp@rB_xTUl5w7J51yY<>>(5PT+kRlg+}tZH8BWL&ZI z00%$TGoK)MXv9NRe*uQCg(LJ}xFbbh0K=E{#c;NDz9@z__kUduHaJI>ScpmZorK$2 z;C8Kx+aoyYa$(%=6x{A~;zIS{Ho+yn4MOb#w>hfO7-(xu;P#H zG&fgxcYg{_3qk)BoL0!|=nsmND={jLwWMSek{lZ;c>hI8N<)}trt(rtgyh%YJUDGl z=d6aJnqgU|>ZwG{Eb2jUGz$=VSbUXL>&(Fx*IL&U8f8vb^=V0d>g8Xj&S$b>{? zj7Mbrp(5W%YYlF&(`Y|`ncsY0R+|%ANfB|PS4sq(8#pSDEOI~*5|Tx-5>;cb|{a*t0$%`De2JDfyFAJ7vSSQxf8)o`G_o$rR!h zAR8$DLnr8X=@qfB(Bm?krD7M$TH=s_EARBiZ!8hTANhT63I@TFi~QydFw_L?4mpuN z614j+;xGvFVpbdQq(JvXggy%mf5}DiLBdj9B91&-TJ5+0n3tgBF5rjDhN8%Ec9vf# zIUA+!9L!uTjPz&KE+d_}ntnl}!xYU3BnLDiH{EE3@9tc{RWFh~+1`h#2B5vvJ1jIL zVO#xWt}LxBz4Jq`RAQll-Gll*{2O_A7Z1^Ot7F&6ry%o{azT$E?T##(Oz{2HhOa?{ z9lE;w2YWOKMB z58SQ=xA6%g`EgttDgF*(Z6As~^L+Fcal}FI9(}qOe(NCkS@8opo4|09P3Sm#mp^N0j zB5>>WFA_K&msXM_m3U}e*SOOB+Mg0L;gTDX?HLpntdhQ>%C&CXF36~zC4Op1h;f3R zp@bBoCH6$kRbt8@MT%$7T*0hffyh!F_I)6cYaLk`I*Y9QDRfrO*En=`=1T3!e`df= zFvbJ|YD<62O&VBXaAe+`zM>aC;&_Nu_1PkGSPmFWuWA0%9|a6@I@%T2us@2hEUSLH z*sK!B8S-uyx+}zB1f0$lDu%=ZbYZ1A1E(?1C?YJ31kDhN(2t!p(6b)&))QjKUE2VzH*bE(k5w`5~B%LvJHgOWiO#dJV8tH;wE>);H0C`{%hfS9dsG&=p zG%X@}k8BMY{eCT5OG(%&!J663{OqW4c)~Yl{HMUDIf0IT--blY1Y97;iMS_Wno-%{ zQR=*@Xl<~ykf8dB=5_xed(Caeh}UH_&Vf_e2TSs(VN2quvd_wXnX{)hv!&+U?mqcr zNuon&Pzh0RHfa|xf3@u5Z9IP$@7pviM4D|pWi<_(52f?ZXdYq@?-ZC$Qew zH!iuHq_38LYRJC6W;Lwp)+9zFI0P9nA{` z_w%m#THdpW9DehUc`NufB-`)l<_72-=_M`>)>o*<@(#ANzJpK9j~eguJ>w0Sw_g9l zv1BuK&+jsnQzvqIe&1PkYX;9fr4RAsqQzr9ugC#bW*K8SCZJyQfjx_0H0C7wz_Pq* zUo@6kWDaZF2Whw>SYF$`L?}QMgKbR;(Hq1%Mp#~K+}-TydAwdv>FafAKmWm4kGFE$ z`U60{*>RY{%&aNQm62dF_{dJUca|NrxI$>qs{3U(l$@h)@4oP!Rry zeq4-bTyB=K6e8SA>J;c@enaUWILlnQO?xUzCj@WJ#z<#+@s$W`lQ0ZuPc-o+KMF}B zuRXDWAF@fh88Km{w`5FDNBmxz>5zf38_B0%3vr`8rA+p-y?pw$a0AU|ObJ9bc~J_r zipjLN#(6^uB-zttXfnR6$&!haZ6Yc(wD2}Ar9$d%q^c|_5}K02=d{TwpH*_&6l{9f z^%(B2T6Qr8Ga5P6Zq`cjf#~5>CQ%#}>b8l?+uXrhCf*zhazC#>_c=&i{2uqaVmy1>E!0KnxdbsSdaFp=$1&>zT*tVcdysoaxJSVQ zT*tVc%XQHn?s0v9?-;-59_HR5?(N_n-!XoF_Xuq+$sTIKy94F)^HH$#;; zm9Fqx=JS`y^ErP2PT_L2+@011neLP>kOxxqf)FVgBL~Ol4qkkl`o6Tn`M&x|=ll9+ zo$nieCf`Z(CvX`JyykF_y!eAm4w2tqSEOsj2QxpJq|MFf&-I++JbGV1*2b^>Z|xIV&9*pRe*- z&kLBl(3cV=(%nD z`x>zlHyU$lr4p9;C2Qn1jxe#8dgF84pM#hOcAEBajwez*JPqYss|X=F1|nm)n#h%5 z-TL}tlA;^e*01p!$}bK}cG{~$u4X~5T9gxr-1>7$cuFpV*l+wO2L${2$0vqElutC@ zHK?nbZBgwhf}qiz?o1dfd_G+v71YD2StDWA&dL-Sved|hU;da9*5b)AF#tVWa z_HVhB{SDBI#Zvq(ICTF$E@WNKZ7$MIvIggU#KpXQynB+xG;bfj9^m#|Jc&-Sveb=v z@5*D=)x3A*F}KHfSg~U~EY(LSykz7zL~uk^DSevRD#?Wg52aJ^2W{QxZ$j4Fq93Oh znWMkyOi^iz46c}B8JK}a&~iN_cz_X+~z2EWO@1@ja&-*kMqCw7xd&+)lZ z^M88IX*K^JU&0+V|D*44D%UFhlSQhn8-Iti?d>Y>lIM@r@hupzbDezo+O(J3=5(nl zj$N`=-Rg?1>AkcSaPOdXz>)Uj(ar+@pJSZ`{-X1J^>3W->;K?<-}tJ0_rM?ddGsw8 zTHdUJxf$PJO8@`0yjk71xVWNKim#ZW$d}2561|iYRTBJU{RL+43e4I3n}7fJuLL-) z8*RQl5benIM(tEF8hGr~3Fb~;U0^o;hF_m~Z<@zSeIj}=Gq55sr{?M7_Dvk{CJzqp zw2$<*Mmn!sGK+mvOkdzgxXCUivwW-WYcO~Dw(60C{YtLa+c?3tDQ-WKR7laI*RnU# z)Q&TVAHMjZ;oB7H?pJ)7Z*zC89nd%f7;GRTUwbOMo~0j~$0Hr7i!-~UiobYkx;OEA zVVg)x25r8)RcFI9+MbE||7O)mXJGM8=2mw9;93H;x9!zm;mN;aMA{sTwp>?WX9fLs z>T*3&lOaH{vu>t2$;G`!iiNdRO`M&$PLCc=A&cm@{a9!0!INjEdGs|(-tlcN)K+Dc z7ig{I>pU};d_{oOj~xbq(}_sU8HZn*n}LS6 zsi~v8Ceog=xV5{^JQ3-X@zy%y-PBEX9mY!GXKp-@RNb19m#$lQ0uqHh|4d1mpX&@kylAxLT5q(e!wicoX!%LvG@T9Ecc}-ocVwk7ZP+zUN9OD{hnuls#XNU?(HeLOJdv|wS-JPxV>%8z|Ch6G+Rov1l-$_Ypth-soz;txy>HEz<&1Io(XXHz)pK!KUrF>(XN#9I$=*7faDgejkfpm zwrZ=$GAGO3SxL26-UJ&;mzwdwM^A}e2ci?)KPqGIa>uD&zybodNejTmfc(4a2^CvgxCYTiLg;M z3?Hy~Thme+ySt;EDKz2TTV5-_Fg`W3$N|g9W7S@*^3EQ>2e@<*Poj4dc;i)>fVC27 zNX}#>^Ydu9FXCvNvjZH z#xOg#AC3c8dwH)wzGRX>nJ|(9W&L%zLXG*@1+(6E4)}3Ti`>Bk%~9Qb)vT(jicRYc zzofaM79fr?73)=t%tBW0VGnLe?Wt8z6szWTu;`{1v7rFm6s_{X9^n3M4{&8wi*)cF zG9TZAKjK^9M@r4cmKPYS-+oFcm*4(LKl!TM^djx?{Za`_nw89Y=EhEzEu@0zAg4cLNxLh!LXzYd zX4m%j9n}98FrY~h&86MBh>Q=QN6kg2D&B^BYnNOc_Hxl!q;1&G#W5sCQN4=a<#F+j zYj~u7rEnX6sP7-v_}F%Fk#=LbwyH3q=aoF23lpe&PCq_b?*COp+ZP`jX z3e#3B;uX(o;SUXVxn~%6WziZ@E4+i)RZnqD#ba(7wJr9yFslk)68LA3Of*ir4ErbD zmkY$b%_sr+bx^kBI_&KW!mOzzx4<5KyDThS^S9v}xn-^Qq|_8G{>j>IcBNxagDq)V z4F3L8mY&x6*Q8iRe0EWbM7}uQ67VOZ`Yg7_{oc^ zt(w^wp8ZC6&L$yy;uH$mgM9lS@N8^_$n)V)>WWRkLFnD0FX6;XV}9Rpy{%68tY0&> z#3r(W67+x)Vyp2T2V(_s69xTEe($#M?9H?%T(_sa9K~LQNde96YCw7zNE0i~K)IL0-m&X?Np(oTjS~rcno7Z*S1i-K#|Lwn?Bh}?0b_18w zc$z{b3XGNx+^nstx2w7bDE1$0h_+k=i>xU!GwxAs5UjJ|pY*m4j-{B>@s$=SdTEGl*QxNmGU)ElPX$g#xKFrlDwPwq%p)ljAOI|`wKS4u8QM(q7%#G zooI|6bvu!DPs@)Ozg}ugK$KXdpcGCr@r%tL90>K455 zR=_0;!fzrI`8gPoA%mJxxruF!71~oV9*?Stba;_=9Qf|xPE~_${X@=;BBvv|rbZ49 z2+V1Glm|h3G--S5exHl95Z+-nL^{%oN1**pB=Hd@KDkdMP3?(;(o;LbFFls<2b@5T zptLLFnuMspxOSr-16~+0=wJ#u-(=SOJl!5WFH#5dRYW!VF%;D-AqcjzsMTu~x6uO} zMg!%wt7#|+|Fv}#i@r}qi@({$0fWcw(T}T&YM{=oiHdY7m!isz|K_I_OW4v@w)~kc zN6t(U_-RjW<%ga6&Mc;(WgFLy-dQiP=%OFQjcmDJCZCr0E``$IEpwWLMv4Yc%);VB zTofONpcbD<5ff52rnU2R{4SLJE@*VuyAEZ>4(4rWV?wo1wfcZPhN4zS>LGvQVO9Gs_}e zQ#8>`o#Rqlj_il>zlU@GWpqte(l8von<9tM5kq;yR(eZ^vbos&w=bUSX5o+Ulk?li z%ZfbK;3)~S5AzVaIQY95C;om;KZ-;@uD>q~fR5C^{4CD}LG_3J-rF>lZmWobIUHr&Vm`x7lPB zq$1d_fxysk>?J2dPIR{s!ki*KFcHQs-%eZc21UW|KrAAgGdpU8?2I|`L8!KuS zT`Prd#$l5X7pr#W|MVa&E#~;jsycI-TpQNY>PykXE}YtMu%^H8z zF^*eRvht?Xut`}K_8#GIPQ)Z3& zL~5GN{?+g*PwW<}zx$hp(n^M@yIiK0UJ*T<4x6G7hm~-mY4tUd=~U|0Ru!aA)K*pe zw1!?zG@Wlb#@J`CN$JnM<}YNu>`cpPt>SN4R2&AgCS7n|+MRhZZp$(CK!H_q+sFwO zr|~hQJ51DV!waoPZo3(=kk(>MC}7Mzi1>qlYu2@2AVd z39`xE-4JQ-Z%%(xTlP!P&|k$tzDq4!NCLA{mj=9z-3Mt>drCrqTdHouS|*jl7t*Pz z#m9qsFH6W%a2l9+O9qtd^!+4zar!Kx>wE)lz$QJm$VM%K90c1bpT$trqe$&&-2b)6 zFS$<_F?iM(qqeOr<7cw`WLOhU8fJa;gZ>k=m%1-n)M{7(%stJ7Zy!)-rv|up z7Tq3(cxaw~VAQZYdTy&+5Xb@TUy#V~?TUUdz+BukOL|Y?0e+txMQwUeq`F8=7GAJ9 zrT^G6oU-+LHoahI^4W4Ti0^jr9!EKO7)AoAA6)jYYS-pc_xIKFocq@=a=vdYQ{Ruy zYefrKgna%$7Z>wRVyS#|!a+VCs6#cF%hTf1u$z5c#AHXJSnU_=i^^MK+yI#oXga8-OfUFwp{PL!Yr+VB%AX`00u1lVuQZ~>I2PFvRNhJujzX_Jl9 z*B}eD?To31V$+~Z$7AX0F79$>tK6@P-8#`8ukx41(z*JzkQ6;~7^1;)=sDLu1>avEAB~`oJ8umUS?6 zWEsK5m{iD+TGtNl%9AAAb(hP85ID?X+;0TSqk_ZX{00YCLk=XQM|_ zBS+>L1NRx$wf@{UxF|%P)63r%f~!QFj6~pQ+H2Q2xVqz44z9YtuioI?zy3|<`^Fu7%l!7#n-z9UzdC)z77z4o$_D9SN6P0HqCO*Q`8UVY#<1GooFhS2c&*9 zHIH6|-vqTAKG7c6bCA|pY+Y#wza+5Qspr_KrG1&)pfJtYX1v!R!=Xeg0G#KU` z6U;lu$QwDMw&C<%jnQ9^bo4h&{|;@LBzOziX@Ad>oiaP4iZ}v#_aTXzjhUKd`jh2w z8^87Q6^iK`NpJZ#Zr2w$)ES~9KZN~wS{A^~4UD9KP>2n~G3(5N?Emz({5y}~!}8D| zDzrRSG2~dMkuw8@VcV(7jWjkS`BtT(O(uOkl&#>?-iJJi$mx)$iY#Z$qqa#SvGHrL zqX4l_RFmd0!&lFg!!PMu4bv@sE69rAvl*N&{%wCKi3*0gJH7OREFtLJZCa*IeEN+K~dqe)i+ ziWuD{3ni|Ww}wYLQXKCeP>Uz4HXHfj4chZ`sI0?VdL=#TM~~7QORkLN>Ge-YujDUw zqk8fzPf9azkJiUM@hp!@E=npxb{+!mH-Fm2*bR)o{>KcB?L(9ctKf>;t6bIumo7z&wNWalgx?HGxLQH~&A=UH+ydq>23kJ}pz zwIQT?n=n9jM*;2PkAUAR%n)K`gV;Op@&pf}Ih>(id{uXiQr~*?ZNGPuNOh?TPs1fC zS33;f7*Cm)s`-#TK2q;q=Sy2D^arj+V_>nBRL;d+wZbQI1!K=0nH+SVhT z1Lpr=?LxX?XfN)Z|7dXbW=6gL8d3^dSx>1lu_;o^G`AM#wL~pc(0}0=Ua?rW-<&=E zCjoC;_Xql#a%zlSrmtBd-xup^mdba3ea+*1vp#C0%>(GA(BT1V9SlAJ0-x5V?4-~A zO26i=ioD2eo{~$0)=PrYfjQd*rB54|jVvo+>;LG8={u;(S$XO5+U4jFA?!*tB3mL2 z92zk1fV%0CwZm`ZX300K!MDx4+QWTq)g9UPKdO?OFf~Uz({UU7o8#H2rQgc2|3N)K z{oSmp$oAu&$$6$|N59bQJ;6C|ILh~CX9oq%w8_p0>b^Jp=2l|mAp(5hwT2qjoj9kH zwy>YtLp<)h1BM-woueFY7f6PMG5-yu|2GWi?Z+vR_gS26x>nexH?jARLahMp_2)M^ zOVO`Q+HBr2)to;K3VaW+*DA#*hWSRTSjGhdZDz4$EWV_^;2uFP7M7P|D=AY(vm`LfA_H;8lq5V|my(5*_^f9Ynd?a3L`G8e(^jIxS7@bed|lm9sgM z8|)%esQIHzCS9u#0?sO>Rjsm}Yu?Z*cBl)s5sJkC_evRjq@|8~kZ|j%MNDBFn##B; zUSnzxOJ+a;xyk9#PFau2DsqBtAYT(g-joLOju{Y}TQ2i?tg;d)i-B+7U;#>s_Iz!3 zt$F7R?Zx)_1L_NA2;k5fMWfZSguak*ilx{k`lw?p(9O3(_KP<& zYXST9hw1Vf(Gu}4ZQl3Tmb%6r4ZSAEWAcal4YE6oKxB(x#Tx$RURH8%3929mA-R20FpJ$g3ge z2l;~N+N%OR8TP)wzC@eaA8F62(yTbWXJjE6g8Jk8iPKcwy@H}QyFE>$(A(o8hn>i^QHGX{XDM*DP6ox>Qoo1&PJ(|iXYi4 zb>4R~pL3^7=v#BPTXWuDU-JZ2^VGgIAHGaY+oea<_xYp#0)3vUYM#}%=9O;EtN;3% zXQ`U!^{x3)x8?G=ykjsu{Detr{ zwx)Tl(mGbCu5xBue!eBEyN!$Y<^E2=c=@$cVf-h8@wg{G@-a|a zB2el=iSF8fRfw2qWz2&UkHeiI>klI8qxUvAbiX@lMLy(CcSCnwcVskkXexeSs=KBt zEeh+%$g5*`=qb4l51zaX46lo>P|ia6ZI6o*)s^3|IGyj)=GRC-6?s({4^%NzQAH)b zX_fu>A;L*3_#k^E8KX{DY+IBo6=vq|)Sf=V{mRp8)tknNb@Gj=b8;JITg?`uE^*HWIm$y`$NAZuiC4B3EcCBBPEM5%^HNJWAF9%juTEbBCnK)H zQ9b`eu?YS-yydtu8RnMA`vcaA>Kf4eWaJ|D!j^z{r^={Qe}Euc&rGo^DpvB`VPJCy zk2VE;7eKL&?Mt?gGI5X2S}mUs|BSi)Q2nlw&($R~&#jY8n0N+1nxjfVgWXcQ<@cfu z{KhKt2>3qt5H7~=^WDNXD7=qnUHo^}a{Uh1{C5)Bqvi$aIMHNF%Q0E5r%Mpg1*GYk z3V=}RvGIxqU>$z)| zXq@nThS_^IhkP)a(dojv1NG!aY&5dqOmp+;il55c-qK6#Z*`kL zmh#AkX4ArVl{aqet5e~_0V9TSSj(|741fB%cTHvx~T$Qr-9lWqu0xB)>>L89WA zxDo{=LNpEC*wF+Talr*;L>U=pVWeA7fh2Y}a_8EBjygCx4&(0Nj5yahEr%s)s7zKsOB~Ixs z@+bU&Jl2&Iu?*t+XEVtK+slQlmd$lRWZ{t!J<4bHiOlTbDWBPcPhR=V&V0I;&w4n> zy|hUY*+yI4=g0~3`PIiPJs*6=$PFwcgDt@+t7HSkML)VWY^&-MB4pf^zsZTnAgFxV zWe>oo`>#CNN@Zm&g)`?behcF#d(WSKY{isD!Rxm!?R;v0{+Mt1I}i4AIxufLN&TF~ zAjed24L<<4960N8uD|UA%pvnI=zcF?V|aQ?at;1qu0pT~eSo^8YRU%5bEM_(TQu6L z?0YH_Gl#!gIeS4ga_Y#)%)WzNN(6%51&X4DlwO^Pk6DFQ80S0dWrH<$0%$pyqbHm{ z{hF#Nsw{|AIt$*;r?L~)h(%FG@SXzR&V#wUqR?d{M$EDbjZ{JGFKwRPCDkL=P~8;~ zGa*gbnv+_%A~Z{juHy{P# z>Q*brR{2XCX6L24fxdIeE_5T!R;iScL0u`J?OSAp`ht2-j_SyuZkB=hcvU6o6DvKA za%}Z3Bi(b`OIv5>al@yfdLOEq&uuVUCalJgPbv?)ZWxm@*HuheCzM;2hRBc<$xs|? zP!*wwgxpu<3~EfXGy&V}MrfU|TH0*S`No_@jIipkwq5=q=Y7FR^IMr`RF9r7+tZ*3 zUbcC$YbqQZH19jdh3-kvx=Y51pcy?U4{suRP5~eJV_zFOMcy^!u+75>K!ZeB)R)TVZPik!{k|PoyyekZ+~$2fhi3(yNU;Quat{uJ`)?GpK@*O zU$f{xxyuC4sCf74cyH2i5%a=GV`tewn zZZ}PrEf-fOUg^%{9bZ;n2s6K|`g?`>K`M06`0We@YLg;bDLi!DS!-ynjcnzfa1z@G zO0`&ai`YrY4b~<^6=kX3Jsz+>o`G(R%(3w*(RQt9=6clb_mH?1w>6j%L0QtUuuKdD z%swGF$x1iu?4Jmc^S>ZGnFFP1`I+w(+5Y*8*9J=eg{tD$L1Se@Fg|1yr{PkPk@4QY zAfBz#=k`tHjDhr@PxiYP%WxJb{yHmz>OW?ud(6(3nmfSbaLq?W?Obz~!!@eBsyPOr;1;z0E*x93u};bm z&Y|J|Nq#P;`!@C31Jq%Fs%&dKRDTYSc27zG}+MIEY` zjsN(ZfK^IX=r=~b=Qkgc<&>1{T&qV$hEqE4lVMphoDF+LinD<`44QByRYhmL(7jy< ze3cUE6qyK8Y;PB?wX0=Qru9m?#;ffYzbblD|!M;X||ay$F;`xg*~OM;Uh}cm9`?6k29$?bT=akiwG+Y*iU_} z{@fn-9$`9-OZ*~#I;!lBora^CHjsFdc!W-E*$Q7k6UpT-iE}U)VhS?T5J>JaC zvDA00G8Sths+S27q-6EEmkls0P-CyG9yhnh4}0JYIRb(5sX*L_qLh$#BeXbo3pKD@ zFx>n$dD-dAzaX!NbOEauO93f(q(*g3(}AIMwhRlQj9lDu8V zsjpSQm(~+b`ajm*Id? zr~U`>)_KvtoxE$Dychfj^459LzsZZm%pyKwa<=v(S1Y%m-ZNLBB-9Gqu>c8fm~8%5 z0Dyb+-@yq0aF72xH~|3e$$tkY0Kh%{@8ARgxIh0pH~|1orse;#yaJFkSWqsgY4qrm zR3p;nb{Nzd6vpcBZzt;SLsR)8EI4spj!4u*Sg`qZ2J%R`im$c=o-h<)H-A95ldf8& z6XvVYc$@*gJ-rUER^bA-$bnm;@n!PS;nkLe3tWQ(*K!b?4zIQ(T;R4kaIFWy>F{bx z!UfKCoccNgQagP*yjq0|T%iLum~VDH=te7AFVu1qGwD(Q5a} zz99Ti@>VW^`K`xfbAa;b`Nn)Xmv4ir~!3Kuid*jYxffew6EQ}$=co5w#IKNf(}+oRU4>G{dCw5a-XtD zZwZ&Ws0R#}oHkOe6raT0iB@yStQ4nBQ&%6kNxO>|w6W8@#a^^sZba>xeFNIEXz};r z1j%ePS4BQPV7%P>2yXOW#5HkuD1cDsKzhFvj0fH3t0IpCh?~{ska6ZJvnk6f&}^mM z)89&UBNs7vat;|)T8j&yu`2eJR;p8*lyBXX+zPPkd8j{;!T3d3`^5fh{Gv{L>q;<} zBDTbT(ahOj>NGhI^Scv>HhjxyFK*9V{GKl|t4OZV$W}m5_<3+K{xE38j2?UK1`PiC zOA(1wHi{z5yi16xvM%daHEDn4q%G{U3U2Ac#`kKpA8rrwXo;vWMG_#dGWU+g0BXSe zE>QddFSO={F2oe*)jSh>q2JsV*@lJdT_x+VeBZHsxQ@t!Ta$Sj5KGo#$)j|AIK{gg zRmI!=SZd+~q1g(wU<4Pw%QfyijXidNhcD5M0sDAfJG>B^Tb+=pIQORn-!1zloBSvz z22cIBV55xC1L8b@({l^?-GZ)Kgi$1d?t1bzcu>|FZ3c}{cN}vu~x>1 zetgsbcxRpxYgluX=%Y6>S}lVM?7-|1(hr}xrgpFYSvq|WOfNOsu>V#rlACK1-UmP> zf7tnX87H@JXjl7T&ax}wuei<;4%%kN9q%u-S5Cbp_6hC%mE+}_u>enWyhm`W3h$2{ z?}ges((%@6?^%wQjlKX6a=hPYZy(3|Bh(3q?c{i6FNt?I*7$`C$}V2p@xG?L?>Szk zS&4ns@s?`uGQ5$phtH+(A=Gu|h|~!Y)P3vwyCO4wj&zI5ljf}DMsyK%Q#I)u)a@1m zToI{LLh{ftD_s;fm|J%JP7js#wY?SvU4W)JKv$4VfT#q3${e6Y8fc6IG|vH|Y5?lz z0NtU1iUCRl-jeOKdzyuaw|s{_^b77$-#%mYcfff4J#nJ`o^})8RL{vu zKJDH(9Oa<9`gmC(VUi#?X`d*pyea%5BUj~=26584^QQGirIwpnPbY7qiqrj>p1!1# z`weDb5j=bzRP(+f{T*pMn#!qTf|$T$bjDrb<`vA=vx5m)=$KaqCK17^ zr=xEy=a)kUaem1u-$C|oF2FzrGxYyu1~NFQ@i{=FuGx0uB!B#@JOX8 zbC5jKSGz`xmoN%{;Ggn|wr2Asdf01R6Io3K%t52Y_I>GEBYHfTSP}If&01y9D4+WS zEP=OO=WIRB@XB|6BNZ=kdE7BRZJLQS#WM z^4OEkqu&qYaom3k_Z~IzM&Ht{ap69Nd*A;K?tS3)7||IH?(Y=t@BVjie+O=_5$*5b zKA>RG%!ge#Uv(YkR=;Y_&gbS!nHM}?`4S2ULUZL z>3<}{mFWNcAF`*!-t$ym_+5oPr48Zv^!(8A9M=B!EQ&GEH4=TS+qlTs_(dK!7kl4^ z;l--b@546b{`F&p?bfNb%CxGiQ@w)=>r?|tudGuwNle^(LZUzNeQlSj6LGH40M2nv z0|#|*`O{*T>SKGw%I~p5=Mp zTD#-;%Q+ryb$4m06PFP{)jQmrtQ6fa)8?FoQQfg*bx`Gh_>@>%aw@-OyP6mOPuI8D zuWGOF%2HeGSLKg`5@o-tw-4Qoccs3~-ab8;%6UJP(3whDPKkAy4l2nJswBViUj2oh zqT8Y)3v*ow)Y-nmK6pLpc$}RQiRG~*1 zd#rSS!LpPmC~`x+vF~8KJR&G+l4Ha=S=;(BG5gqfl>@K!D_`y{@x8|Yd1+9tsbis0 zxkWm0=@^f4i>BqJV>+=(^6)TxcwJHkH|c4zw}5r%Y2tEvnxV?C)}m5=4ky_#xLoQ~ zma{z$gJ(@I*_eEcFgSh6?+a*`X%yueEu-;vK0vv-w2!64hc0sYYm0>fusJQz_wy%W(}6SLkx??s0#w zv?ctZDw(|EX`pnTl)C9IHP-#|pq2lJ6H#6slSZ+2oem&6Lw1I~jceib@A~GbE z2|I+(iY$|n$sIm9vTOzpSLiq@XLf(}p7_cU*9NVjJB!bC+27pr9S>lLO@{F23Gd$1 z^ahRH;;<|=5w!s8uwRUA42@?*-OvqQoGVJ!-R9oFZ^#Hv;_^B-LYgKd2VTjk+1!T- z9zItH3-`9>E>b?BEZk{A@=k;l*f8xO=IeEu)c72Xsver3+@Bi9S^RFFd0^!*ieopi zR0*1^MGxQ-zj;0a$t;`t2#1WO-wi(Do=9OWrD7jVUsh`QUgil`o_CMc~^r1tSqccB1k zO3C7JvItst6xa``f^4yWE8n>HR4D<^t17A1gyby1q((cmA7sbcLNg;}+t7n>g{J93 z9DjJCyZ!GG?a-7AK)T!or>z$_)hG&J+i9&x*(E}g5&cv(omB2`0FRUnSENei-j4q; zl{*Q5|Em=*ig^kKx4`t!FlXQk4GLNd z3a%8Gjo~XKFWjzhRlT8MCX4TUWRw>T=EPrb%pcAZwuXuG`tg-NoUTIUa%Grv>nJI$ zVg%7B=&h)S+EDL+wazi$3{GiNxme4GNiM_Bnb{N4Lgz*H z@_=RPM*>%*3Lv2+Rxgx`rtH!wUKp%W969S~MSbdsde!kM*eX&RQ8Agzq&8(oHh5$< zE2G$GqLTgiIsEwKQ}5qKz8vOfSmLo)gn!&y!)Q1%KA3jxNVOby2aehmAJyu6MY4_T z`Np_&IBUcz;r@529C&W#axE7!qP^g&$bQ~7e1r-n=1$a4XmzC$WzALf+hx0$o~ct~ zhrE>PD?|WNQ}CUjY`{UMWsk(%dYz2PmT zQj+`#my{y7CXB z>6PJL%#q>zWztX4PK(MMC4dKa(PbUF=-Cd`!CiD&hb~&+Kposgmv!i(UkFL$sJf*Z zI+Ux|vaAkjMAtY_s$(iBy@`&X6c?J%NIqSO8JL)wjsuQI;*c4r8e`CF3 zyxjb^ws>4jObZgV{e)PFO@LcIzCrRedin~)ayimDxheB*^2d_3Ig1yO1H1sSpa7X< zu-k$nKCl!7K13quN|YDAD>e5sz+t@xDTKHI@)xcupF8W_^1^*J``qCIBBm1&?#$Ck zTuQuMSbr^B;BGY{!<4i@h_xZX>Mu+P);}psm`@~1+ydo4o&$oyJ-(Vf8tGp(Qfk4) z3ncRBUVP}AB`VStpw>AtMli!;~9)6xB@(~UZIX&$dRd^Wy*T%>6F=~cijCrcQ?2|-2b)eu-)gG<#}(ekn$>?D_K`w(}o6iFfyxw8^&U%$oh3&$>!(X z;K*U8PSeSV6CNfFr(CDwkijO*BQXnP#FEkeDC?5E(jDc-9~0%#y}B&|uNnRwysNOQ z!K3jAGlkC+Jjyi$hhn2sWC#(aWO+SMhMD_USrvJu+cma*+JbK2A82`UV|iCYUZ_~8 zQVbP)7My}n`=rC-5k4|v_ehkbSd!(c5v`R-84w>rdQ&$2I3yK)O(urhMari_sre!B$5KAYLCC1?s$q<*Fh%qglNY)&OPb7m# zb|QwjbRt=V96nKxgA(aQO6WK$Laj>rQ4ygor5ENI@hf3}H7q7C#ueFb7rb3^~NA<|4(o&L*xhDwdXR3Sfjh6VLr%bjVXw&TS`vU za*MhG12c|!r?k@L}btx~QhVy}@uwKns~CMelwx0ti=cii^0mO2&l z`9M`M!Pw^TajBbSft1;AWS2+Rk1W#vKdzt53iMh^aOiq2y{#)CmWi+nrNa)%Tp^lo zjSMzi$Z5pAKxP^h$G}0@tGE}+_@v@kdJ*;y+>2ynP;rbogrRRk7=4`Y)3R`N6! zx8%D-`ZQrXRTv$JuUg|1hT4PfN?YCRBlD}bn1cUQHbFr>Q-(YP5qa6P&&O?j2zwEN+^n;Q&SSk zrLtSm6Po(Ic({FeGdGQHc4_ZHxpUUp$SAoFd-lX-IL*33bw09dzHp6cB zb1}e9u^@2v*XjLVy1&V8?_r`jsJkD14Ih`-Pm}Q&BWW-OqA{r%MiDNvi2~Y=L#jY#5e=lK76l~phXQ)t z0g_om1F5M*0m*!!fSz)I)J9Y_i<&wVkjxJX=uQVn?L_-Z+o`Fd0TUxDWj+8X^b?^+ zZ9^4+nidp*jQs*oE&wvxhZKOC0u+F(fdyb7Ty^VEq@psUrB0$jPp^oqC@ds8G)Rw> zR}ft>B_SiZ&x&@E%OdS#-)hM~u~&g+DM<~Jxx#BDM)4Fe)CR}rD+=K(S9r0+C`KYi zm`7q@Cs+6$iBa6s+qY6UMq=P0RtnRgPhu6@5G$-Av9jDTVwX9wieHEo9+6mC#2B%2 zoLI#u#0qmrtX_~D<-{ruAyyytuPB61NV{KFYvij~gIHk)Nh`Z0ErFI;#S_E|A4sh9 zNF%n=NvoKFSYZH(g(ZmnlM}1BfLLjHiIu&O5mQoCFstS#R+?O5We;S;ZgkSBwkKBF zTViGJW5h0SV)d@(Xz{I-1{Vm~@))rb2}`>9IdptSnuy3tZ_H0Ui?)t?Pei#TSh`S# zcq4i~)gm4mnLQd<#Y4Lq(Up#erZl2hj#4qSo)LY~@z7XCbcy4kZH(w*$3s&X(I*`b zHE%@!;OML}9HQA@0I7nUVTOoXzy4<%yxG*)ww?go{2#Wc(cX}?q_-wM@IQ`SpwvZ8sixv?(FvJ8BBCTuuP>BT^&X;wlUBEj3~G2DENJP~1Ihm+@tLW_ zSwCrcqPZU_3-Xm|ogMiS;3EN-_298td$au01SRi@dxt@0@-Ya28Tt{JsF4u)!zI04 zyQFt(m-J@slHRLb(o?lddZl(r57aK{ZQ3P0OS_~OX_xdE?ULT1UD6Y@OSqmt=%isq zT~4jMlKTDV?tWc&IoDNOT2>oci<^qMpDY0$b)Ely=2{%)}J z{V>PHN@iVHDErVXne`9IZhGdV{;0a&;qz->--iBY>)Xuw?U6Gmi~MEQn}_IYvRN~C zVsQ-)ClE@uV-md4cE>T#rOYJc#vD2?aM)n6^h@cad z9?S!&!OL%cZZ@Dr>MDnfnMY%MNCpb7Z#{YhT`>{uDr2zxVSHC&P`H{)%&0{4Bv}ng zAG+9l;Ur-}pZWbLbNNX!T}!mcROC+?B?~XHk6Yc=Hp+~iBoY*fPhY1Dm|vn6xI6`ZokDc1AE_!7~9>0(uxFAS7oiJ3ezI#7xw(NZiawbO7HtrFQvbfA<7%C&yfrdaG8-lXpmY_Vd11$7b52%X8vK#8A&8(&eFwHK#DM8&wmHaGGeu;R@6Jf6y+n?6Id{1sj$_)Pm1xm+ps@ljFrI{W8o%QbHcdSm_C4ajid?aL)U^TSh~DxK_N>`Z=JA>K2Xi1mxMv< zf&zjw`+3}%c)^}0K<0GrhU@b=-oxxLKWD=W=)v)kvbaIvLR}e3o_(yp%bd|)5Y#{o z`;xX$Pe~LhyGa4%n$z`TckT1Pz;p|imQ4g8lq1*4?O3st&pW%ikby}(NGG_`6XAs9 z{lsU=Gj8n40;26jy;uvGtCxx=XeLnCpDiH?X|=Rv%Jv0>BhMl4(}X@H1b~RmXk3K) z2d&{kmDm0*^gTGY=w(InSYGfD^0pNz^0v%AEP3{BiB=fGD^iUe<}1N^o#e-&v_ik3 zS6cQ{@(lk7yz?~PyM6%gA2nY4rw~PtvfFBfIG#Gr6*j@>WP@5;DL!!8Te&6ENm-d9 zXq1y|O8Zs5lXGvKbN&zHe4>-{SJQOPm#JzwBD*1K%%Cif@Mz~z3c%LD}%72Pq^VQ;2#yn{P zSl%^iIP`HOG3V%lQD@PC4h_ zeo#4Q>+tDZ|2n9At0Cb3W%(@c=Us$_KjT-ZnFA_S)I6Q5`(SEXPf%1Qffs6e z3qNKqZo@|`D#ItW_D`1Bk(Kj-^^oGcQ?jpx(` z70wP%!LsMez|K>!kH|4PVRD_FJNBvf6+Ac-D-^eF0xx0caqei5~8rPvjmG!Jx|2Sd>@gMaKh5m&6Cq0 z1xtJe78t^wl;d^6vU0n1E2gB@_#&-_k4jW{sautv9cv~%Zo(dsGw^g?P`Sw%`)y>G zP}$_qYbwt>kk_2oQl8h!_(ChbaUA_&lWuK>2R%L#9wS`l|IV^ASDlxp4JK;Zdu&an z!^*X%nnLOe$QuCTPatU&$2r7t3K&kn9?HZ?Tcp7pr-0!EOeA{z2{xL}aSm~u0)`VX z5%2LQV6>q8Aw$TxhBz*P#|eCSJG>)7An6dtDPTAO6UiTcg4Pi)2$oQ{^pICdSrW5~l?Q+Gzuc9Jm|!b5o5uMrv14a&S}V74;@&9_ z7O`p_R$(2Z_N0N*YpksSfPR ztdb5YFY|x6tyGRE!aY~IuJgL=m-1w#?!8Vz6XpHDBE5a;M8^ zNS#EvLPuyAmB{iQ0}j3F$*ecjdZ)qm4NzFm%@wuP!G&sRG3GUn!l4>v7{91E=_$ic z=wL<$9&o&P1A#J%U|n6}W$3^O0)_-_l}4+sIO%1~z)5<>f^>QrH=Oh`Sm^Zh{d9U6 zFr4%XF9!fYA3yPV4a@+ zm`*R9*hw!PR;Q=`rPE8Nb<#@*mGlb-)8BYw`{MT;WdN=$OZ!QO#L1L${V`cnO$YfY zTQT!nbd3SZ2Z*%|8bF`8SmpE_UBC-W+|q6f_2M0K9ELIHQAkRj4PIFGL!i=Zq;v~I zXOXFN3!f6rhx%CyWTN8mA+isxyoW^%tKwDP?tiA4E8Gji`&x|euv=&V4q?GiZxRbz ziZLW*jtz@VJ0ziSodT1IOo64jQ>m?_!G!q~m^zvgY{H}p8{{)WXl%lR3QV6<0hZ>~ zrJgJ>VMPTd?5Q#pmQ~oiSzyAE3QV6|fi2CsOGWaO&Qusvf$1YGz=VMnHj(P2!Gu2* zm_Ew_EX~JD^RmE%O%<3v)B;S{Sz+sv1t#38!1U=BU}>&i+BFMIm{x)5V=lmixfM1! z1WD5-ysN|o(qO{E3QX8q)tj)o!j_+fO*mPB=@T%pr8$0Sk1R07(9vI^ zJ_H}gY-B{Q$Fo#UeM;xb1Z3R(V*<<;=dLWzWS?`OKQB-%cZ;|!);4>V<*oWy=9~Nj zo4HDM&qC;pf(9dV`zTHM-`aTnV_W_l!^%uf@t+`pV8dFuk{D>Lt@=Eiv7G|~Qikw*u zD-3^LzaJ|M$a1(65gyJ>v0vZIsy<%Lq|1Vt2k47su0zm2s(QR-B`IfK^} zCi2S5Cjs+&2QIwHx2vgp$l#!@(az;jF4H@8tH%}FEEVuoxR<&k_dV4u*Jq+TaX`^8 z?f1~lWr-!ATM;R{lqu>+bR;$e-WIZSGX-`UDje>{57Fw zC#vDa`7qMl7l`gQcL~4YfqwHFljqg;`Q;_i0I!o&HQUw9$Q%W-4)_IYf(@vY`pqJ9 zya)Zi7BiTaC?6~tB+7@$$8X*=#2i1uZ+ROQNQ33S!iNUCaGh$f-+j$8hU16K(uS(5 z`;l&~mtU9GDtqVcT$jBVH+8`ZrC-)17aD{*UABpQd@IH2TP|*@ViLLNsxV^PIZjS? zXRXt5{T4)+WtH_3a!PlHx-E6l3nwI>q207RXWZCGSuU~cMMYaQ;r(`gku;&+T_278 z0M@!>v-+iggI>Dh+V0uBvMUEdi^HKZIykZeV2+a z?w!S5`ZQHsH&mm6{v?lwA}x;w?y@X6B_ZZMkqF9_JdXIG#9NBbelGD~eev$YtW0Lw+?>f z?~)CcmM!m0$p%(*>WEuKcw+aEEc)dSt{E@ z@F{r=wi8|E>Qe?7z>r`kOoRLtPwjp&kXk1{M&;@(o$1MhVVr39c6qMJ`{rh$NZ%4V zw0_^XTPkdr3{WRcEadtCOS5d{a(muvY?=%u* z)vT!6Z6})cw*fgxWnCGcwFH|p zr+=H{n*BUmXkpj({$y@p@~SlV*)D+nR@DoB>#{nO=a+ZL;smm2-y{D->KCq(S@{~W zvSux@g>^7#V^`wGwiLO4b}WW-OV`Z&LvontAalDuZ}ge*%@BklJO~zabJ{Km?IGrG%mk9Zx*><-vCvQQ7qg zGx*vPzDQePsM;siz=7NA`^Tpi_cG;Ko{uXmm5JEF8lY5=R2Edv;@?m`!dDIi2Uy|f z(PYR89mTIFJVz-SrJ-K|I@MF@Af>QE11PGxHLyiU*Sx1E<)hy}g`F+OZ2$Tm_<$)`(^HwcrR& z8r8ibezChElK7riXe!J%XY#h&i&E1{na*ydsjP8ht&1)-Te>uhj;n6x_|WC1qH7%h z@Z0!ohDrBF;TLmXZJWDbTA%8l)b4Y4@72ecC-(?(7o63{n13maAnrc6Zz9v$eK`UX zeU$+iw{b)tBi4hJ9HU^{n~WINT!#r7$XzLesS2Kuj6z23zTCn&M;i0~tTGsX*_CG+ z^GB!*a{86`HRk(O1|ETl&QlrW_ABUX#QwsLkPIH_kij1%1KBD%8JwUpXv;0=Wz3VY zgZtHat|N^3rz)f_58=^k6;hX{u$K`VuaQ=CK$@BhQrY7SWpMP&Zg13SN2H<;HwD<*MCxrPOJ3n?ic!Zv;_R{aooFg6E=dsl+)2XHq9m>cqe6ka+SziTkU>xx!D; z!mys*8jq^P z9^sFu+%c@(=PA6EGJk`cGH-o7yUh6qk$s~|oFhCDmDxZl@)pYcH=X#g4vFuOoUXK0{U2cQxG%EHuD15NAz6gmj#vwo@yhIarOdJs^920F3> z&}0G1s_}<3(018aTXlLi7xidLd3Ab`lOFqTFw=fjbMD%XZE86peZ8NE9+k_u(CWnhJ@|wUtb+PisO;~{4(V~ z047-o-@hEGfbmk`Gk&VJ;rQJ23?gx-4v9%{qm$qU5@gC5`#^9;Rx}H5hX&g3V(v6` z!Lky{lrFCk6S+ZBH1X{Sa}V_0Q>W;=*AG?>eyGr%LwRr|0>>|;*~J_kK*l>@h%W=AMpx4yB4n! z3m`911~Kfsv8sOeR%044KJ-!Oht^6{?zy*0^;q7?j}c}Kv$s z&T>eHEYU};Fy(ytNvdA5d}67}avrTnmOmm*mj1ZN|MyQ$c>nonsq1`~T}}mXRuwvi z1{osmcv%xMOGSi(trPnOaMqOljUZQOD9dD;_DMWiAEH8=e!U$cD@$8%?c+0E@*Eov z{;_87QPV&1Z1v6c9GlwA$Q2@ml6D-lzLfHd3QzWWPwq>l?F|%By}_B%=c>md`W3mi zI=j#saEV@u+?#HvpZ%>KUMi3lT}&ujvbim)-;`Y~vG);+@z=V^iNNxLnz<8JGzC_2 z1^ML*#!l8c!MRK2h%V5~F1H0F)WWPfH0tU#uIMTiRCbZz3WCdC-czz3@a&6<$twtN z?}VDkkCwWmPLC4s=K+^(;sNmJee>CZ>iasiZ~paX&Z8&Wh^EAsgO$B=!3?!`&fb5> z{<#~tobB5|`{$>iR+|4w(5Cm#pzC}`f0uf6nx>t28`;hwp68+KXqXhcXunzWFcm9f z!wSEt?AVBL+vwk*Mm^cOT$O&n$`@2&&j3YxVd1*L(hQXJ4A8=EmZ}=>lx@fylpN6h zJ5~ii7|T&R#Q}vN5csy2shJAmsK`kg_plDQbwzFve1NwA?z5`<+tc4c7uBjRv>$n| zjh@BcAxoolwclJKr3sj=LVL_lp60?ugdlHDo{cZNJ`cx#mbdASBIpfu<|QAi=bxV^}w)iW7b-oxY5GUi}B zyorh%3wt9h?q&r(u&TED%uZ%ERk}jeb28_>wA#?yM2}0-3L~9CmY_kgH|qY+`~JeSN+Hv>m)ZCA@mnt>GtX) zeWlISJ<+FYY4*74Wb754x_fy?iuY&bB_lIoHj8ujfzrh6V)Zub9&>&1J8{oC^@{IL zso0>|9Bj0CGk5RtZX`yf>r*GG_ty7fo_Ryuvr7P5G+>Jc+;_Zt6@VLfY8^&VR(TGd z-&Ok*n6qp%{3Q*usZq`GvdDFZCsRF%>GTn+ynr%s_zZ20@ zy9VGy;LEKP%U35JU%j}g>fb!CI?Zjj9@J^}OKZW^`(D`JmdYoWpOA|d$uah9rItUX zmN5ia^`$*pP+4W2Z=?1R30@5JSwN>b;0WUO&!E+x>#jIpi?}UuC%kXsmOnsRwV+O{#?r-!pe$?F;S?5k2P2BQyoIIPS z;ylC+s<2kLD6|#cYF+lJRVB~ee`#;;CMER#7z&W+|4csc!i30ed4(9-fk`e2TDKKg zCDxBU{n#y!t|1KC}tjTsPrryQz)eoA4pH6O55Hg<>1aD%&$1j7(5h?eqo3HB>zP$+1ha5~7Bv*#Dy^{J{0nwK^3sBne(U4k`t+d%1*Z3E$i^T8$L&Y*Cz$ zb>57G?{y@6ElBv@g1#QlY2NEFs5+W3h<>Clu@JV!zV&Zv8aijK6vqV~-Z*qiX*=fz zUQhWcq7nT&Bqj@BL=LYw4Qn{1t9mNl{pyB&zFf~BcZ<{ycRM)TsyoGPHZ~>)x*Ip_ z)i~VERG6TNt(S7Y*j1H#*7b1tBAL=IBmnMe3d_k?)#DW5X}^j1&RZuTW&z_T&$ex$ zNW=fCiu5*9WBVM00GU!sQLKhHPWseDHeCP;Z zh$-b`R}jOQ5UqC~Q{S-?)6p2qLF1{mzjjNcntuNCpjkFmP)5pvd|aWc<#vX3j&((c zKF{@q|DxM3=nQF@ZtoU!bo+@yaOSGQ(;DWm<9pV6vY#m9zhlm7;UNI(>BE&CXN>}Z zPfZg7nW4PzER*As1&nC$J1eo%*8WFg`hNuo<|+g-USCA0-PVaBSY>C3d$YI`-hn~{e*~AmpB}IOuH#N2K*iDC zje5KuE+;__UKx-BZoIQ*?&M*_O zryUJg{PD^l+e7dAr9XfIp*QCRwjp$x2?qI}-@;-hUB0uWxFz;6D%SfGqA1OUd{X^= zwd>q0(w+2gdeiAo6(AAvH^|(XMl{uaS3!6OWTPJkwo~784h6!TS=$c^RKj}%fvSG2 zvfeoDJ9V(9J=iP3&2Q3W65fAp($L8>K>^BVeqH2Jib+dFR$w2eb6y4%bCnUrD?94_ zXME4aLRg|}1B-L+3{p)4Ny!cI)Xh?ZR@phw02oJqzB-u08WpBoULs$S9%pM3P(S z^mY^THe>h8s^N$J6=()3EkXFJYA)}f-x7ud;W@~GH*S0?!w}gLgm=kP_H*z2S#9T6 z!X40j1!=PP%dlAZmqomEjkaoIPCy>O$*gzSkNXakY}|c-3Hc*luYSqbCO#fA@v+qQ zF)tf0xh2H!ZVRJ#mUYd5m*SM_!#~p3H#?SKtU3TL>E70YDuT~ZVZKKU0xhQY& zOyO!?=iKk2_l29~)zx{O$z8gh@O;p!?ib{iZE(`Ys!8j3Ofg_?l#z##e0AiLT;viW zkl>+$^@t>@O5ZW}7|{gjs^a~71i1=3#u~Au!u{^kxuHsqqXQ+p5IE59a$R7&G-%)j z)}TeB%|VY;U@JDV_B(&+=J4lL?kyGO&Z^=sNzBsb`#|xBW+Jl3bITu6{j%y87*=#T zCK50e;_Ut3DC8jneU_(Yl<9dGkAI+B`}_}kls6~s%~Rgow6{Ce;R#^5_LXE2d)Dl; zv26Tl`B7S45`-E0iA=&;GM52MY;5&Xd&porhPG|`M8BcS27i}Ef0uPwwvDXG0>HxK zerE4Hg!{Ar@~&;tHR+QBS)KTY=b|sg?#@5_B2U=s=SAIxvco@VQZcXznEu`A* z6V|Ct{VXZ1Zhq?`k1TAgu_#^-ZN6ECOH7m{gjor=>mQ|Q`4lpU>)@A93UEw^U$((7 z|HM5o(B)fS?Q39e3z+@S{T zvIc$42d|WDPW4UmbESI~7J@5FUo)bz9;>v5Y}wVA8yco~@bnD15IwCN~WWp*UvkMtx zcL__yXEoRxXr&5kb|HHz2Bzmm_m+*iQejS{2pdxp6VK8@AUC^4=PhO6-y06Dj zcxXY%#>lKCxwqUNA5zYqnWuOegI~xRk3@I0abH2zq>V7nJ$|z-K%_&#_z&UN=c+dKItDP@=lc+ zKYeBkZ>WK~VYKC`^_!k^=uqnAsGZ?YD$F;Wvd26yi>MB){vPJA%F1qH2Sl z_LUN+R;oMJOSGAvBVeOEruTaSg4Vc##*cE?R2OLi*AQsG#gVmQ)gQqxky*_yW1dWi z%HZR?UBWO{*+VMz(1+y{uWBgSXg^M>+F8vt#2a^uEE)Jb7=1U z`~@F0&AOY}LEes0X(-|AkuPROy!d?d3NfiLj1t@E`t%fgUNfPE)&Bw|lc zgm@oU=b&`me`fVtd&S9gRjX|G8&YEL9`zYpVCCtep9X%T$otGaEH8>Nlwp;vP!K~C z^3jD$=sJFa5W5j~aur*lEdEpTk(Q@1i69uGa3UC!kIXtfJ2Uc3zd<$dA_<&*Hb+R0 zE7z$$-rd4wG6~LkSR8Z~YtAC&%EKjK=BVz;ReYgt&y6rqT;9sK>`VLceQqk+rilb9 zGV4oRzsE(*1_z-f7cW~i3AJEW6Vlb0bY916ca`GAz1IpRr6f7kgY-%rG$Fw%eYN^H zl#6_mi?|GiT$`2xF3iZYN)b+AoD*GKDwH1m>n#i(6 zsul#^ULwzB5hT3f3L%B;Gfk(N#78a8Y2?dwvSIX3oz3&(`U%P8K#^oNO$9|a2^LkTQR!q8Rge(59(W42LXvrOvgdU& zQJ~hzx~G%v$t3%oPIi|hlNC9+-L8`@%p`mJIj2e%s36I0qE0qelF89J$wuj9gC%oC z#lB~NVv%Ghr@gORwN@kwyObch}OEXYyyi=I-BC*Ba4NY8Y z5vk?QaW_laNt@x~PF`#1=4eCsr@{E&C3va)h}i08!6)NEL_+vHtv_}8)2u(6^hX8} zK=$ZQ9u0%9AD>_%QY6j9pSJ%Mv?9U*!EO<0_3#w@(zN)cIkENzBw^BSgh^W&F=e>f zib$gnCJlk@U`fRLH#$se*@%@&A}b=*37k|RdS8SoDKl54azZzY;{B98Qlg-H3q=+p zRFUmF_UQ5!E5eN8NV(8c92u)W6ZL1R{?zEt0{vN}KTG&f-UdGMha%!Zg^Qj*H-(Pe zL+OyhYdXH&ovwFPAw46T1bfejtv^sHKGBJgD%PJO{TZe|K|atio=-a+*%can4tWZ6 zcn+mQDqPcXvqML*ZiM2xsnMSW`m;!X=p+)?pg%48vy~5YwDM`EBfAl!!!;e= zL+Ox4)^vQra#Zu7gh|n*ttqTFae`fH3j=6l==~yU%-6D!{q6t5zC$$JGuU#X3!KWD!x6d5Qis=ueCOY}KDu{gDkbkOjh*iAW)zb~>_|H9Ahy z(b^^$S7hHcq5QVyVB0!*K(_jmk_NM}DVi?`&j>DT^7jK* zd}zrvGER5Q=4X;keCPx?PjWjBdW`5HQMvn|)zHk0mf z+5UNl&i0vwI@_SmHntW7mGKu__Q|gAwBOz@smpfW*WZ=ug?$aO8t4GZl50g9OeMsh zr?Dx2(0t$S1(1Z_@jI?an`?}hC{m~~vgeG@auHnmTHPFsGkQ+{OK@R@Rk=1xL!nA; zU)$Xj!Zy1r*x=lAD~SmHFXjWxbg~=Kd9;6PK_U{nrC*2 zVs*rIm-aX;ccVsQHu{=8Jz(vTP5!}(To_9_Uvdf5cj$lPFj0i2(tcK%$?^SNyJ|$m zV@v2t-%4>*=9WD)n@Tg=R){9P{kE>R~S5ku@_1x1A9(gxVSSCv$Mw=?o#B zeAU81Th~65I9he-@6c@<3@T~q$u*od|3rZ{*~Jdhv-lbX-Yzu1&*gS`#IN1l9HI|Sy+;ir5`*}%U86_u_BI11vfuabQ z699dJQl8m#fbpX2HLhT?A8lpOX{Qj~8hUi8L*X!T6uQo*=rUp*2g`_m!k1KqnX5*z zd?#!aVPFkwtbaQgtG))b6+}|>Ex(m5?QlCs5DDh=&N(DM%iI@kd{!=ZP4 zO3`+52T-lcVWaRMdf9DvQ+aX^QMG|hSI9o| zZq>E*HvwX3eE#13Z5LTHPs+33*ZKdn1H7()m;)Tm0M~2aiw^@l-T}TM13X6qpL-bK zQxvUb56zQH&YH=R$C9w4{8R4_YswyKq+elJgV~1eGv`*>OWYwn2JMvZzo0;AgLGdf z^jrAvMOu3ZvRU>VSm~R=tgo zWgq;>$Jt^y8;(tqW6y}Q8L890r}anmoA&Jo*$o4Q#y&!4#}MoU6lV${t9TY`&YFIK z_BreQsoFPDf5z%hx&931L+Kj$$RF9YNQkPhH^5GSEa-K>QdaYNQ7emeO5iNrorQcq zXQit@&XV8R0Biz@6j^Y!FY>{zR`@ErYjt)LWxb*TE^@Lfj>wvv(m5-1XT8oEN)=gu z7U)ln{!G;$g{yrnPj+e{udsgub^>I1uCx2#^K|KC=?$^YLfl!FJB##TI<826`sq)e z{wQ4SOLnj?Btm1a(b>t$TnGHZ$xg4ZDV?+4c2?icTHINgJL~i%l22w0uW+@m%*jqI z%T?)m>gSyIo{z8U&+lm0Ms2uM(WhUrfcpRC1qllP1j%xiid zuk-=YQlw1T@|sxNjM81+&cL}tgHfD$h4|7Uc@?E;90gY<-JLb2V4O%*$R^CJnw94X}(l6PNTmX>~}Y5_JVkx651mii`}=3-Q=P zLGR~z(0L>9@hmGQ9)uc1h?hdmMHWVRMXM#y5<1s@4T~A9E6U~eeU-b3N5?`(aIsyU ztbd6p30^2#TV#4Y;a2!{`w_xZV;D0#skyqZ8khwz9i&&^f{NjIoBcD|CL7Pu7sWl8 z1#ZYgP9pd&OvjtKlEz;#iTj}WqE}GqZj8*V?d=K=_E~++cXt2N2=1so;3{{yrgaU* zJ+&a|jg4`wJ;s`>>c=RGx+pYUu{q=mP71tUnd?0#%(^Htvj#k;Bf@@l_xnb01BbK< zO-0;OqtN8*Dg{gDb}Svu0Yu6^AImBtd^$Dx#auPH6phVH@Y*^96a08757W>UcZ+F; zKuf~=7m^88@}ygAfGo1E;pZ^xDQyNbXuigQm^vdpAV-lI%{Hl?!?M9HW9|)Pu*-Y< zGQ|eM6ZYw}lfSgpm{)<1eQV_uTQjA%3e|uMBO{7j;qDhkW)|hSjOdBL1kDL87smS+ zF^96SB7kCiRAugA?O0{mE-z7B7+A=E^}wkPH;=oix}eO=b1mUW!}Dy)^VES0|gCrLfv zQ}nRjucSndZuJVq|>+5vMr zP4)!%SQGXk(q8nN{cQ-FK5WGYk4Q! zqW4>LHTIA%S0cZ+Vsg=i{2%;1_mkrj26c0Xhj6O#lQEDP>R~_iF_aAVj>C&qX{7AO zPWXHsK1#wpq${#=%bLNoQhqS0!Wmy1HdXBUj~H6o>^W2~yTmB1W?v;qWrO(20=!D& z)P8_?D<;t_5a)@KV#zuTWTxAb*A6FbY>M`g1a5hZ|$A9e&SOGvZiRc%%J3h4RWvET;F7I*xG^`qWZ;4&hIihtK9M zBmXnfT;WTe5fZ`^pONV%{L5#!D(VW)v>ya;xc7R}8h4BN&}640R3i+6tftzngt(&( zw=Jhxda004B}8Ei{guG)(I#xF{a6QrKeUKITLo^@f#eptm%x9hKp~an5zC&hxoh>@eo?siHEz_zUu7&)wKhZ#CPft-~EvI&K=@=926ho{i50H zI)D`X+p6dVk`7g|u47g7J}8s5>pE7&k%z>0tcrez#CNQOqYsJiSPA_PiSJkm$EM?> zAJ9dTiaiF_z<})~kM5VwL$kA4hA|W?#QsH?Q}Rqa??a_o!HHK)kcs!Icvb$x#&=fn zs{DtI?;<>#%?gKw>ZY)$S~zTczKU11aM*Z*_;yxMAesJx`suVhNBs8`qr`H|y*_}dS( zl;W45vH}asF5$Gym_LLutt>~D?ek2W@wqNE{UUpFjk{!V%|Y4zd_I#rzX`fq+O~2^ zJDyRAG3_ap|4kW6e(t!C4_$cyo7(t`5*Li$FA;XzW+tn+gz#R>%wJkD2}Ni+bCS7! z!`CSAKZ~smUvaCsYQq-+_ndO_D1O)HUg5{#&-MQ5Z>28I{7X4wu56C2tIjD|ms@r% zfoA@t64hLqFe($V1|m?@4iE$x8%Lv)b1jATS@Q%T=jgI4jIEoI6Y7orpQ*gQgvw2- z69CB%@JfN>BHezfz=-z5WSoMR;AE?W4Rn>YN%hS;ouD!o2Z%;=B$Zg^R?gAl6oXYp z>@Dso^FrpLiuelI4=$Bi&F%_SP&im9yq>Coh$WztzvN>i5d3=TxJKcZ=84IkhxPE& z!7}uOT-7J}BFkekd-FK8a`qM{O5FK9(W$Iq<6uPhAsJSPruRTZYAx5ZeOow(<>0>e z7+_XK_H+rF_fMrYcx#GmR?_-y_I0i3{+E1(nNePww2ytC#>-zFC~`#_i_iqZf_PqF z?!PXG&-@CWJnhj@vOXC4P`tluB~09AA4h7ITBmDVM<`#oaOFqPXM44;*UHbtw;O9? z!rdo9XV7|4$Y8Sl@srSBC(|;^sivB(;%KV*R6gja4yIgpGB1mLv)FAo;-mi<*>kjU z=RL&7N4HQS(BHge$1`tr2% ztojqu&LQ=K($1mvC#Ice*I%1Tv$v~yTJcB(Y8()uFpG@Bx?NUuB}@M+ZN&A8DL!(f#xnvK|zq$T)L6?|SgG@nos zo+k-wpC(s8dfwe1tT$2xL92cdVUj*7ty>v?UiJ_AxwGUNa!+_uql8%Kcq#CBWKR#{ zuH!*jpTp|Pc&yR5GXkCU(L(KuaNkiFcRFbl(p{kN!`*hTO>l8(lM#Cic-nB*e7RpB zf605Kq`Bm7#N>XFZo=4doHetaAnbi(3kv;z)4=e z-YSQ9yX~WRr^SaVt z98q8p$Gi?i=rNmDe$bQbzxt_?^$UwXKZoVR&s(8rAvF!odu$wLy1t+g2*> z(#K%_85dJ8&jHX>ez80Gq=NLGJTHA^!@m0+`mVQRB&`rBOZsR)BYLyyLuH@hQ%!R< zepOx50j6ofa$Rx-v34r~5DKS!ZgM|%sL;Psno1dwGh%YjKKTt?;O3nLH5M{H$;c>w zNwK5SKJg@XGb#zNUm#l3UO(wAS!LJQ90L#w&9$$nbx+Isrf%h&Y)6;sqVkU|8c zTmvcg=QH=WC7%FM$-4OH_ab{rjl0AQCbQ7}!snAbcdA(^)3aYrsh+K#EV{2T-rbBe z9-ll(rSNv+$fRZlcc){M8I_vK$GVdf)Ew*G{wIm~F)@`Y=Ev^jC>`^zin)ZCGgZtb z?qspVSoLb#&EB&ntn%o^ka1YfkHPUK5uPcpN4TSsSsi2fQTlK z+pTAlIlIwWOS*_B55b$JH7gG>%u-q_LsIzHK&7Rh7eL8G0`=R5NfT#!ti2F?@zGo= z%3sK17a20nl5BFl*P!5qT}voS9;Y)FH0g}9P>v$Fv{nf!W2=QWtKN}?8qtOLAwa~J z+GbNS4`+rAmL%KR;C|HoJ&|>%CJRZ!=&yk6c|a&5)-v1V5>tPjROnuQGFX0gD3;Tc z?`J~<4}~}*De{U8jvr}=$R4*^z(qEkn-tE;(9ucg;KrN??5gWe!I7GgNu0Dh7Q-7^ zcXjHTO!TXVMqiUE%S10eGC);}Sg_!K;5h3X1s9t{p;!5u3hjvn8Wfa3`T_J8?BY z*Fc~+Mo(406V>ln^;@of2dm#g^;;mnohlM@(nl%2+Bao#VRTv%C_-B8tt(W4mpCi`vMu}bN7bF|EsYO!kWFoP@mLD$CSuIuJTv)A{IS4r*w;k*&{-Rg> zMebx5pjQf~+4pL=UOH9O!DdhthU>R~j}UYc)5xBI#{9Q2Z$dZT@QBQ$BWl|k@Vo$k z>CS5NB?4sCD`C4cn6)=Wau%uth~Xxl&!KPgMvna6Ab?wKFpw*Jk=9kC>LxGX+-~n@ z``H8J1`Pj!w$OR3q8<4OJhpL3<0T>ZhH1nL5;7m%W z`PVgj8V71#NtR1#s&A~E)OuljguY#!TlT@V9P3+ZHRg+7+_rQe35!>8JANd{d!rj7 z)$yV*y4?&r`OQ7`G(DU&Fv^E69KYNhENz_D9a&mMu$cb; zPSx!!$bY_JzVCUT=i{MsYd=+|s!p9cb?VfN=CIp&{_3VUEcLePt_Xacqh_eFFvEM) z`E7=K#qFIT&bHt&V3XGR5mYJ${bjox;@=1nZz^PPoCoYDQAkN_O;WIMC^(Ev^*M@4AJy0F4&r!k|RsJIkp!`yP z(ds)qhphbye~MNQJ{1UjcsdZ+g`WYBh0n+De>ww!di;*y=fn^8UHbeU0-=8izXtri z!tdhvf8`I?%ewKRGXGVc|1aax0ry_~s(Qg+12>)D&i8$UuIV{Hx|IEvyd3R;-9lQ6 zP1aqQ%iu=6Wd_avY8M^hI|`wFf`j}o?8+(aZlE}$DQqHk`fb`qlxb)-#MO)oFl0sZU1UQ|Q;A#CBwo{RNqK816^F{VAPBk~IHL%j zfnUOYF4+U|PB1*u53~X4sT#Sc2DHwNA=<822tQ3wYc`_9W^FxMz;&EI2tf$I!n~07 zI){8lvmlacvK&<<@HT|&R)sgvv=xeX7vqPk&CK_Opw8T$FyX70KG3HrTptLepv{>H zeIPiX52WJA9~u)v5k?WE`j(15GaO$_dN=wn*Tu*uKf?by)~Skg};x6lXfRUK$+6? z!lzg?*C@~>g3K|`8~BAbLnOPhCz<)E9M z(|qdD$8?`euqp?DHJd`Zf>|lpd*eDR>|&ET0oefduEgDT*Fo(lcx7(xHvA1(XL4`g z;xOk>HGJ0^h@&j6u%W{p2dk!TgTvs;#mUo@@Xc^LVc+K9l<@U%x>D5ew|P2bc#As@ z`bYIX9HfTfpb#5S+PEI~-HKt|6#iQz1?H!ozLi95WSD;TZtYK~62GKVGXjbDC7qfm zxUh=$ACKj*%n94gL&i4awM+%hrb5g<#5bNyC~MVfI)v+uioC;V5#fSk9ZT#MI|*&P88iUC1>Q(vTNQy+o#awBUrLy}uzlLHg?=+B%-muBOI% z2gOn?NdAntpax)#p45$`XiH6AkgL=n8R|v5wR@3J%nz*<8*y5(Zo)cta2zu5=iQHE zgrS5xc?pxWuaO=m^&9c`qWe)j^tJjV-y18LQE3>Uld zUJF_bq_y&f^Ktlvws#w~aKd8L<^#xtcM2W96T_-?vj-71PX69kBdRUgs|Hl0{^FOCX{M3(01ru zjx&M-;CPp6@{nw%H)Wj7-DK4Eq1!1Q%0WQSXhfkiVB#(?(;GidPZiPZp|VgoN`Hn> z3#M($&{15h_XiY!4LMir*ph-I80odW!$|UhFsBHEd~Ym(Y#E)+L+=)$TZW)8yYgy1 z%C>WxXp_>ZSH$9!$;&&ZJi7NdFuZ zqkVv68)+mV`s$u&*JK!RtKLRap%<+|HTT1cGk7{3OB)eSIgickDY!}7*??);m*1!N zVVnb1!<6vJ)PjLl)n=UUdk?^AX98+_QF?m%VgZE7z3IJp4jDI|?cR5c04&Z1g4f=) z2}lm(56*E|5MfTjZ6t9u+|m9k;ERDz$T$(^3)srd`1)jkYLOB_kpbe*QfflV;v1x)<12>8y`_5#gKITT$+EluLTu z-U*SsKSXm4(&H8l%mzJ@X{+7brk5kdYnFQ;1s@!&Jq#g7WU$Bk8C?(_eV{2>SM z1A|5bHslXIcLMs3Cz9au*UH5JQY(deq&AFa{_b5FXbHZi-HKL<;n;Wlf>%bmUiy>R zzbNMgX68N1w}ZgU_lYz)+Hk@AsSgP;nLx~A$Y-a$CLWdQ**~Bvc>iV;c+x6eMeDRP zOuQNky{CydE7_coK!=K2C~65Et-rzR9EtF^c=#~Q4+zOe5%UrPq^Gy~VbP`g+0tLk zr}@4?NZ$j0zVG8c{+{t(ebP#EO94xY?f>SN1?32_iwRC^;O~(W2jVLuD!<0xn^Kp3y|B-bSVOA}N{!rO6mqZVn2G_*!aKUfl-B zQq41Lad4h7nneaDcz$K`UeVSA~aIt z`)jlE`t$HQun_WMmFG&qjyY`HjX##OYn z$f)P%R)xN!=`ancRL`3fmE56v*THeCm)a58z+vKCtsM%BRN!QODY$-B^um7)Mw>pV=x_{|Tdjv0D&KOX}kwB0YG5k^ua^Pw6mi8%PR3RHZuqYV9?6F-n6Yad_|cl47)n1uOF{mLa_+MZ6}^O{kcT3h9GJZ~r$m zUZnr$`e@it5C*TJ3g9W1M)G`)(IjZU7$!7E?gaw%F(TEF{Q!XU$I|)kW*F!IQ=mXY6m?{Bnz@A>Sq9S-k#RbbjF4(PG z3FDUc?ZyT%6t*p~A0I!D?+OOpsPp(3U-YV+co{EG&evWc;be;SVga(T>8 zkjGe+Pe|Uj=q+H``2Q2qgOlZE(5#Z7l0XcCX2 z8Yu20PA=aWgHLd6>fZ7BNRg)Z_zSMDL4Dx0fQw}tBzSseH`TVPbyO(YKwJ?BYXV%_ zmxOMG7Ay1e+S9 z$LC?-ll>{8^|%FV*ltVwh&CH~y>3Km;KMTk(LTDYFA%1N2h828nd>I3v(?)O&Ak>f z&`>q})1Fk$BUCM@vX-QSR(L#7gx23`O!3uWw&k;AH34nxXvSgW9^f#NIcUXX;>3bYG}#FmWUSZs%cU@fSmE_$8%2F(_J#~91?)ZYkm zdZQ>56Ji@$0Hy=ouQ5K)Er**e2Sd`RbI)i7bQ^eGb>(4!)HmLv;Sqj^4r_{~-8Ibp zqk;DqRYkuuswE&@_xR=bL~Y$C3pme1@)KisZ6OtdMq(wwh6BXTIY1kQzVnA`gYf~m zxa|fKdbnQRf=W@X=q~gCq_=xBj8^ZAD62Ow!tTwBwR`Wv^At0p`L(Z%2y1gj3^JgE z2{%#+kX*q&uAHYmPQ?PZsD_dr9CaF=zI1OZ;B2IJ|GTJupYxWBZ-!7zhchV6$-C1rRssAb?~#o!d;xKA7Wl6`dY_JBM2t+Eq(1D!qfAMc>d$g4Lg2 z_D?>I`x*{<+a4{=VW(hiR(HVps~%+-oroCxkL`4rPXg zf(LyEsOwe4^BUO(0FXORe;z;)J!_R!=Vq$h*`zMfc3sY9GF zw$l)Sn-4DB5ShPKpY_yS(SLb4b*(T-rR6-rtG9(bwDwH_6g;wlGtff{#e~*XA;%W_ z!(~g_v6_DKRM`1gO-6vr%emGR;LGDlPp13dsfg@J3Z)1as*w6 z@dAh_rRt8LD`9rf)r!}#MQqufL08=TpsVGcpsV=5g07hRg0A{s2VDyv2)c~F3A#2c z4Y~?Sg02Wi1O>Epr9s!+@}MhZWze;@GU&>AIOyucaw77+yejCjJ`!|wJQ{R8|9H@q z_GHkdK~O33u6{1)n)G7O)&7T|t9DJ$mGq~e>+mZRpPT+d|noxb>dSmKCR-@E`h!6-g);*%skY2uS3J_X`a zEIw7@vs!#!7N2$EQ!hTP;?piZ9pV%6rhq3tapIFCK562UBR&PV)zJ{{r{@|J)nK5^ocBtB{4lOsL_;!`X>RpPT+d|noxb>dSmKCR-@E5^G2u31v}+Fw_lBWxFBk3t5IXGv;f?^Q)9x1TbyvZC zhj7mYxzjR*J0uS7$-=$%dbn>9?i>(3?Rw$v90m6X;ePpMxCaWibu8Rn1-vaCAb#2@ z;eLKR+}{Xy8VI0vM7TAOKy8n3ubvEdqi|0G8PwJbcl$KB-w^KFbh!U0+({sY+LOY4 zI1BFI33t_WxXXn*!2$OY;cf*{)c#Aj%kF?XU%2By7`5rb-2&36-7eh4cfvhhxMM&b zwVQ;y{vNom67Gfn1@~a#HiAfM{e*kNui-v@5645n18|=Z?ug&O{e^I^1F_Wh3-{a- zxSNDK1O!w2K)Ba}WNLpE?woSC|0LX17xo?3};Kfem@ zBH>PZ1nxV9TYD7lY~fxFBC4ee_oOG`zD>B>K}fZmg}WA{RJ&HVlU{^-sBj+!Io0|L zchwrW&)v=2p71BQzZ33O5LN9<;Vyd(?nC5;VUDhcy8`Y__23smD&oO}!Jd%nZh?2Y zn%bdNc_6!lnX*DRrLdWrRvfdcnx@m!cCJ{`xtJW zFM<7}*J%Q`X;oB+H$2jW{krM-m|yp!C!w3G$U*-&J4@5pJG0e0XN|Y?bzF8h*I!C+ za-SV2r8jiHkF0dM+a<5n=nhm$*)87OIbJ!5l4LZB_j8aR-jZv)SvcPsUOK?t{JL`1 zKiHd9=WgDCcTze>Na=gMa}hf3<&ZLB&Y$eF10fIg{uCpx@PGiTXl}2o;${ zRa_Jf^fs;n*aNMmxkAiMH{dv|rxF6%A_QC!xD+-WBn2TWAlfodIJDEuMJJ0B#~) z57_BNZ*AVxSZj6jS}^4zLle(X6T1!}#02OGaN#jzVl|SbP%= z%#|Co_tP)%`#D&25grR8Rc%@=4MHF`yvZB`Yh@5mX&sdURT}@cV;fJs-D?XF>_eFQ z-Jq3JU%=u0L8QPMHQ|Zjv`YhqF`{Q5#PasdT9oe%w@aj5vm1DW4CIL}oI2}m<0GZZowG9hmB*2KrX0ceURM)%UnX!AZAPxI62eYPH0 zv%=8wll4~99_h)3xQ1HC0a)_|6aQWuvNT)PQgt!Wn=S8>tJwm+fIjQQXPfxc(?`hn zAVakSH?Z_ch+HBQB3%>wQ-ksyNP=lh2edt}@;x~p;~YPCRFSP(WHRwg&Vh2(v=FK0 z_h=s9eIOI?wjdfZgMPpj37RS?4n0lKpGwphJB}1Acmv=gK50ah6Zy#jtEi~87QVm74FCAqCfwDqSc!)OhmUm zjC}6%5C-nVrXS;4R=yxK`!Q{O?;~gvQ9b{`O#lg{+f87(Li|me!st`CiS)hv8#Yl3 z{ePF$8a_gCwl6DUu-eoQ<7pxBrfjFFp?&=jQOz12R!0@mGN6KOQy=9aw!%M%A+DG| z?WDoB3xmy@W3ZuMD#fbW4^ub>BXYie_pzjDjD7AdtTBgdsxuzeL6&1HoYGVqJ(w&I zRG+Ov;jZm+pwZ7@xtTw9gc1R1AZ(pW9;~+L!1D&_ajergVL05-J^-f0RWA`IvK9gh z2RHWsUgK_j-5u!P15}Bw?SbRW1H}kk0VT05DKowKt=@_??j}9`5AJiQlV3T~y zteFOHd8?U}I2vEa>t>?B01|u>d8$v5uD9gCR@4*~4t4$3-8rptvGw`n9bDc()tbri z@r!CTd`V!O08;@lnQN+>Ugr(vkbZCzq%)Dg*sOS9>kj;)8`El22KF??^(O#@OoT%Y zGs6PAS(*Q)U3qIR@FIDBh2Fyz+HI)&H0kk~@HJZqm5|WZ!(s?6M>D)pV;~DjnCUf- z88g#sACn{~#X~so2HkxHba%<0Nv-V_ce?>rxW>f8xv>jnT-QS0IEUeDyYd^l^#Hjp zkwm|}?|SA&SEWo$~IDs z8&K@(Z&uInMvt?)8&hU@?NcYAqOkh`R~ptPp3OUIlIU@RY_B;fBHQasf>3jUZ!oQg5D@y%xYZ7B z+vLE1lY-~L(8@8go0fu|=wjS|pmteSOEtKzKu_37HJ|eE+u>@1D_~itH^#T%JfF|~ zCC@XcwmSb^_xVccaWK+2K>!LROgla8m=PhQSy8A$FsfLOEgqi+|!Fn%PXrac|%83!IlZic2SH2@v!8HIpm z?v>r>Ue9$rL4S((4Tl>ibgBdP%a=yU_+yq~zN6AoRU|F!D3VG}!&mZ6Op#R33C9`o zeG6YDpEgBiX<2G@s0t$|i^Cuo~Jf_GZEj?KzExqQ&@p$3WEOq%QOTSD`%{Q7`i8tep~$f}=+)BWP|@o|$kOvjQ`AKXJE&&e3AR!JO;qDE zeZr~gMbwC;r~8DTpztp!e8Qn*w8J8G5%{Cul8eeYT8|W6T}9H-v*f@F5l4Td;FIvR z9mgO4*J$*sM1oM``&LujXB5{?abF=0VbW3$Z#?2!i=?(@iUN8nMJQr9&Jc_H$8Aj% z3oKWPP{a}qM7j62Ag1IP`uBe7ZR+Ty7zv1IrHC)7fA8-gCq@J?gGw(Aug5)Rgm-mP z$O&?3__MT)T!)c%=?-!2xzd3##XEPW-aW&gp{&xCcz=Q$*NW+RVeHrTZv^XKg~ZYi9HEx~Ti9mnO6Q0|~-M>J6rGar6iL>1rj{exwK1j-IEG77E!z z{d@s`+Nj6<-y*Y)@sf@(B=EOW0*w+hQUbJA??%iho}iwJ`5ayLJ*w~bBi@3(rbx-J zkq;<6x(#t{#}Lv^`NcR9Nhlz^Y8>yMqwQ2yJ>dL$8!{m`LZn}Rjm*Dpr@M=<2;%0h zH{#@m(>KY3JBI<^0_;>dDa$MoJGI;Kwc?!xXgM`k(LS7bQs3|&z)tAr&p|ODb`$wH zLjC+UafBL2T5w7;&X2F|pxrMXxoOkdCtko(EVQxoTR7eN)9Of^7)do`W(2ESQUopG zZQ8xq&Cn(?1=4_6gcYscNV^5A>9ABY97(In0%M{6L770R`7I=EtjOc~80Fmhy131B zr3e$xPvZLD)d=?wr~N-&PCEZ0ha%Oir?S0eWU_966(Wp5MXPc3)is(}tU$fA9*XCu zaHp^G1QrVC37kfb@Im6#M<2l5mEd|X`EJ-s&ivp492;g@nXLytvA-}muf7S#;6i(ocz^if_o$J zLrIASfU(Vl-BI;`DH%{teN;9aw)*n5SL;(y<;4irt7_vh?S@4b8nIZm=TX$v_w&&Kxa%E&tGv{LIzffG9v_>UiG4|0jJz53$88nD4~>^1 zX$joL`$90AmV5-)4g@XVX;o8O)H!8p=?XTdn3X!&oP}&o0h=?I&B2vN;j#3Rb$9l`deV^H}LDR%&OZW>%WYN>f`cC`BIyns95i3ILrSfO{n*0)ZTfRyFJ}6rRG8Ql*kD8)(b!e;+)jz_W*Q zjd(H=iiXG|)htAZRZpUVB+oo@mxT!rZCOyHk@|vqWa*$SYlv8XkGJZ+2S!Gk!L-hb zh)|soQ7k$F39x1^Il`O~prW+YaP%SZz4$o~gDxVz?Ngu;d_`}x9!1(VylLbA7@Hv@ z*}+Q#5BLfKju32g_*N;W-rXtbPZfD5>}H&^rGFZ?t0gg0~avzlSok@d|+Uf{{X~dkp{~nox}RO919lM7^w@tb4Ng0jpF(S z$LCh8Qr{CNx4b!s(Y2^Bs$0{q2cuV@rWmWsXW~_4JYet=RR?W=x>xrIeA?Nk!O*~& zkP5MFuund=@e)!{Lf`g@^8Wsd^31<1@8klKA5#ynLTS9>Hq{biM-ST6M>hD|rJ=@D!oD|fQ;#jJb*E1$>8XR&fSD>t+9R92qC%Ez$s zcvc?E%A;9%6e|ylY{E4TP6MB8Cur$qYRL+gUd+-Lvh)I$K9{BEuyiX+Ph;tmSb7pm zPhjbBEIo#$8(De;>&Hr*tYk4OS-?u>v65M=#Li00tR$6{q_C1PtR$Y5#IllTRuaWZ z!Xo!V(OEz{{J+yS+#m*hf3o#|r)_Hmw3h#!w!O)rJzP)Fa>~@=6)dNiKpTP3t zSbhx4H?sT)HbRcvYF3L@m{}137Xfe)02cvp5daqfa1j6(0dNrj7Xfe)02cvp5daqf za1j81@G=1|En}tNGZwPa0#-VgmFBQgD=ST7rIT1`5-Uw$rE#n@hLsvwX#|@nNA6X# zR&ENd3ava>8R%SvTgDJ*LY%Zg`Nu`DZ^Wks>9FqqYi>;PGNo}lHH zvD{*oyO8A;u-v&UH;3g~S#BE3oy2mJSZ)H#jbphnEZ4|#vFa|VXG2sOBf-h!#Y|qn zZatf2jFgc#du}qF;aukyZp{of}b{WeqX4wl_b^*(t%d&G=wv}b4 zvFu4KJBei{u%qTf>2g?kLYz0EAE*GI}2mrQTK0-^%E(@D%a3qw-Gl9)aU^5fg z%mg+wfz3={GZWa%1U55)%}ii36WGiIHZy_EOkgt;*vterONuWGm23pscKEVT2{3YG z3!!rQ!pj|)?f=QZEGf7wJkqFCD^{=yC#zV@Di*Mcd8}d%Zp=qF)Yu>@*>zUAg)u*Siv%!EMqatSimyov5Z+P!_G3yEF+a=q_B)JEF+#} z#IlTNmJ!7=!Xo$Z(KhL_&;}9Ae?|xIOu8(*VYuNb*F~7Ni!f~$VcIUjv|WU0y9m>E z5vJ`TOxs16wu>-r7h&2i!n9q4X}bv1b`hrSBEnjlY9i`tzdahmbaMYEns=`Sl%p_XJ>h4mY2%%Qdr&?mKV?RVp(1^ z%Zp-pVGgy#D64mu$?Wc8{1)O@fZtsFa`3a_mxkXY{F3lXz%LHJ82pU*Mab-0YTRKw z@w`F?;l*z;ehcuMhuf5ifxtIPp&&X2F9`_Ft6qU{zt|XZ$Pf>h2 z1kU9X{`NS;0m$$V%0Pdd-{X(}JLLKZxr7YPLSp76B#SNn2hTQkA*6%w797W)d+Cpp zME3r#k!?3+BcZ2c=FL8ah~ncs+l|*<#l@{lP9W@JkSCFMySqc;H~3*WmOzpWIGFdJ z&kK-85e8`lK(^tJ|1)IUMIgg^Kz>Tuj&hLK+&&B-0c}72Kn8?tpWu)G0J1d_G*X+; zp|v8Sct6iJeASga+mg=_R&Wu>BSDa)QlPhTU$4BIh6<275Oy#9aqh(*|4w9UAdsYj zpo46oY>|BiN+U(S20h&1OR#ik^EgcjHqrH5P|4<>;lF=0OKD7<9opP zP9GbCx?w;@PlHifK6Z>qe;n!QLOiD!Ano0mCQ>FE2{iTqqzynm(?_0>(qoQ*Dj_|_owWR#*RJ506@o{k{{-m|NI5$R zu|v8m1%Vk2IBEItRg@l;f@rNTkRwvgR>JPk?n*(3sb~5x0R(bA3^M@P3m`kCoE-#Y zST_(7zG8@Bgr$r0^+;b&>2bW{Zy+HO%8%|YAJH^Eq~+n)>y_G#O7#Ik2S!UEe&UdZ zUjkC+2;TflLK<-iNQWss%G~u!NYWAy?OJtUS6l*^|5@HQmjo7b31AQL$}REIR{WCi zNFt!ayYdq7X8eoBU3Cd~qjh*B*0>}*lCJ3RuD%4k^TYq|$c()NyrVq*5-*8}E(wn$ zRXV(DE&=Z^{{r5%7s11BuoFSx_tpFrv=PmB{+oMIHkjovX88+P{ydgHi{;x{zM18x zviua5KZfPUv;0_=AI>pL3twu}^Qfd&gT5Vt04|A-KXHJ$$m zB@M$KVgA_^h(1*hC8I+y?trw^I++B|uaZpNs=h?Bb~?YHOW^p|eSgiWWwt(pIsrPaz2&N@_mE_NyRG`?Du8#jA{uo#201F^pp}3OvA=x^7ZVJ5ocoN#oI^Cq z;R(=RC=Df8tIzEQIOu(n-OC0J+I>Dv@;FgRy3bx)Oot5K30Is9<-+4{(ah&>rPGpT zNbw1a5SRDHpTM{E{(344cgsW~_lo}Ucq8)s zdX?(}7Ol=uXWi7{J~wT{G!CKFvtO37KZd%~O+UFi2S|>so_YjqPu`K?PQ8h0*l;W~ zvLOrcozM##06<#---0Ars{N)5vimHB?E-Lw@yoh2p1c!6{HVZ4RKVum1|6*n+X$-< z>-{V0_@RRjk~_zD4^Ny}+NzrfQFc@3CR7k7JeyEn@GQvdNqPgik~CoW`A&EREmVER zD|*?A6?u7!l(P>9UwF~LOR7{@vOYyrgl9h-J<;CZ8Yo4)Nbv>5;@#EyI2`Nr!;{Bp zu5~zcu6-2w(WFVhDJB*wk3N4T`9c79V7##&V#P3>ZbU53$1>EXCkWjwngG}y#)S!^u00oqHwyT{>@#4xTY|>=||UFDCY?~9W4;t zF@Vdb(NjCSXx3oOU5>S2>7WBOv@ZPOdN`g7?1!$X@iW2Ob(z z7Xmh3JDVebsW4a?&{jXlRfmJelXUD}2BR#px`hvX;MHx`+McDm`yJx$K1>pUo&@nJ>_@myF0`waY3Mhp<}R?J7G*ov)leKQ%IpoY z*K)xuy;*O7@^R_Vjd_5Kw>OqW5ZV_IS;nh=c#kj4wFt+QS_yzTysr_~Wpx#O6br6+ zWJOqUl?UU_CYkqI)hi)-FxtG2&*D{d;GI40be|31LWECp{J_m-zQPTMddRv&bNH-> zWJEy`$ONxNGfpvvS|l&iQZ|B@f*p5f;-8c%BdXinZzx_qlMfBX;bR{^rOR6P89< zSwnNjn_*BaHK;Jn9Jwhg4)=&w#lcPgJVz^TwJ1Lot+sjR#bY6(GQ)9S5M@rWyz9C` z4(zrlukk5}a%{?Hud1gZjAmF|EI}UHEfcHn? z8|O1l406 z-a$j_FmwXi&o%r}2Yv<8y|Q(={h_VnBad?-;!JvsO4Oumq;NnZujlLbIH+|dn zZ>#>T*T3uZ@5}mkwf?OV->hO}&MKfkIrJxu{v^?#ICS~M|0WjYJXs_p9ZxG%QdWI(h?84nydoZmW>pR^ycNU0Rcpl#YW-1&WwENFKjmEw*^-FZytIe-% zTnj}m$#WB;M9$d=B9ih2;)#cP1lvf`wO0&20}_G8B<_`!I+~w?d^uCC-Ukh!Hddvj zcYB~sr_-NCY5hcOn27ugv()ah7_et;mQAg$&-}Qt*pi6F?vkXxIsDyaScg!N-lWKb zYxx1+1iEdY&Tn;}ze;+XF5kJ&klC+=7{hvL>uivqqH23mLu7cQx+Y!#Rq{V-vQD2PiR z<5%(!siuaYdNb=R-ikQb$+busUD%Gv-mJauPMfr<4mE-8mn(+g6MP7Z%RwBiWZ-lI zRoWHTB*($>YIPi1g8!gkcnYORdZu2HWBD?n$T0}{HC|Jr;?$L`oaxuzyM;Eu3z)y}#p- zQPU{4D?f^KDM)8g-=}CK$7RjH9;}_@wRtP!v^$rOg}EllONR}%!b7;urZiX+_hFM7 zA-TUrAk3TD@EU}AUyJV(kN~Q>%IWVN~@kkZGf!1dn1dt7DNSx z&f?IbrIe%_0nrpRj|a_fZFbW@rGIpZeamlXa+V>)H$~5*y>}aYV}ri;!4CLFa-XF| zHA1;@eW(=!BMC;3$0YCIC{~(f1#B8oU#zWW1D4m+ThnR+PG!3QxUkx6qn8kx)y`4{*KlczHe}jL^x^Y zY%>xEh>%f$?{AdVeKro`d|568F*Md6LouK~VwOsv$UX(B>Sj_!+E-%tSNJ&P>dMVDj6P7Mr`h6Zh_ocEdRc6|b|aQRD53eLU_g zHbvM>9j@=}uy*H3LSo-h9Le#n$Qy=gbCQvWYSW^Fp*p`+kb z4dkY5`a@5@hnH3^+7k)1Dk1^ZE|_S!p6Cl2;<%fP{U#4_-cxr6m66dt$=psAyLO2 zC|nfzH9}Azs4xe3NO&dBYuzcfiXgIf9UP1z?HeKj%>%z1&Id-Db_C;Itk<}@>Vuq# zSECKp5GZ#c6UD29ajE7EDh=7~W8dQ&fXtV81N zwk_0p-yabm8WJmNgNDo?%ncG=$fIf8027aXhxfTSj!%{ICi7KHo&AbrZiPKgB6BbB z(qTzV?CT*y-(^*k&8nMETr|@kBL`Z{$~mN`s+yIMz)q>A2-zU&t+>ssK%2fQwLj5i zIkAP7^B#T|krd@L%D4vz2{CS%*H@mvZXb$x@nF~nPFTxie9l- zU096l{SCEI{i$Kr!aO6`GOKCd3XQHmD?j=N@N3ZX>+7bnmrdRv*;8l9x{(J=vLoh6iAL=Z0*J?4HzX8X=~SCZ0&X^jfv-+H)8Ph z9)HRwRjIcRbVhm0@nWh$IfwmSKV=`DdNYI59|5ZgVEt)lX!s;~hpBnx0&8I>x{^YP zTd=5)Q_p32qa$sGR#+q0L|yNX?it^PPi+`Zrp}c&(*>3OX5|3w=gi73+Rw>iKZhZM z2c?hF3o_@im)nh1g~lqa4YtD6_$e!&cFn|o6L*mxMlc@ZjgeKznN&!Z)a)q34;F~n zWJ9Z#hR4cm>MH9c5>XO|a+YwO7-;q1jAThjhHVoCO(pZ7gH~RLw@PsR#jJ!chtq$H zCPDm4;It8`Bo-Chf1Mw!>5u%r5%^heuR@>S0%(NUvXNEiBAq)iB3!UwVyQKUMxdO1z3^La zXz(}i;>}8nIk8?2T}6~pR-dEUgiSY5NV91#=Hp(osl_bKY!N42;Ex}tIHhHD_``8{ z3^tTQH0_k^J0Xaei3h%=>^(t=pYjdwftm`;;l7w~4TqmdVQ{}B#3T^HF6@3lA&0Dhjy1>7Fjs8hJEH&V12v; z_DiK2JTi@`IKS0@9sO0GqLD;JJ_T+;5hVupNHt`*oPtk60H$Ub)pw``5Lnz`E!+cs zqTWi=k2YT;XvZ}KR-^(A;5__Flm9h}$6M!3D_^n}HdUn#Fu1=6_@D4*bWHso1E6$b z_1O#fR*u_12a_P5_5ma1TKj-Ft2ZaePg#{#t7&KDmvZeqDNYV>{!DIKH4>Ew@eP1z z0-K~rSG1}U6;Yoe3W7Hhxrqs2k{bG0Ki*IW6!(m#>fll&dB4X!dZGxlshoy3qaZAq z=TQJjHEhb~7=e_U;wvHJN`ztb0N=K2#o&4Eg+DqB-w_O0Vjn7P`H?eM`G~<&KeF;U z259Wj3&Ne~*-d`s8hds2e6JPudcC)l*Y(@YGGAeUM+mA5fQu+}AQ=jEE z_J$wY6AIRP!eRQL3%#*6q!oOy0qPrg3W^dM4!i5m!3;9Fafy|@{w`~Mi1(dmzaGq!4=oLxSuLxpET84xC6p3bf*$PmB7cgJ#0?Cq0<9eQVDf~^Cq*&wLyC94;V_Y=HR=Y z+8}Mgxobds3>{80ac3v&9#E>sNt9$U{1cZIRm%n$`zD$?Hzzjg>=e2t565YuLyB=? zB73t87SkD|lxpgb7re1mX{0{cC9Q{@rbY;d8fZsJQbn;yNb9HbE#(g9TE3+;o4Qear)?sD5D)@j69C>oQs$;! z0J8y*A_fw`b7s>y*O%5r7=qh_H7LT}8Rzukd3tB9|4-)8zuAB)Kv{v-?B}W1&B|Kp zcIA0K*zi6#&fsm>kzn-4{!HhkU%@ zD-!8N0IX05QeErtKDT-FCR(|b*3o=(gP2ys4}l$-UUNSzY%5#jjcI9VA=jNPV z1mryV4(*?5NbcSiXAa#&Y!J7E)w|wTnMdDhHt|K%oJiAdN>1lJ}Wgz7V%P@YxkM7m^rQ0C1<&R_t8^gF<83o_aut;Z%PKyZVnWv5)n z5<4#{kK2!Z8ND1FsCdd}pS_Sv*)c?&%kApOAXAF6Ey?@+Nxj==R_kaoK!!_4EO?@# z9$UD8ocM_aR@$JlVfxf*!deu4HJH?!bsqI<;!&H3M;&GkeU3&xO2*ZBs=tBuuKw); zlv%+BV2Ey~UbK()LG;e!{))xC#`$?>bqy~92F_>O)d2t&Q*+cg4RezAk_zW_p<<)! z3z+qAQ$xiqRp$qCDK&K4w#tS^

Qc>CZK2B0YH0rrm|}DYL=@`pE8TUP5gs!I95!V#@h5l}q(Z zjTKiZT*{|#K3Un9?u|}L+-YiEVf5!H4N7a!zcSrg*h;gxSAWvUQ>XzOUdYs=B5I?I z5Pl1|D(C*vy(vkFdw_YX>C}q-;M!GYeZDCSHrfP8PC142o`}xfguCA5>w_A&6PqOP zbhP7~f^x9Gz$Aj8^mH%!VOGu{0CNf3Yw&$tm}+F=q?ZifbI`pWbdAB0ky+sZ-S%d? z?UCU9(2s4(8E6t|znV>5wv9BFhNpW|=`=jVocL{^SvztwH|{|;Ug_nb$L4@p#>r~( z4!d{IcRoD+90EBaOlXzBMxEUoe)S1Da6IoHCFXCI^nUacMRG%9M3Gq;25q)}FkX!r z0=8PJi9%6Wfno>a&jE|K5YmJT{g&^RtIkW(s<%-CxCTk9j#6EuKOd6Z`^cpnsrs^` z>Kt@cpjQX)e!DmNV-l@G7Cg|FxSvX#YynN^Z?3(XXp-R^g6@PGLU$1P`(5M@y~rPS zkw3hz|Bn6^*op8&U|{+Zd*&-@TYCdlr_D*rsV zyGl~!>c%mM@H;Zp=qF@lzua)bXs#XR`wA_Qy?I4d=aQvWWW}^8^edz-LRzF;?c0hV z{^}A*W0A0~>fDvmst?KIZuDn+V@b6m#F2Oajf|dxN)jH1aXg$yP#*Bm9YlWMp^qPU z=;H?-`uKr|K7Njenwzli7hrr>lL)|@m%6%(UsR5q3ZD%Iy}sqYXST)Rm3E=?DyyHNh= zci{|8^6Um+ef=^k{;E{cupk;{3pA2xCz~4+^5Jwe12f?($+HMi8>m%y9}E1(HNEL0 z&(aizEaRn`@kr<>^f|oq4Q4fUFgExN{)mi8^KLP?;|+b&b58k3)y>@fs92$&MnEx(Ph)%7*yIHL5w1E*ZH(_(jC37;Y3mK>eW~U#1lbC4eG5X;)Im~B1^nLP zIx`-(g}%a7(s~jxG$q> z#dyPWc>WJwxJUF;CC?N}>~8EQH-%LC2Erq6rdwtJrTJQAv3{C5c=5vk^p_@Y@Pc+d?No-Ikbh1^tzh4CAp^fh=30-t2S0bXMV3 zxhZS_S7_#J0_Tsq%jfSGxlc|KuQX}1Fk|iN6sq(e(JY&?6@(EA;uWUlB?J z(C4FssS_{K8u$$2Mzew^@RZrR9m>yAZ7T)~3QBOB68yk**}0x73h~He7%P14y-8)k)k>BTgXj(DOD6gkFQ7 zpkp@d1*dEJ#Pyj&>8inIn|7)0dMJdR;e&UMfu3yYqS@MOKKBv|4a7c}^0gp27es;8 z!!h*dKC&i@%G{B=1S3^fW8H5G97Y#AzCsSn7GY` z?J`y30^wHh&%N?X>nEc*gj_TS>W&a8bNEo=c^Z(>CMb05cZ~^_(naupQGaJtueu*| zB>wD3yx>UevVd<){8oDGO=_H?VPHz$m*G|{2kpxIwOA21n3b>0iGJ@x5!$Lann}&J zLR>f@xkC~j0fxkTkG;?jx!(qeGuA;Ksbx*42M_}lqwqYtSviY6p~1BzdH?AKgEN}= zU_&dYm4OcGAY845vR>kMw!$uJ=oE-$Q2->4C$vzMLDJt@u$2l0JMekdl?Tm+O(a~i ztMk`Zt=!FDOb)db?rI8)0FSqAQZEVsP1kR_tY^N!ju=9B9B$fGmIc1YV5yBZ3HK}m zJhM!o%JpD3n(=GwvZ7-?ww^hHs!E<*P{3dZ?4zwBN$Z zEz_+=$)J69Lx-)<9&aRmd=&x5f^9Q>Aw66ScZN4?A|yrYa0EOt&pY4qw?I^_KkKbY#tfdYgidcu?Bwrdr zW6YynA41)V-yOlFFev4m$|6kwNV;$$XX*g)hwVY^y{}F?-DGfGPrVFURdsd{3_c%p z-H69V{Wp@6B7D^}pihw#)*~qtuX9HGm()f;E`ktjJFq>50A(H)H$R?Kh5P{p&}Afy z2^?=$;PfIH^l6X_C-!@#^}jWc$9dF$WjDUlYLie{cT~Ob_Y_gNxrx~GdS|*Nl;60Z zcF3k?T;jsZpFBic2z==W7dW$^v4IZ_n2QE?U#~A2**O2prS0>52C&xM{4gJ{5Ol48 zHZY)LShQ*MR3(BU5k$N3Ub;o=f8q<@FLjIFLKd2i+pp=h?D0|e4nlec;U)L~;>?t` zuOs+@sXdGiOszOD9b|!%9{U}X3WvRrpD=;+i4)Ne&}|_OuPYNvWl}Z7Sr9RU z<1eDuX7x28IJrRbr*F9i!38-HB;y#!x5MIWt=5JU*WvCT4JcU5#&MeY5ST%8Vv9IERrwVLv&s)h zEv9`I$+1&EJe3pod$0vH@3YV+8>=F};6SISsW4KgAENG&?0fV>R9pva5!WVq2?+Yg z|ExWiMj(m8rIAP>D^MD7gr9;HAk`p_@P&4EAN>(sKRc?Ies(`hk;45DA_%4Kro`67 z4ie~8p|Rc1N?i;x*+e0uQuJh$i;DRa@n2Fr)ZwU@ zXg!{GP87cp@w+IV?ye*Lr*vKys3PNt;F)>@6m-CBQjdT>^`Y;O*Wl#r{6*uzu9}Dq ze2%~r&ft{X-HxJhsMn=kpv}0l4T?jqW$vjBAz>i~*8{q05+>?BT+Rd;(?5s}o5(ry zKKzkc`JN)hm5lAO;b(BJLny5{q->=_%A;n}U%15SN}@U+(AlBF1N;#bVB0|fH)aC1 zwGgj@7OJ$kn_4R3(7#}spz^TuTsskgnA&3xKwZIZ5y%JgP;7T|H{=0WVJtlqANSiiRZAYP2uX6m1(j9 zG1N*39TR9(gGJh20a%ugZG zGmW?%;S7swbqoTRFPZNb=_a0S%f@Cw99(Da2e zB#e%e?z6b4wiLw#b|?<4skh>iBbhfIfiEavGU-8e^yyC!T_HSdkk;oI=)7RR&a5_@ z_PUN)6FUT=t*V+t)x)rlQFEh|;gwyXA?kxhWokJbz(JJ1T%EdvyPd_D-yqgvUre;L z-hXp&|F6Cy=yey->mR#kD4*Aj4%0qCuSalt&DFfh`p|2x#&=12UB4j(y;>cp#@`i^ za&Ci8yBnZD8IXSVOE_$1Bg9+<3u6Bcp z@e?&==jh>2{2Uq*`V|BPa?^{3w#&hF0)m!e;7dc?39I7b?v{$D=G5m-%6wxN!j$gT9*>r6AaPPf_#D;?BYSCUo zDt@xI27wUqVygy5xe0p$Xr#5OPtYh-tBL)XQcb*w>ru1m)XG(=1wFdgpYsJN7ci8{FqFo@ z0S!w2goN)N2&M#3*PT#G2{>m_@sM2;EPObF1TflPZwHJ^0U%{74&cCf9l#zqNEya6 z5K&x!hBinZJT?ts>Cfm1SfEB73Cv#vn7?#`$>LzNU$z5H6krwy!Tg$o`G@2gM_^z; zBt)H>hcMC(6G`0s1Uul_bliIKN%FP;l)&g zUyB9R=za2hiS?Z??gPY~Cw>yN!-)kF2C1EsyN`i5L)^_DUgA6mLIV9f=m*jX?LH5R zp~W~B`WO0n5DvCfz7$(YU>%+0IbDI5ZAt=F<$?c0+q=L=Rb7k!GkK5%f+uLypsB_h zl~GgzR5RiuLuSYsGZ8GPw1UN=6kBaAnE@=Xgvm(GJ&w{Ux7=QB>9y_U*V-$$tq>I? z36BJPfmlTG5m0f)@qt>CfSCDz*FI+^lOXNC_xHQ`d?x4YefDGRwbx#I?X}lld#JAY z_Bz{)y{;Dq$=`nC6%j(*?ejJC5a{{mqh?x`92z>LtG!k5fllNdW>RZDrk4U2IOVGO zz4CWvJB|K4YdGabGlVuCgMqV@YIK`f5>$76Bie#~Q0G`D<6Sob1tg(!pv0ZNN z589q{no@-4%Q;aR=2cT&OiImt>m-h*v-|B6 z2G=M0n^BonJ(@#m>Hn1~@wsBfS>^_9>P}8T>;C0vyY-F&Oizjhjq8 zZ%V)Q75EhqR&=DZ4^`8+3u51*Mx};I#`aWN_(nJqJ}h*?A?sZh58hr~#>L!aQYnAH zxU>qJmO=Dc7rh;5x&&=`u_Q)I6HpVdntvV+FGc#L$U5U)>%6s?5DNo#cP;VgtNqRn zPtWTfPF(lni-N9+ZLrJv8Y4$$HB22*jf}TXT-(R3@l`)S)7>wR>SmszM3F?L%d8O% zeH<2RL1_=$f402jF+L*_4kk)auk%d~P#5RRjvEK4zlCL8XPxnC=rt5ws4=dTTc5-m zPKG`cUTVpAV&1?Faw!21_2>@wC!wz7cH@&oHrWt=yp|=dwtkEV^j8L=RUC-ifoa}= z@?Nrq|1A`V?xS7Oav<_GpK~{*d)zxh`{h7nyQ|&!xgbYQ!uOvkw#-lZ@p&9Q$W^1} zHP(WbD-u|fTuDV@DKNfb|MBY)|K6VM>v&XPv zJY0LFh>ENE1Ww~qqu1THwAf>8wBn7wSn)@V!vXU&KRcT z;1+{LK()h{pm#=gWU}J?G9RYhHQPZ?RS!|xz8sn z^LCH>NN7K_RL2UR(>E7~emU^|6pPZ*UmN^wU1ffBj%~eVq<3(8j2L{y@8q8iny3yF zs1ll_1&oX))hj;tN80^gs>SS^b!K^ao$+2c;hc9hJ(VK?5I(kI2QO+k^usS22N_DF zt6?;BkZx#I^QTTY=_jFsb*}f+=8s<(fy@!nZ`}MJ+2HIbmumd_eXwpel`Fx}-Mj2I z2?zyw3H(R`LPi9%`)>jK#6scc(p|&Ha}Qi=A77T<>7V_gT#X1*xAZHzdAhbfI5aDD zbD+Cz@dvD-1Lg&Z8p)56TAD0%W>mNIr*^zWz!^2a14{T7f0-w@oXN>w4#%*Ol;bd$ z+mQQ>mzR}gl(uZ_0N{U3*2F{$V3bi0Nun2BAa_eF=zK(_?KUr32o60pD znYHZWh9gcryer8ue$C~R-#UJ4_^ssEpt;mNQascKflFPxL#T=l=P|~5lv$4=>*25- zhrt0!x~#`89xSf)tHkF2DftI4*#$e*qnqU0lQLLii&#Lk-1Z}fV_ZZcwe``Lcswm_ znN!fFHI?$#5}bSc57XbJ-{nh|e7XJ3`rD8DBFnCpdAHwfe|hruTZ4{q(LHv)ZG2T@ zh|~Gn3Nfg8(pkw(w7M9B)(FLdK+M}KInm_qmo%`5= z_w4?{0|CMLXOeCbo5aI|BkH1aco`acH!%eKi>)d9c4A|VL$rdR=vETHL>VR~1R`?n zMeTrkp&0jExm;Eih~DjNSm-R{HTW56eON)**X#Dgey`F73o7>GsEL)F(ALzA7Hv)N z?F*fZYV5*G#79(GepdF7TgaN8n8c8c3$Xh-YB(_fOy>90R8mP@?3dt& z4#(R0q8B+&@9>nUB*uGcF9@~~E1WI+HXH`zppb54Cx&r?8(}my?d$BjIG2`66Gwgb zi=?Gxk(QT zk?xpLT`H@9=Vyugrw+5a)a&XEw@S28UE)POx+hod;_0&&mFn4xic%ehy=QDXnDlf^ zQr+z}@Xc+^E=eHPvOy`nqB1uA2kCpJ_?133fFm@I=`Al2`{hP3@2)Nhl_3_3^S{X* zPK*K<70FGz=stJFhFvTK9=wb5X=T<*CANY*Vti-*5V~1dWKJouq{wctO7BA&>)GYQT-UiP ziE2@~&+O0d7q>FSr-^`ZMX?qdi9rE}6U9<1*%`ey>39EiG5$Kp#x6HI+@Y=PJ!6pG z!+8)EcDrJ)gG^kFp{Am7voi2F-(c5Tou`@zgJHel32)CcaLaUv3z&MSQAr8#vHXBLgbwF%hH9PrBg${7A0-}}JnpSaFV)!})SWnp z!mx)^n!La2xgzJJ5H~Z3{=cHtAHB{QaL4BrB`$-1u5;R9DWY&3N9^6tEj?2=uTvRW zY@fuf(Kiuz&2vTIG-oiYFpCUX6j1My4D59tmm@19M;1A9$dR3qBm1}<*%>*q$&pVE zoGGU3$T=LsRjGgWvJ!LVR*ZghSBF1) znZ=Nd*KpDr>zt9M$tbU)$?B+5+zDk} z_eF6dvVuiZeX+-8(&1thHnTOjB;bB~@tXm6V#&8iwoZu@<_&9%-Og8|)6U4V>Q;WW zrezf>65Cn-ILFai>Slk)X6cn|UG>Fora-xB(73Bbd4RLZ4*e!^w&E|T`eiS``KmH= zzcN2Q4-po%_&S^udtHaEc~m69kt+pN&7ewgxxUz!g0&zh6jmMGe7t^K3I=-4*`@WQ(`bu&Qe~WyB$@Lk`8&c%DoL(M8u1U)t zFksG3&BJMW9WTY%^x6wZLa$Ynpy>5-Rn%9|D`QWTKJ9RRKW772pS8t{v<;keLXF=- zYziGy1NdcVi{EAtdk5lhCsPBGXzvHEKoT`+su3b<4xFN40p%1`kz{wHp zBLVI4o&L7?rM^3Me8P!MuQs6*u22^J^c|{K&&6zh7qwKG-RvXYi#*wPA zSGUFUtF-mWafL0$i({{IVt=fy-!bmWX8E`@Yv9-H^jEyuj?Rpiv&fOw4;t@$pBaCcEXXgC-%8IB<-IfGv#l&?c+~f3?nf)L9kK|q2FQ(5 zS&wl}eKY6PvB&9?3*~dPhudT;MlBpQ|0~L9R0f-@JLJ4Im%3vBU)6lLt?QKLXWQOB zsbI^n(w`&ePbY!H-!VxRQu3T@hdEkI>B^noq*1sjt`cRW#~)s*JAwh+JWNr{;Hiag z&c3jz=KD7xZTrs z@FefB;uV<1cp6`D&=Tb@{8KqB=t=Iti+J{eYXO9{ujAU;!$(aBq*c z{C+~=BU-Q^eB=`?(m<%ATH#&qs8)FAsqoG-g?DX4^(dCk3hm#~!;3)s_hGNcq5Zo8 zXPJmK)!i$S*5^o^rka7R2|z|}2DhHg(h=#EkFu=>7ZaHaD56T$6#7>> zWr~Wa)f0wCIax|PJ7?v7@`~E=B#QVmKcP=9g|)k-Ba(d5>K4(uQG|?t%pbx@>6TVc zTNmAu(}=OuaMdXs)4#5jHSAf*oieB|B*&$|tj{j~sqWmFJUCoBWabtg`8>`ODoJuxidYebF*RI3j{)WgJ^J+Tf0o5@FNYJ= z0-7j28vgyy06uE|K|LP)Jznp$n|5d;YNzqLTki-r&^YOtZm2OO> z@9$J!JF0J!r#32g$rEsi5!Ged2(wvYMwqL4bcEN+cm9Z2$Ah9 zoU4F)dMEGCR52D~CletGz7gRo;0`=4v>sh_a%RgSxu8tWw@b>*0k}4%9~Bg^>1HdPmhL zDTk*T0j&L4VnfNXO3FOs4s_NIBwE1GyT@7vs}9qu2J#&FL&a!X+mLjN^1?pKgq! zJg-?>=GtjcuyaunqrK9cTn4qw3Lr`2JxbaTKrS_EQ8#q@To`Ipmj#?Rk3!YbydMz6 zo}=jyFIe#~OEtuwv{7TqUki+@YYmK>*@926f@d)RjOH|iTfa!;D(nwh@hKT3@qRzP(^P=k64JQLXS`so zh;(Cvj3C|kx%8B7Jg`z4XslSHLL1a5LZm3y%`9Bu@Rp}{2w7O2j*VyVCw^H-Lg+sh zFR9@cUNgoWTcI*2_3#7-Ms7Iw3lwax(pGJ+8nZn#GW@jAl_OMSDi$CV!)bW@S!Grv zb>!J~bc7{?j3?FV^ny>)50gWwL-glR?Ewx>>CW9|_1$b4Wb2LFg_Ys_ z1p9Bz7s4VH$ zvK`GZfOzmev}hD)*27Or_c%gB!i$0qoEEZ5`;SYoMY@N&3E(UyHm^!*SojUJn+w5N zcIdSM9Q`A#r&NTT=oJ?K1`!?Aqovrym$QuIDp7qsu|;=%OcTZ8zJ zjY)>^7G6uN*VfG<8ph5(9YjK8w_y+|obuszgfomHkxd`swwF^1c6$qsH13e@B|j9L zl3-$0EI-)}5+IddkeG(s9{5HGS5?$$WTQG}k(?P{N$*DUvCNGGx`PbqCa5wss!SkiE$gWWURdVGFYTV1HYQL{b3m|1!XC zek=`kM}vTk_LjMLd@=MbU3gZRUOVIR|rNFSSJnnC*LuPZT%%PrZU z4sqr!JkG|ZQ7FD5!cwp3%#3!w^E8iZQoi4LV-ed;P!WBOsS@!wmhb^9hZ{$=u%b|R zhrJF(YEAF*ze5!v1J07GL^tH&GortCRxYoz_q^mXKBzKSqSz>mU`Y;f zdEH0AQyj|$$`4D~!rV+#D#T0#9Ie9@*;d#H*lKY!;22Jnnu0KPbdc*>{7%F^_J-L_ zQDRlyuGrbCZQC-i*5-GfWMS>P6xO`v?MQWx3eeIE*kaM#F4f#WtLA2hS^~zw*sCL? zopZ#uW0`T71B~dbY4Ds;=7XxiC|(f&IK_NkXU^lEINA2o`(YoI9!8iYr0*C1RTN zF+(j==V^;+q*OvR@^s=2!SO+G%oR=<<8k1KY5ZV1D62EJ`$ac)*sMd+%x!$c+R+Bv zMrXJyr=lA*^2qKwIi+V|c&Fbi2sl3puxRLkV52br)A3hdfd1zeoY?Kt&pE6`K7-r? zMpTRyOpapxD2J_WOWclD66ZCSm3z&}EWsyNQN}*X=!l4i3i(4(_zh8C8k@#Q$XM0D zXKls4JfV{(Wa8kqh&qTLiwh!3BvJGm*PP4e*;n4HJA0Dv_1lMXb)Hp9O<_k(K2SMO z9@B1C&hL1X9OKz6vFcSfA_ASYm1u^F)H%TG1I8nAw*>Cp>x?}txS2)8E8d4(|0Z<@ zOx4VIF-LIx9a1zrnh^|%ZItecpAJj4!Jtf*7RZ#k8O_M6-M@>KyT ze&W1ToUBe%Lny({OF?$ke)qFlcn&3ajYzS;k0W%Pcyhyr@j~07e0t`NzKDoEZ67mv zANII_q#P>oo1Hi+?qd!gjo)bc^s4yetL#n0>n*B%Z zY&&fbXo|=b7W<2B8A1QW#VPmzApcR>l{n6{M$W*L83oIH9AEy=7W~}E6G1WRDNjIB7qAaCsOS@U5@c`9&yk7OJr_vLFc`k zr*Dg82T&aJ>=tE(yHnRDGCOv{joG5$hDVR}_*B(=;c_y(QloMZ9awytE_1Yeoqu>FRq9)tJEnP33+y<9>*=N{CjLue z2av;8ky>KWKTOhc9t9=X$vU3QRf&qb_BSs6TQxGJX(wt|%LSB3ULy~LYxj<0xG{O> zYs+2g?f)m{<6kH~W#KTzQ|-oQfO81mIiQVplH-}y`z6Own9VIuKxjQoa$kj(6V`BC z2HY#02uX2~AdSP}uB_d$jy#5}Ln)As8EW#TMX7%NTW&@=nG*-4QypQE#14`wT;K&y z#dwXqP-a}T69aHW=Oli@^wQL7PcOkU22L%h%H4Tr4Z7XDjy$TyL-^p> zvcCs!MlWh)kKJ@k=sZ_{$P%0;_;zWLYatnY%vbOT7^}oav(DIwF}>dyAddwmC^D@V zBlHoRzEYFgL4U!^o@iY@#D{0w=NG)jzku;to$+iP&J#^lTB=FwVcbHp*nDK|j(6m_ z1n@#5+;+@}iZsPu_Ta4Q)|-G}SOC%|JR~^W2|ct;AB2VV5EJtDr-Tt zj1qJDg`G;#hb<+g_!WRBKBCx<24S359S#+ z75m#h$Oc95#xIRsyJKu2gpX#`m!@ec-f$q#zvlzROz}4SQ_56&+{2cg=y{y&m!HpNjVneiNuzA{6UoDYW-A3eq^=)9nBO=6U;V-1!me8e|(`5@K z6mhjx#JoM5NtxX9o)23OqswRmB-}!u)9Z0_HR zLzKpZWd7sPDUVUP+pXgES&=d8(Q7^OshN}|)?<|QsN|uyt1+!$EQ8{;a<8 zIJ%1ZY~HYK!J8ffBcfh!^KbG-G4>e>eA?EF-EiWu%!=qEM`F5H+pt-ZX&Y8t$m1JH zbd`7u(VFCvW;OlAk1-Nh*+|7B(-j|SZqg(l#m2u0DQ1=oha1q(UgJkOdPgg%pd1m= z5laH+bkUQQ#!c*Puiy1j0E4+YFB9<1$NR}A|TGMM_(QE!z*q9IF zsOH^-&B>+O26hmOl#WMEyUKd=#HK9rHD$_jIrwz;S=IwAgf6`!Db_2lKDLOkC&-97 zqPw=(mMiB|10zHXSAK|n0G1m$SF=FkLMxCHyc&Cs?cDf);oa5PbEKoO=SW3kuab_& zUL_Tcy-GS7dljNNb)WBz)?lyFI*+qqec0K^IYifs+P!`-;5Ux?!w0j26Sz>%-}4$* zIn)`4#Xi1-Lo&`c<#f!mb?(T z%ec0b9t)j|89EiSHH_#*FCn`! zGc6aUvA6pi4&_x6M>(7!4E{u<;gA|76`A@CAzOc%Y=!!S4-XnIe1ADLQ0(b%-hX7w zVRFzv{x`JjnPfgrB8%0Q{XQTFU8oqR62xpqs~d*Q)mg zj5oQ%%$784hHZ1$m-m;k$t#(mjhn|0&j#@0ZJH`=|Uf5DMyV7g5wIJIiy zeO<ByN- zV46_S3P~RjT4;q-k9GJO1byCU;brKpo9XLjNfa%t$5VEJG4sAj(ZXx3*Ok0Zwq76N z0%n1Zm|81lbxr#9VP17Bb`9wS)c$n8;iFyNT0RQQ{U0CW)omYk~Mo8nBV(Ev9*%Xz90{`?WKJW^a;~IbZQ+E6{y#4ri}7 zdzHWkaR?+{=Sv)TbmGeT38^Xj34wrbQi=0Zk8`)jDK=tGZG{)H1Cj#(Au+A#EhrCO zsJcE{JWOwFmoc;%NO0DgIG_89diHpqU z{1e)^l57ih;5kgPX)DAo)nn|$Jg)#HudiU2N1bT)?>Xo-b}0Kvykh5E8^FPM;}Hj3 zXWqy0cJfSynEZ`xQV|$+bG>o6qtC9b{*3qv!RFZw3O~DJ$sOS%!?b(nNnIJeQ8)Wp z3tD;uXhVNZ6-v0j(8M#`xwAi>E%p`G(J%id)>cACCdKshUGMin;UsV`W z3i!X5Jbo9~c9`E8Z7vuS%{j~6Rv%zWI_dA#qpkQqG}#6SBLaI44KN+c^6`ORD|&e` z{y9%>cUEcD+D(rx)KhHUctU7VkFFc-k`=%!%+iM1|A;N@k;3f^EwZ#phsHBCY?llm zN3zEPq-FChB`{c96r4M&DM@y++>OgL$Ew?g&;~hv3jHav5ML}woWNA42h9RYX}zGG zsaH87W7#%Ch+f~vmeOj!_UOwTlXYlPa=Daz&(P@gPLKO} zV|V@jIg!@1P6HK#-Q0UFK)TSv|7JJZYB75t_ClQcHEp>_(*0mRWP$zC!r=y24iq#V zOp-Zqp;E?M$V&?kh*rV%eE6ugpyKbXXOYto zOqw6clRiami3gD*!$*rk1tM!T!CM{CiHG&*@ci334X!lZ|KLt zO(M~}H_2#MJ#c~UH+DZId=p=Jdk*$suX^a5y?|@WhCb0b41eS{bR5r=<|Ei6Npe9| zV~0Rk0eTgU!la8rr+A_@aBszwwe?L-NnyOEtv?)V{~K^Q-#SiN7+;0XCsWiqnFhr7 z;R+@*QcM`)TZlxEeo6v-w00O4a}wU>H!|$hc+1i5bJ97$5tH%cdR4BK)b9UKP!s<0 zYYU1!W(q$ATcK+B?=}{j7J+)T%^PbhHkw?>0jVQ&wj6J(a#&s6Pk&t0<)8gZW`|4O zn`DZCbK?f(O{>d2Jsr%44Ex6bAXSY}tJK0c$TQlcj!T|G=?smh?IDD?xmZicDNW$2 z@SS8jXqD}4o}jM03EkX`AdD1jv>?01MO7Rve*JVM0r*`sw2M!ENVDkMS)E*53F< zg2?2S__;j40``nCd{=4=i&7==9W{o(^%Y|{-M+6FztX&aV*IWJsQyL`9=~-N<2SQc z?a5%FW_7No@jW$^$No?IS4M23Xh$6LN1Z1{u|>@PtK?sZtBBMR!&>H@onVPE^$%FsXGu0iR4 zrhgSWWb7YoNe%F>9&8#8oWr$laC%WJGQKTJkyD`QLF8P9X_vKr>jJpU(KwQD{2Sbo z)n8dAK?MrbgduM0mHzeR_>B~tSpb`SESi~PGZu^`688sCgN}89PnPUw0#zO^-D9ev z=TfV1wA6`{`DZJh&ZFvKvVC1s)Yg?>z!X;m|D;b6>q!I~jNij8bD6bYC^gNe_LNkx zg{5aEZRfKC|GzUo<=nh&$cWBJ3Az zGoNKEoHGmhgjI_FTaeDbkm3FnqJZTxDjaue;o|ogo$oQ-qF^l`>AaA~{mO#7$rnDr zl-D*${?NHgUfmm$&tg9x80UTH3BQ*|X7()9Wc?77hL@1$VZ`B<`?X-6w!X>(RpA|ZX9`)qC5~NC@7AB3;9kYoq{cMAR3(Xjkmgz^kF4fe9ENYnrg9b&9bc+? z_fs$XDZz8o)v~oRxLRpjdebE>vsz<)LofKWFs3$5<7d7-aP*uZU{(U=%AK!cg!o1> z`5?dVznM(_?44xtA)asZD}Kug`*_~UZ@C?oG{3grpXGUs-vwP(TKP8JesAFU-~9IT z%RP`xUdB(pXZ~i{aXAN*$t(GNkKe!W`xC#n_(@tF=zqvBGv8OeuO`h7encm9u0R`Cgtf z^1Z}5B9=HGRy)|p7a9*A{$iM~!6Qdo@ek_j;V4;#sjuKST7$op`~|1OUha^l&dzDX zIxN}Ml20fxu`wxV2nAY@3ml1YEwX=*7~P^aD9&q9+p%Yo>TkLvQQKq42||sExh(`7^hOh3LvPK(wCUCVpG_JnlS-vUwy{MBK<5AxYT|Z=~l{X12KkjFGT1+eumY!fgw8|l!V}G z=5?2}#)t@If&oz*f&uYW6*?{a^jd-rZib+B-JrFbnDsH zCqq4a&cAUrOYnQ1#&@KRo@X2lz~efE!!Dmz{W)c>yf%7enRLYIZ0va&kBP{}c~(<3 zUB20MJtgZ2j?R1Bdp+93y|EZe;KT!i<^yTGH~aS0>3U4xMvr^DS8l$sFcKOrbbp%;bktBSR>Y-^_R)17CEZ)iNfB)%yFLNbMa-6c*cC-&0ezF z?mkM&p1)IO70wQr_hom24&z0-7O_;$&5kf$XgnmR>?*cv8y>2c!*XbM9#b#eK~G+(8DAr;xDB7dkNg)(_5b*Z@TC12#yqkK=}mr5T01^aJop)6_U+<56V_@DV! zzdo-y-?Qr?cF45#ZI-1-oEs@{{*^P@-`FaEB}Ur;0VZ*_9S|TAC))w3+?KbbYlSAj z#9G|Yq5kVbSLmyJO>SgCEjY*Pe&4nx%@Xp`e7zB2lX6>0_B^d|$wo&Rx{-?|7`i|( z?rF{!8W{v-ihSb#PTf*yDk4QsTGPd_LT$qfjYpgfyoApp$Z0PI!7+2m#^j5h=;SXc z+hZ)0t4Oku-%i=}e#6cNPxC3pQA^XoTyrPq?sR9n(bx77w@>EIj7V^MV^TCY>@am{QF?0xzq1NJ9^aT{4y}X*Pz{-#e{-4BsPaFO?UcA2P8l?Q2d7~fkse-KG26Hg^fJWIYpC%h_i^pI zi0do;QQb+4{Y zF-g% zsFerP6V5N3dBRz$I<6NmAD0=xTp^4fMj}%MZ}xPej^Y{-wP%u=PL$KS^fcmYPMoun zQ)|N41I8cJY@+&b`cSJ63whRw!NUd6gE@7SSv@*hScF{DcMBOaRqBc;dF?O`9l@BUnC>LUlPl$-YQggca81|gK=i+`-o znc{+znjfAZ4Pu?IrifuaBdOvV=wni<73ZQ+zUY+|YViJsa*!H0m=G-;<8$uuG`=k} z5IpBMXG%GBTyqp1Jr+-`7bZFW%%>DpA+O{HDtbNPch2^-y))Ebv2~)hp=q|_*b|MW zn}5$_EZJ~+ScfBHqSQBal5Y?_hhZRElZ-I4c9cw{kIO5FE6&I1f_Co#01@;VJI(s? z=#{6T$2X2x=MvbAYZ@kiMhj0%?nuWyq~bgZ#~#=2I`{K++QjGUT+e%=g(HmGQR*UT z={)D&+9d-Ev;iC!N$^@NybB}owRPF z`j*_D?C^8L{KZUSl8svgyv+}d695@bblZYQaZWp_`JppA8z9?%wd*tXCN5!qNeuNn zyZtVi@410mxQoZN!{csa_%X%Sj!uk=7LFweNz{L@m6|14S(#^mgiF;`$-$_s};%> z6m$a<8fMoE+Jvv#0=1knx(# zj17Y`{^*1mLjj9^#AAmD05om2!5uqTK<<`vBt|RSblhpMQrqBbpHuD5IXn1uyk>93 z6AlK{*v)We%J>v|jvp1ljpwI4k#*MuvS&6|@YbIW6`O1uTl`$xu<;5JGkn^HJ12KAN_%j- zvQ^L~9wCT0z-TUmVjpa8+8sL6wni@b^@Uf48C7c|hh2P}`&MKqkD7_;lnahXL zG_&@$=ueZ&l1b)7{%iMs&fs!ZPYbtxshd;BG-o9_M#J-3r?Io`eO3|mW14S7gHk;P zp|rkITYq)cu8*r4UTmmpzB*YuC3JeqBLoTc=u&2yMPqcMzEX+OLKe}hzWoysf%!on?9|p544~!%B*^TW z_*e$G8mh!c9wm^Xzn}A-?kJ=BPNV)dW6|7rlW@kyUYSpoG{IbqJ$ss`2p@^Zzfjht z1I0pHx6`u=-~W~_so(JL>F1U38jBsYUfzn`W4-K+IpAx^wa>>cuwJ&ZUphcvGR3;T zs=Mao{LoOj({O?#zvSHPAD(DXxbRN1aFRGnBp?38ATV)M(3p@#rbX8J~*H|=z+{)!tYz0NctN4n&P1}e03XE_EGQuK( zgY6qjK~!C(PpH=GUuRDN)>T{OZ62lIH-9iI!Jz}IU{ACr%cz!oL+V}eH)+5Cc|BEr zxV4v5;a&<~ukZ(wC)Dco9Paf{cr}H)%<36-E5$@{8h_z78-n?$pKQdvoq;&2S8aQ-Vux8hP1~>w zlbwS1jj6N3JBk23RqMPd(I593J#8OnCp*}d2!6NiJ)F(9_OE}K1o4WM&r}`yo7dGA z?yIa1B&H4cE`_F{;gEz44ehbIvAIZaF?CjA50E5EC}Q3z{qkR1D`;HMTk(>z9oIG- z-gC&Po>s8esHap5RGckMn5xhFhRk=U6{t+Id`=2lqOy@A!M@ILTW@Ky@Ei-1?0a5Nbr$H)li%L!dC63)i}W|N6o zJIm6Fm!|5EL%g#xM#EMT%PPX zqQ3`~1^sGGuQNNOfSYOqcTqq6q=sYj2#ZLdH|Qzqu}AOxlbFKP$es6Bqb+fOu^49^ z2%8qBr!_5sso<;CW9({szeEgEhE1JCexohCLk4ZCJ2aWB9Nd)s-k9)<`4!#$^-~`X zj@><>?r_&(7gvN;&O41Jr`P}CG=1U|sx5|}QwUU1Cui9^;RV!TAwXMxgVgb&UB^q- z`atNlJ)c{hyTb<#yLN?-3@*R56($A!ceBr~t^blXSoCDH;{d{#O7T|vwdI#d@tDkx z3BQnEf%RPjJ?T*NmG6GRf`8}n@VB>yk4pKn58rC+-qTe8YG)a{2P3FNN`EDdpp?E9 zewD({LBY?_N^N--9gzB-!cROwe&$Q7|I++GyLX%7k2X($-Uji6Zs>w>3rf7#=yy%*HcaP8h)1g`X$O4nc2Txm{KV`^~z!TkM9+Lh{J zssCDwzh?=#3V(;OJy}FY2-OL}SuLHnFx5ZMm(8!xjLQ^LuuCQon+w~l?I+RedyTzq zA7v-$-#o1;EIoS&fA=c|{~h`6zEHR82*|Hr7H6^G=%>#?_@4iZ6a@8O!GEQH2DWeh zHR-mIeo))?P~p51#Q@UyP4#z0t58wxi~v(#fT>SY7aQS#NtCyi*SZ8y=12BP9l$Y9r6*>I+iUY|H@agW|typx6D_WpG_2%UJBoE$XFT{~_`v zTfar|uU5EoXKf748_ zdL@1?(`MFK)yft%SJz@2*VG=m3pHtQuHX0@+F5aW@8$j~%lp$gbeiC{R@@BBQBVB6 z-_XgTJoerH68*&Ot^V-Uj^NdR*oud2ZoF22+CK6w0bFXpkW4Pz5f9q8qd1T)r|^J_ ze_{~}53#g=tn~ep>L7%#RW35Y?U~kuYew{F&*{b<<;K6y_Jh&klWj&oO@?yCzuFHi z@V`rS0{(a8g74@zWMc?O*U=KpnPR{CqcmX&KJAyFGvazN>}bW!HTQdWXEx(||1ByR zd~kmp`|Yz-kJleLQUgRrHaeYF@#{@N(yB~%=CQZht!~bkKL)NJXoYwoF|P=i-^~xq z?z=8J{+c@Xq50P#vWFLyID)f8=x=ENY@2`7Ip6U&9%D>7gaApq03RWXip1@B4A7*l zqjjU22=VzmK}Jd<2OfY2eYVwJ5IUVjx_~jxgEv{}ix^NJcY#8Be5c{XA7A)`F#~!7 z%hKf(!EsZ+xaXuPa#4Axg?^Gw=nj3)>V!8~nF?UjacxZ}91#wl>VzY)Gai#p2<`KS zx#}}`DPK5j^xhysdiQZ`8McUr_Hqgff8h*q5s7bIA}{ubHo-A%7?XCgmpNaj;g|b1 z#HNBRugD9lpn03=?MP!$~xzV{>CqD`bqFb=w}H-_oLWaft7B$j}{YgS4-k|W?d7P94Z?} zZDN}qJ$3l)PKVljA6B@WuDpbWx^yKwmTRPQuKPXaA4^s`wEO>!Ht4gJ77!3udeQdE z7>VAsdf@zl7rNC#hpP9rrcIzodOsR^EMUB^#vt3Du|qOYsRQTstL>BzlQO)d2!wLG znYTlG+_EZ|eOS+aLOPUEGE4XkCCJ`fczbf5DV0)Zs?u*uFGp`!O&0u>awkWt&Axs_ zCb7hiYy?C#-ovf01k5L-*Zjs1w%?mkZlg*GpdCloYrIg^(7m-vTi+dso_Fv&PRHhR z|1;#k5A|PUT9z$PZv~E>#S!)RjXWhL^(sztn2denayII-L-%3mR?#65l3Ybbui7{p zMalZ{SBpQLkMn&Mo#@h9tH)j0gyx2p9nL3Kf*x#3CFhu)RAyv76(t49yVuy#mZ0j= zjchsDZ$bu~IR1fDG9qt|ask&o`DAbNO{WkjW=HiVHc%#?-m_7B^LNU`rm&=W@;UM(_Up~xJGZ%}yrbqkzt@9KvThwN z`C9_fdy4$-x8~m_1gbTCO1EV4JDnqhjb8}8%6UW*TJ#Egi1ltKQpVLY@>SfUawUos zn<&LG!fmR{maK{Yg|GB%{833IqopW!-FKypIXLuL0t{q~>gV~*)1IMQnO)yMR{!nv zderEt8e0Kg!DP2|q|sM3_8uqwCa9IZlLSA`8k{0KBZVGr>-T&9xcKfIBYw{>#h6j~ zJ@+L-{tk9q1iU3{V%6K!OKa>3UTBDH&>Np6t~WjtND?+ArGL?r49K4(IhQHk(8uDb z`!nP@<4tNFTRH-g*it=ie3S8+WEmSA;j~&nKIH)YmC#>%_NWe=*c_-lZ0ut#V|B?5 zt(iGwWKL7jr@`^*+P-nLj+lt-yR3@k8NGxnb=DgTE>*cN3zgaJP zmA*vyvB)5pyYv>@k@EN_~Af)-uOY~MSvkw z&lBrjrVL|Ki#*KSQts=qu4F@J#`;8jNbKX2yoC=O3Gc`;qAwHX05NkdTo>*n@)Bk| zQc%Ekm`$u!c{6$gt}X(d1o$fDUmG1iMkJ=Ob#!S=r)sMpqyj zm29y?$U&I!UXlo&Ai3f?snjhh^+K_~4^{`VpHStQ=LWKWD}@D&b79g~)j5-X>#}e) zT#yEOmEh7B>)HZJNRp4t6CbTu;m5HL5k>5ojrM||FD6?E!kI|u)BsXI<5t0ChBZL! z#WvgjY2ycF3e9ZHT(w2zyN1~fyP+p~rNu_{FprLi-(Np^^vXmu!u@v4!>E|Q=m_%>kSnEoIrroI{}zZJij-7 zppy*l225)dXsgz$hr%J$v06fAZr^oj>e%dP!1D15L66`fML{j1Dr}16cKdv)AG8LflTSx_kNA`IJ8nbg^Nxh@(xQ$fA$U;?^+M zBP9XN5H_#*ljVok`aU!MBfeSVR}5p%l|iglf;F@7sWF9L6~8h3%J>yA{S5HGtCYqw z<1loKAE@=rw5fE7tYMn4K4C>5OBZeonyYRM5_1AH=cAZV{wS}q4I|yUhCp}`XXhjT zD$({<8Ul0`ejk&&fJuC`7V&S06*<2wIaP#Si5?^W%Ix^6{`e^pPXSBswhX|ei5DQf z=Y&SaMu94>oey#Qs=9?ZkGp&1cpFaFZ9V>?Di#|Q)=|wAi`-X;^87|m|)8x6zXL7M4cuKkmZeo~Wc{#vBPu6%QUc?0(uTukA#(*VE z6Xms%SDAtB8-`RLW!pCzNW)c6JSDOdj%tnSxvH4m1Xaq026-D%bvHjcwu+9eqGPM* z*eW`fOMym!^9I@NkU!v<+fgNYCPznAWsZ7GmxtF_I14ZGxABVC6ZtMb>MMr#v5DZt zXLOJlj{=95L{3+9&XpBn!u2XbX{#di{@OH837D7q!(X1dV7P~Su0&fOKZE(* zcw!be9QdOVxds7xKn{13JHT?mvr!B@>$JLepO%+^>+JxhPo!oj*SY%qY^o96qP}7O z%5(`g%<5m^A>QqoY?_c5uNv-kfcfJ9fnYG6_pmU6a7Xep{%jpuL9nDzZ>d97r z^7*CrPi)+H@rwXAr8aj+=zYJ5Km0aMBAq(_O#yy#^h(SlJLJX(yAe;~W(qNl>xH*? zXa;lNXHwB5lNLz6^4HMcZAaT4;mLFEPrN|{g zlrr%-$crSzc*qg|D*>WI(ea$Z>Q0)h`rpJ88FyxG z@uMq{q2=zv?HaOVcu^6kc~fgTS8!xbnj0|7xE2w!G3<4}yaacC#CsaAET2;A%+exf z+Nn%5f(KoAp3uuC8pVwnjX+bQS4}c<8s$#RVxJi(F9|Q4>(CGIrNdwH?I*506cO|B@bALU^rlPA_hLea$Fnj^Kd#n z+SWIgaQ-7Rxiq6cUOK!WHh31r{wIGLeHE5FbupWgNn2k6+ zLjX+-og5uK9^>gtQ2Tw6t=)SW@!T(o*;5wFESzw>s;&4sadSK<-JHQfzw>$57I9^; zJ25g{Th(0sNf}7;(+&N$*d@&93{_!?cDLCb1uKw7BF;#Y@hTw*2y_0coU_GDjvmI| zP)CS^;zxjy^027Gtv2kiiGafG*RK+>l_LX0h{#Ra4g>@VQO>Dy6Y7P!6Xjm(S^9(_ z+KO7q*zGMZDAOVs=val6QdFS)Eb-bzca=FiK{0;UwB=tTh0*GFZpB92T*^|nS6jYU zW~dl#W0nyZy6V>q6?*HbI#nv zuehjIvB4hLuH0Hna~<&y3B=s&)b}$+l}N6SCXK3RyY-$c>7U}gKdCC>KZz2J?PpJ9 zmLlkm-^ZueCx3wm2kM)rh$sb~&ftb|Ikgl%dg_7_{D1{V(@`>yCvZ50(6v8Q46zbl zj0BOExJHu5650mevWtHNzkw;KEqAGN=9b)5NH^PZ7uPKOb8=TV0R8XDU26OZtzf>O zf3r7tX{5n4nDwXIK6W(tk~QE1J9V zXFU3av%jg>;lEI^Y2hqx#Xe-kR>of?oD$A{#=8BOw>~#XNs9%iNV&8-eyZO%)&5Ed2)^6XlNCmT;VtCEZ0l+2~_99|V zQnDyZXhKve;hzXue+|^mlS!N;OJdI1zC-4U?x&=iVAioRilM#{LiYdlCsl)pRf!gf z(D=yR%fi%wSU0eMm-$|*Uv8yU6n>v5=~I;Y8M%R5RtSC8tE>GrQY4Y zLQs^7+@UBHIo_~d6`2N%S$7AFivq?%4jw?8-LVM}phxt%BCkaL9STxtl!e0@d_}|! zMQ^!(dtd-t2WY}01I=!$=xV0yj4?t}Qi=kn>l`3-m# zbZ9QTJ9ZDgH@GHwZXo;Cg$qwd#0YYN{vKdH#Kl=t_(*>alaqV)5>C?UrvGlW^idmb zucf}lvq_$=FOyy`mn)PY*-N=bjr~8l>(fbEA$vXc8|B!<7yI2h1!*A#2*t(EB9&D03*wa+!OaS;ZE8_;KWT*0;z#+HNo>am z+r*Y9l~~JBZiD#e*y1M?^S?}NGUW(cr0+|G1dLjn*cMvEHY-JJFF;W#VhasV6WZlW zo5v4rn8(uS0IIWg%7! z5cbBigu$T^zP8Nx)GYofLT1s>CuK19Z0|v;3Z12Gm{yekq+qPO-4oK3zE`d3yW7ix zx!lnwM{E1}w^iSDsrsZUw^TKr`xpdxOll`eRXHnJP-+{lFO?M5;oXMCBQCx)c(Um^ zA8(zw&B|y-fBC9l^v{8)?^x_?pyB{SuXE&%VRgrhPD=$n0DqD`bN_t0y3FDji?d*! z$I{y4C{vEBUPh~BXT3?J%sK>lR8feTVM3nnnp^Ybu!B+eG8_9Gf)w#iL{m{kUC%qM zz$GFtTx{rIy`V+pbdq1xI+mo$J>69dyS1#Jd}gqmB~MQ*^j|`T=;@g>hSdZIHo`=U$A z8ooG#(}G{J;Z#~4ox0f@{Xtp7(K9F`As5h%IT|{Jn{fTft#}ok*O3^aRIDFTfS4xz z)#G}FcpnF3lvji}bDY{fzR9U851j$c&n>O`rvZ1jcK`XXXLUJpDb0@mp0t9W8(8z{ zO1PhYlKLvd8^2$b#L9-fAKGwL>=H?a4+uFCuTt}=lLHDb&%d-k*Nt|WPF1F?OzIzl zu|ckq&CbB4ZYw4ct7XYR5Bb)prBsnrh(Mxl0<3Fb6?6%^`YZXqmNmu2Je%PRiLa+h z>2Ax`A}`bZ(qEt_FyZz!nBfbRn7)Qd=9O!BuH^*IjLK5K`;7&!OAyO}N?C*I;Uz7Q z3VwtDmi1b)HaVL4B-z4r@;#4p0^oge7W|Z!svc4RkU+M&bcr7~O zTzV>WQkWNR+Z{e~@q$CT_UO*~u0$4=NZiWvf@_PxcHuTHB1?l*qidC{Kuy!IX;u1E z+LafbrIrxMwv1rK-)N8^n5qYaqDN23c_ z7b16|7>VtnHvwgHc+*xQv33wdaQ&MZT_cHL?Z4@c+{f#!L6IV4!jMt%fTw4hI1&t< zj8g4>KK~z?Ry6B+Ui%X_#6{QgDd7HOzD8d0HbUO`6d_F`I)&DtEs(pC&|!;OZwjwZ zo<%C9dKYEmS*U3s!^TbWX-aK&PUuoJZQmzAwRiG>qWsZ9b_G@`aE(<}l*$#0Z0@2J z7&iYb>Xj9$)GPjH2+Axd!5su;$50P%XY{GoXp!kOe@=Llw20w)EuoIcbc!So{fTDX zY-o_z2n^x=`*sh0BX z$Dpasc?gY`q)au@bwE~^RyJwQb%Tv?qBQ($7TuxCajgG~mT|2C~f%p&>*^8>s1xc5&k3}}QsgeE0_%4t`gGC!7g|!ikEqWBX&*bOaGQ%u9 z-V*pMc2z0@-|4zJ1v~D;6V2k~Frb<6koW`e%ZiuOYm<7F$e-{wP`>NukKqqW0+=&$ zStjdqlsbOn%ZmMoelJ`1YoCptf`&8m`ijgDqFGKkD`hTcV*vQXA7@=>%)~UoU@k#6 zEXiPRnfzGUYuW}4Vy!eiZOt%9zeK_kHm5CC>^JZN`=JF4m#jbdxdn^BVV9*$n2w@j z^%(o4TnFVUZ~U=Az+~Wau)K=B=U%1NO3K1=5z|33SOS-ye+rX>El6kQiLqWm0)H{Q z$Q`zpH43QtHpen6Ug~KR7L2v1*Ic}^I88;2G0fpVQn^i{|5u$5STjhivBwn>`mPy|ZG698OaW=XmpN&6y29Xt%m< zV5>QT)~Opb`v5mZ-RKSr2s?$<8K zkOyR&T>1wBM}75@tfAD_ZSY)c;xAR><9Xz7A&e8w`#UbqnD@6qB4WqexK(P*7#M@+ z{r&VW9iN`})!|9z{qQE?HICr#j-U0DiJy9UwyRnHq|8}A6yge*ub#&HVDU1IhpIEC z@KJ-O@E85jVi6V;m&4avxShHCl=&A!eAe8Zj2FYi2wJS(+D0ZQvn1$=i~nQ4v%??m zILn%(S2plPa5^I3Jc>O6*AXh7+?kjl9+2U?Pg%@&;_mdYf%!@zi-NSK4YECCwA*0G z49zvoYA&#mKzf$(y%I*y*G9`%AUcCbVEjC{wfXT?HCZm!bWD*s# z7P($f@-u5lMeuT&#}k*?VUVt-V=G#BaWn6xt`|w??C_xf4EJW)`L*!Lv<1q?Q-j!{ z*mf|qDB_TEBW$LrqC!hDWrH9$Kqh{`ZdH-0JR-;mptr^DU0pk-1QD=@grLx(c8L|h z(&;u-vfq6H-Q;)n*x0jy^1D8vU#yk|OuLS#AcG4&QCq%5z?iDXbvNcyii}Z@ ziZz?`I6Yz|v07yuQIcG*7I{sYoW{%)!3LJ?*8rZ42pUNFQXgfghfM+;eoej{U>7d( zD^-T7fVFVIX;Zm^A>d-XeV0KB0@B1|Cs2rvmyz2>fpCV`nVSio4Lh(fLPo)qD0jG) z)y5AUBE6(Vt{^)828mlF2X5y?#Ih?gs!InVb-0wFiW7M!NlHRgO5hig&BE*d4LVJV z`G*(_{n)PJtFRSX0ZeplYM?1x0d9(s2W)B$6%#ojB9eBn5`;;+QPfqJir{KBJ5feZ z7_f>TfKj{nOj?$M7|5S;+t_x52KMz?fCN<}O7wIj=%O3s6iU1TQKUu6kDH8(SbX&f z<;N)}64nmkl9x&Cbflb2AuaYpru(#nHsDZ2ro5=+Q}zQmPr+0@@BGwMy-$stFp!Do z$ndhcj^I7wRE-@2bE$26wT@M`CwZe1xu#*SfHFkqN^!)S*5Ii=_ne~nnh4JLN->N7 zBn$VfikDFM5eDzE>rmm7@TBhQ8Mg+jWw%w<*-|?83=}&Cqi}l*mMt?gckg+rDSsc< zH;|#VQ`Udf!j_Oinzo_(7JF&FmLfS{!fEb&b_oj!Vf9sAWsXBymJ)JPuy8CAh0t8cfvABaZ9#l}u zE~QajlDIL|;H&0@7v16rUZ!7_Imz$BJ3>jivs6DBRx@SdRjmWmgy2QQUct*K^~AA4 zO4y8un*&w4)^rcA9pM%mLFs~(w==u+wSq)SkJOP?x+hlvPW7U0V)%$odZcO|-n{AK zcp-sQf_Rc8UhLgfjDi1;y*Gi6s>s^LyR$$7!5b725iuw#IEsYDA%L12x=A;5G|J+N z27wSfcU=O@_*m&_x=8z+`6ag)~#E0s_InLsdG*VKP*1Ko={2!E7+dH2xtEU!sYLU zzYa^I$4Uv5?J%}Z2jf+Y5lZn1t^GFrcChl>^Mj>Hzm8EMo^V{T3j#pkPj!|V$zSmt zTU3Fz{ZB+)8I5b9kJ9SxRN zIDG59tSL-Z>Z3PfLD9=q(12kI?GFl%Y#x*t3rcHo!Mr;}*hY;Rp!xs6*`0MvA=7aV ztQQL!@y?*Kb^^Yr#}NFRG`jSvJg&&<6ElzCqP6H1^^l2jg|IYTR)eMKm>gjg4nz*D zWAXrF0V23y!Gb7QO%eL76GDUqjo1o5JRMD zhm=rjS6khz5ACrOXNe4%WQB?gjc^UkSuW4hPI#W4d=AMUC_B_2!(=>t{$G&?_qoqo znGeso*b+ym)iX3YBe`CO7&snAC!F|Qh!#3Rb79t*uegVSsk=k!Q`BwrArmt#i3}k# z`Vd#9)yy%zo(4HS=r`;#CSV*8WQa7jLJO?l;B0a1*^Ph!hy~h1M2`!z#-L}V3l`mc zd*Kg`&*3Q~Y1$GVuN|RkA*O-_hbupgkZ;L}e%n@z`eOVXW>j1S-=HnvD4}(#k(^^z zA+|t?=`SDWC!|uNu$jSz!bZcTJsOJ0YH|ctjeIn}KPDGP?XpgwmfCH_&)A^9QRQ#c zhjfOD2Q+_%4y%UF(2)67r6trlG~*QmPm9yqKTc0R#<~TSvjvrNG=2W6D3193#t|By z3u33$G%y2DOSv9HY4k3%eAZoO@Tf^ELB>HWVVZ`$@O1?6HOVAcZ;=NX5KLbua~Qmp zZaA>8mp39IJQH;#WE**Qgof|9#A+Ej8b{7GIYN~&EFr1BGM3B6D__Q=6X*x#)YN6t zhh&_E*KI>H9umF#Ec+1KSyt*l6(LBewCwThI^1Gdzt!f98By-kX1`gk&26@oYj1D= zR(k-IKCo&qx4zn)Y|nZ`5u#{?=}KhO>^1%oC~xEnIPLqVkg>^-J*VuoRw`6I-LID%@R+(m1x_?Z*Qi#ezb! z4aG`9fM9LvZ;H}Gii;29p$iI;6@Cd*8z|_0h;V4ciM`);^jwkM>dzN&a4=rSR)B7N zF9xbJzdkn|)rVr(TQKN@RnRwOLNQw=6b?)%KEw8|IiWB)`!cWilJknzEY2&mntGJU zWbkW#PGo!=Uzb(>LR9?EirI`e&P4!41Fi(_*v4jK2!UoHq*L$|6BR5paQM-_@cCbH zF13wO5Bw4-wZ+`mQ#Sr~Orn<|4NQB>)UATI&?@l-CH?TTk6J8hs|6b!t?r+3xFb_5 zDh#MT^irB3dODwWW3n>wITK-+_I%VwVT8IdJuswJZzI}Lm>l6(AHgIhuHS%0B;pt% zQAD+tDUs)qH@puvj$$^D4f}Rf)wZKSA31k#qi3sHKyE3$L zKd}8UTK##2)F-!gq&|-!_x;S=C+aiLiTy~KA@;Nv+}-~tYn1vWtkM3EI7YTco3-h= zFkX{=P*!}cZqz-nI0+`-*#Oz*Ao(bv+?HosHp|{al^t7ekiQM~_|u7PIbQNhko68r z-VHU=uH^TB-a*Nq?EN2=eD2azeHPJAuKv6iCgdpQ6!UEqv&r9vwI#}h9im*6mJsL9 z1O59Dj#~?tp8hagj2zfbWEUQWuI&oWfe6AEutV=#Jiy{U8@It0_vyG{v#%>upY`C_ zTpWlvn7x71QGEAbXD4#4`G=#br1djXDRrhBZ|Co|6|~LEbq4LA3`c@J0?zbF7Opko zq#-1^mJWS9{011^uo>D?t?E6zM%gO z^(ad`<;r6b&uwrGe-F5LXR>&Xp$;6OjokMLzl++%dYNfL_RupBREv3uuS>wZ;0GL` zoRN6)3_e^lc>W0wCF~bXw_rxB^1O;AhgiBGFqHB4T%_gQ$P!qTsFG&Gd|1kYz0JW0 zXOYxMA1@aLZ}Xe0H}Yxe_|CAR))1@-(dTH`kK<_gz2#dJwhCMK6xQs~{1BK#?Y`P= z7-I#OcN>j+2`mx*$he3s}QCqS^9!V1AzL7Wt*2@5^YFjw}6$uT5D2o7|zeJu$X*SW}W`>d95r`*?YsHH3 z^mL389D2Ip0F>wPP^)4luXleIGK#Zf5u|dY`CrD&8(o936D-OnRhT3; zO7@*K|3h4bw$Gz}c$*~;Tazw~RTNMFQOZR!*!trH1B=@F@HQM8!~uiJgDVVIrVHlB zYrbY_QAoCC6!HMP@;ve`Aj}98@=oo?W7wCF&Aoq^@?m&e#4NQMt|~CsfMzKG*vEff zH^5(~5NIL9?`Y*Cm=SOqVn0>4dTf^&r%RP)|ZRa7s=SW{Ta5 z13s2D*#qcYG1@B4_H8LOYVS9FnZ5&BY=^Sl>)U^x5pweZ^zyqJSY;_N)3^U>L(V0& z*8BEdW!m007CnPbPm2nM=hd(S6^mTP zp%>vk8uv@^bS<71LKkIGA0B@NT-4El*v${l(Bd0QLNf+|Ye!!0`UfqRF^#sXZlr#N zJ?~0Jg9QNHxXs}VZMqT5e}?yQS+PS1RSRv6r!Nf4Q=;38H?gREMsKX?%Xsj}zOq)s zo(^%OS8WBi=gynvfKnR7PHrK;3>$YXWSCiZLPiQQg{`ohzZUzyVBAjH?#@|{7cJiV z^C4fD9lY)$oWAKhVAYMuE~YepM07ehpIi?79`Q`s$w+My1`94Fx%hkY2JtW;Fq*JB zaHt#%dnLcQ)i#7um<{NAr9#8x8@;3R%!IKmnfhejZDuNy*_0fx_kxB5G0e1fVweRG z!%RzxVP4Ws4AXN?v@aA=U2LrK#njx2geDH*b{RV%K;I0mhf^E79W^>pq&T5uqxm5M z#oCzEmkUV}FL+A&IIXXjFT+Yxd$1Zo#x4Z9`h%GLf+z9Lp9=+`(fvgM=(~YCuqgGs z9i0K`v*(GCPEBdVxDL%GXbAbXWl)*NGX&CLu=F=?xHCAhe}>bTJQ$C1U`|V(_TZ!5 z&R~!JcrpM_XlP5vvcYp2%>(uV`h;ZFV+FV%Wj5ms=HQKM3Zn<(^J~b)2Y-He4`j?T zv?Ys>4_7F&M<0syH!RbQuM39^(ZTSbJq7#FoRv1?P1}%hGzo#_Xftds1SC#n+R2e< z6(Sx9YgVkq8?Y8Xl0N@WY>0hZ8>}8=rJ2HQ9-Gc1*PsZEui~la01bqgL8h$`WQ3V; zg}Ti<$7+FXk5^!b(-m?;wiuk2BUbl@{AO3^%$x8KZz%pA9w8I9AsJn`ct&oQBocFX zv8pm<{1q8Xa~3pvc19@3(=okM>krHuU((dPF|p=w$l6lLb3h%86VS`l1oR>`0X+{B zP~U>-&}X|Q*Ih(iE!TQ{3zMbNtSUX~B=t2XrKM)#SdMA_@7b2PBs*atp>|uVaFW*I z3=1`##`ZZEQKOrMZUeom$za9M?CCFiDP)P`$gl8yro6zf*xq8>?4!zaEB8kY5zTmR z0mg;+V)(>`gIcU|s~^M3_e#702TB~~)Qf}7E+SvnC*d`_WsP@5P`s2Myg^Jd z9-a-37boO+TDdgR37AM3f2e2>F7&3X7tHgaUgKncAvI6H%E3~0j>9-Eivyr)pk1tH z;rVieB>Fh+A$)9ye0^*ps5MMpF=lgxW{^^9mj!NkaXlY#f;4F<*(O)% zn^;GretSK(C@?{RhO2Br&(i2{x@H>OtZEGx#@~j3kb9%e_y%TXn`yj<1mwN zY{pR4KNT}Msh=hLC39)&LzNgBHvfr|l1~#a>`~F{319NM6t6fDems0JrVuD`QM|+= zo2W{>bh9dPeXs;2jztUg%`CC-fA)IDMvIyEB6wldd}$P?KrBj@`4g1c6@Q=d(sfuX zA!XfUwDQo>2d?v{@pCH!BkOnO9Q{5kXLuX=}jCoP!)Z+Yi zh;)=%+@Da*$nzl@MmdmuF9ba);rS-`+j-=<+(DwUGvZi3$^1F`?QjfiajY9^{wR=u zARIvL=(pWr#lA*^qal*P{g$B>lf&pG4#>fpRwJe{kVu zBpbBDc%TfF5S+VnFjk`eCY2N%L+d>jZ@of&p+Msvozi-bp4@tIEaf_By=b`TJZ!j5 zlr7P4!3sCIr^)@z{N^bUtO`ZHqW$^}@^iVY+&7e>o^bXvcjCYmlRu7T`h&W;EHC7rH{vwSY0cNlby@wayDT7=4lKFUnL1jtE0RaL^9qizp0@4L=IC#wL`a zLwas1vHl3NBA#6;Va(sY$V~A4+!sa5fJim`{Rkcga7kV{Vl^dWc}APkfA~zwWIFNU zHud5ec#-`km>EpI>)sZ2&nNnA$?=WW8Be7jc@xUlUOy6?w77ocU_3u)%>LPbrq;JOr7^fJ-ta zi!{Jtq{n9q&fxr{{iR~sUn(wy{Um-#shx}DP%n68FU%wW2?DWpRiaTxKjdh3!g$8< z*_|>zLr|wsCLOl^5Z}(|j{#!@(grEF^&dBT z5Bw9b7J7jjk(W&R*8aIJV`BfTpZZ4ll0;(h^=eaQWz{7RHKoEP=~+`|c{_hn9v=G( zhz2turP8KrDfI%80c2wmcFNB@XeAXm9iwqed6WNE!~w->^4}(aE2u#=s25*s@(-3E z6wtp*-`I&I)tsMk9PSFDSAD<&suk^NH$KPNRD`iFfE5@`TX{NT_n;i-i@}1;EEVO84_;WWtK#j!EDxw{{Y9c+n2^nagoGWLW=0S#t+2*LEC5P|ks12;Z^;G)m6-V22I zCPc@=!}-xGiTX-t1IQ^g*zad)BGf#l#pj@8*ag)^NWi*t^^hJ5YB&ZSXQB0LpxI++ zxv3HcpJv|lwRjOr=He{WZ!K$NJkCkOrbia|9phXDTju2eVH!X2E5y`;H%zDI>k={4Im!F9h@{mH+BanIbhJ=u?dkZcnoara$3JBu|hy;SBZ5i6q~AC>hrF2 zKVQSikCYTdR46{-fSbn3{9VqqiPsBIF3EHib}UpIkohEfE9cAS=-&IUh+XbELto3@ zj5%a4SN4Yx#>E^4)yia1pDp+f>YAT}=$X}zov(>meH@w%e4{OcoCP=JR`r2+uP7Xb ze>I)y2rfwldUajWe5eNEJ zhwu$4)CuUkl_4)|N2<>fX|!9kFJY|7*?vE=T~{DY%vpbY;F^??%X)eG}LY zE49^uLt)p+9DI1CA&_b2oSUg_t`h6FfLKMUQj_NV%677bCGm{LK zjIeHpDKQfnLUf1>lr|L~jpfEh6Blot3JbM@h3mt=!*>)4o-X4@I>1COE8;(aiT6>{ zzy#<$TL3Dum6isifm4Xe7FSHZz>WVVB}|* zgeUNcGJ}+j!154sHHpMv83T#HIER@?W{LH?XiqZ&s3Iq_k&iJ)K@{&sQc#QghLrcQ zYk{gH5k{XXWVVd=kd&j~T@M6u{R}~$h)5R<#<5d~+K_fj^N;EiUVH)tW_--yevPlj zKcdc5L~mKZ)SK*HJi|~P1}kDdEVATd?EDd=eoMoF)4KMkHg;Aw^SDT?H#GYWtTn1I z?L=dl%a?;sD;n@o_-Rxt=IqFa%DN0NqNyFO{GF-gIYg>UeHIGnXgbp361Yp0f`Uru z#H4VCkvC}Hu&K2+U|V-L8h?|YALkA$Fh%MUsO2tHV3h|h<@$01A+nnZ_6mgN1B_R_ zR`Vtj#Ev4r90(BuftT)OT;&X033%S_Dxu3q4>y7oC{psr{ zHMEWsz(_S5P^x!u1Cq=54bEIsYdMGUp1{FwW@*g4x>H7A@~tED5yg;_Zsu?)d{%ue zHB#4;0_y81O(v&6xk6G-{hS8Z|b{tO}5wAmd+=hz*_L8sk_f1E&@$$OyY zO5WnFi$aO2b;$l3 zI%tv~CdhdL$p>k%Nn?aU!M~9dndI1lJED>L#)maEfCGo6cm`D;POogidmQ?t39(fz z@Wf=m(y!Mi=#%vuVyoETVygzjDUGe-s2y%#Mts}K*j}?yLK79SLQKN*WOFO>9h5S| z1$VGEGk3INu>&zV3Wd?Y_~(4~#Z-Crm*g||C*faLv|nH9lgX{m1@Btcl#9@17lp$w z&jN4Ak=3xjYcMxBH>2UxOzWFFKeK*=UDKXHM~{a6*}>ABU|}v!zO`<*wq)j&VKR<2 z5QZ2L?@RJCQs?*NUnGvk2xgvXW(@l>&;`b`^>nnN-C%W-k07@E!83VxCR9<-&n@6) zk9UP$;xk!~R{y{klzmdnA3vrfgD7BqhMf<{1AyZ0^Jpd3gSLSmdv-|@QQ3SU!Q?ch z+hgAoZ!(egoKAf~q?a;@4$s1;+w&8f$YH~@ycK&8!A@9uXE;K|Ih(km;>r{oF<7GH zVlA8HYm_Zqgk(DmOfe+{rs>lfi_^tWMigN-p zyMaH;9*JoQ$$=$sL+`-+b8JRSptw(9=DBfuVyu6fD2GNmR?SHJsaxnIME(W@Kq89f?xv!;B&A#bf@CExb$m@uJ{rSL*KLHvX zu)h$P@gktYfc?*b87~2H1nhqa%y>CCWdQbBjt8c!3@my@Y~2U!e{G2N0s(?)l8H-viy>}!PZnbGWP12fjepRbqabwPVYQK$#bUR@rr zZ!j7IGd2b$Z3=ic2d2~q7U77>qk&0{0Z$XyJ+QJLuy4oNWPwS|&Vn6It!PJ}WJlnh z*NpA*=yeW#C2urkJ~NH$e9V7>i_u=j=9Yx!4008O&EX%*kP0BmWlRZRDMAuhHBk>v z#@LGuc<2*>uC>8NN(&ASkmi!?U$mh^e){K?Jlc8%C(kf_jlLW!B_Ca@p<;#8=mayX zxzS8#uoLXH8nd&oOWVt(y?g}9ua3KR4swJ%&rmS;%o)sKc~(hqHs-xDzL$hXXMkN_ zb$uc~Pcuc|k5;GeADF|1+qd5o{(igsMB@2r1uc;L%!WbP#aT2Ha~bwYnVWqj=@6Yz zQyT5%7EH)7(z4ZsA+jZyGxNpyf-}^oGpyxQjZ5U~j1%%D^iJgm5l_HRB0uHH{J{DV zM0Re=it`>48EY#^zX}=SXR$AajA3k9#eNX}WEx5nyiE{xO=$E5#FQhEqX5%RVv6+Y zKg7=-G?Enjpecg00JM0@h$VdfU1xe1Rut4iR-^9Es;3RLdbZm~{PO5YRT%r4{B?XHISDo#Id0&6;lwx+D8!pEhByCLZ!2HS<9 zExSKm1p|wvgr=4VCLiI`=G*LrQMAJ2~Tad0FL0* z=+T9MQ+R6n;d=69$m)X1;##b!06Xh(vYIk(UyT3`j`xEJoaTY`-nYtqi+YjsRWEi! z@M43#ronToZfwyZ_XR1Mu2ry;Ja&4CvESJc0qIA&9+<=$EBr5A@ck$9={y6#(^8^; z(C$Di_c&}W=xgysF=KySoS)kTKraO1Da!cr7YQ6`{x*!$%5p7nk%Db~rS(dd-h(YS z^<^+zY*1cB@oj;pNAqUXs!>DD^^B0PS4^&%u_}v*0z>`&slb3@T+vpLaI7l%EO;Lp z(zRF>nEkCEPE~dI-IB+NmlmkOKMLd@pR)DG-Dmmy8xl|+& zyn;K#qG7I^E4PiD=5kBx5@+ygF#6aQFz04Vup4iMcVRv$mezz)fRDmvfm}O%$1-5# z7#>|K`a5ho^EKlmFv*}Y7e0o!NVXpZu3hPpO$^k%7)R~(ml$pC97k-s3$gr#;8B2Q z2Yw8(tp^%(Oh0uT{RmNcG#}qaCJx4GLtX<8kcsFG|4L6`! zhq1I29t>L+2SM(S?bH0HAp#5yr4$LZ$jU4+zKe81$?{~++kbX{%iA=KkwJO<;X z1qey9VE`^#X6NZ>8;KeqCfr-<8T<-K5bcW`7-kt5!-XM4WS%oq#S|y&5=X#&d4-KK+LaWR!s#g;W(+CVabGP-9d47S$Sq& zU?Jglh4(VW+#(`UDz^v^ON{Tam276$q`4H{UH$V!meEX5|HKb=oN+J#0L&EG9-KmZp=+!T(Juu_sJ1 z+<+OL{j`I?m6`;HkMnN)#$DP*S6y0f7>~f(8dl9t2q%p+v;i zky&KwMw*FJhANLocq_K#<~FIsLKAT)6rOPP8F}thPdKZI1n~s)d)pmygBdTjAp)gZ=aa9`hjNpI=Ds?{Uh{YQ`A?C>g*XsJx@b45YFFX~$r@g#H zIR6IpM*k-ZdeVe6Hl9dZAYF4Bfv?%9s@Qa#$!jliXY zI{TsFE3nzaS${r04!Y*PhZZdoCe6d8494S$xN{*y@g5YafWc~(K+VwzDQT!=E!G(= z4l%&>9yH|dw5UIQVyQkkJc-mEJMcKgl?gtIRY>#<3Iqi0E&MPQohjr(G0f_1EOg4m z^`!c|0W3vRU++e;)gk|UKs5%;^5bF~&ms{l0}^5zLHIdi*ZkFhu#MmlMZEcKS^$L?~(A<_Zp=`W{w0P!ZWl^$_dd_3A|yb*cytBEhu4&Vwh=UNDvII~E2i zb?XuCzPcdmAqy@xTqXDcfsXA}1)wk_1_=QP?iRWAYe z4ST>vv0zv30q@ZJZQ&j;b{??5js*i0fH5dQLYpe2W^P z+b~cH5~AJ@CUJ*wjLsa7+{PDzCC1UeS8RD>J zHfmQOvML9TSCP`G^s$djbv)2KrF_Ri1y?b4ljz5BY=ABlA8P)am>#?FA;jV5Il)dRDRKMZHHU{F!3RT-P}Kn6q}rno|vI$#%h4 z60_dJEUU~fLaaj5HXHgm=nsu}_}cod&tn`|$rJ*qW~Icm%(sfMZ~~gy)})4f(qd3k zeo2n`{ZKw3wXW8tAcUlDDu%LT#?q*YPi?nKZI2l7XA3#O2#py&zpWH3S&Y<3DVedp z>9C4&TRbZRF&&jmXnszCqFl1eBJA{IQi0rDVtuB=EAkC6Hx+5cw^S2jD?pVR%D+Q3-_z6}C9|2DXCHAv*hMt!=7?_1hl^Z3$ zEeX!da)xaE2cZD0ac4nsZq<3xLV=iC1}SFN<|38SPOkl7a*c6~VlYdKP4?u)j=NgO zEcH^tGkh(`K6`|z)CledUT}r_gI6{)x9S}A0r2Ql;&+&dKZ3+djG5To5ItJaqxt(F zeuJwBqyQFLn=}1tB@S~)O5Zg;FRIrwT>PzIg^1I<|`5;~i`nMxjIOB4_Da-Y+`H2VQ6H+e5x3~x4 zY*ZE}xJvqzwbA@!xFj7?E=tu|xT#-Z+d9$S_-(W|7IiHs7Ak9-_TX0}EUKAG<@HHa z9$PMma;BMyFJz)E?U^+f`6v7`AP0pacXdps4;HpC=x8%Ej|Y_z^)(ZiW08lq5!E%Uu79`HUBRqNX8ay zazaJGcQ5pwYi>r*&TqYvMJl9)k)WuL2Yajuy4GX_ZELc)ZPqy}a6?95ex|WUwoT@D z;s(bJ=AN0_qQ9YwoCV#rshDd%Y^vo3W_DMLm1|GuE=utka>z8ezrFB0@-4F5o}$DD zpK+LHn@`xVIW7OW1f@_Vw1xpCp}X0$<_xatL-8tU0cI=je6?!jUGNdKaxkKA7y%af zfs*u@;2*9cU1Nv+IW!`%TmU+S78~hGxHPgI>?Ongg4w`ap|U}zZ0NtgN`0lPd}XGP z1>lcW8SkIaKW`jjP zdm3C?u0P_D(8uB_EkR28&C;^KunuK}*f7+ff)9Y1gky+O2f+k;&XeP^KF1n~fLRgG zj5+KeaT)9`MB?F=F>FJb-N7V^Z`^aCmd9t`I=I|P>fgl8k}Ysi3jG}@r37Rc%-p>v zF|)@Iu>cLu7MfKEmEv5mYpN1kH`(aqF2n9EF~IKd1gMY>_N;?jYfw_bJ_oR{$Z2#& zbIaukoW}7I98gbj8mw#`O=G#ajRhRI{4env_`VmGwV_p)Evhpj`(|H;mV|ZEUakqw zfRyfXEPI~9OYSbtV6M~X?({Xtet3~1XmuLcaDx|HJvgE;H!4;>ScN21-G2NBOQob+ zYkHxNM=IbTx#dXC^Gb9bgv^BN_nKqi?$G#S7#1IMg@&C+4xulERN|YBd>2!=3gj8{ ze9qX-ePU1**@2YpzT|p1zMu7d<@d6ECOSPyL@8|^t>#XYG>$EW5w?FA_u&VEYEL;R zUsc(hm*p(j>F%p`yxJVte#6EW243tby&s-~y2irLOWu1X1fo2XWyb?(Xni{c4c+n0 z$W%C~>pch{xQuyOEG~Ac9M-K)?Pb_eW-AY$6;IcC&_3{A?iV0{1!ZTh^RO_RnMS>3 zd%?dd7eUkcYODJ_2lo9~6*#Kn0^qUg4{;oFW81_UcF3jrGzyq9R4W7OT4?KxxhXO}b3-QSRfA$1nER_@O zXjL+<`|aq(;V%kh3++MPGQ%(9h7Pz)A}PrkZlS#x_Sk{t_WBOydO8dE$179JSFoN& z0jLGRodQ`-%Ms7+{<8Vi7yHuFQM4<#2`yVY&Vsk+-xQnx;rdb0_;FS!Q@3P3VUZU} zMLvLoc-5fw7R!8Wm<~ms%|f3gcLPF)n^7qi;1A0VNFX-$bQBz~$^&^pdq)PlZP=B- zpjI=32?pU{eLS2Em8LI2!<@mM396;}FG2*6a4cnA)_pXFhXDoI$GSP%g@%S{Y%zZq z7p7bB5w*(XN^>QyXW}bPQ-c>b_BGr})vZw72CG}1y5*`Hi-DLFpTdn?u_h5;=DD?v z{-agV0}Y90AoR}9o?HX+wE&aa|1DTzKZ2{f_x=zt{g$rUKE8r(W0wLl;p-Wf>i$Q#dm(6SLZ1!#b+pI;u>lBl@E9QXFUW#aCp|cuz)?UV zu$b2Bu7G`p3JcD-3}v3TjR+W9>Tywx?K+T3%r&qWg1O3Z` zrJVFGCK#fcN?#1^agJ}i8)rVJoc~7tGjyZww3LR)kL6A#ZOXRir>F2=E7T)ENqf!IJGC0z+i(4w_u)0|<>r^Zn*6J;+dp%yU?jld~M7&1LW zpsz{8@0dA2qo`(!rynF6eET$CTi2?dI`w~sQu7b>+q0=N#So&Wnf^{qomobuB*{#s z)S2(f<|`rHh3X8g;+hrH35QX#-Gij0c=c)cm}F}{Nz>ZM6E z5ADx@_whV~5;~}l$eDl;>jE={ZQQW0l;srULU1aW|36hP2D2ufCNlMH@> zjNqbWYAbmKyfheqeFY}xk~AU>k<)zptt@7;VgAop4Y03mD&!8XrKxZPhHu<%Z#Zn!SEbnVA+$VcA=v zH(&zDeJrZa?VwT|+fhgqAHcv;mMi8OiZ33^cFAu zpU_(*&-`tO0kaXwi8!q?aVfzjR$KT_O&sx?pngHI4LlD291CK9Jp?w}Y}toAos&;s zY%9FJ{!|aWi&|jp4@NOOU=w~69zq<&l?R%zG_@InBb#N3TGC5aK!1fND1st}HS%2Y zi90JEYNCX*sMhe?_hEgwn9)L+1A4P7sHP?@%>P^Pma%hmxjdNUZQt1ZkIU0;{p4v$ zAmW2xSfx-1QB@*MF1&9u!i7qqqpE(d)pWr(jn2YeJ$Zdu{W+T{mY8ZgO*G`c=Q5Q3(v?U=b#t!Csys%>zUVLou-1SF*s4ud4&vq3c2 zWvC0x6LZi)Ip=P6pI#u^Uh`mZR!^Rolaf)qgIESgwdd9-RFL<=^uDwO1V+axu{x65 z=s64+r2@D};dw%fmSHb6HVGRuFvx-}%0g(CnurKfiG<0;8xc$*?>kve@Wk;46H;Sm z{w_#TO^KWX0-o}mV?nkIV#PhCY|XDfg+286^Ijc2&r$F9G3NJ~vQ^5yH6d@9l78~x z3E$5(--l#3PynT1m4>Xh`2J5l_r=bee-__&OvB!4w{!QQdZ%SnWAlc>^qGJ7bDD)k zN{q*{I&*iIH_Y>8(}Vi-DO*i@C;Z+S>ZvjYm5uGpEGan;eqEMQ9t`w9fiFi8wy;k9 z{G{|3v`_z}=W~tco(AM*TA7c)%} zO^P3@3oGh8x6JMc=5s1>B~EG1GwOrHU8A;UY#$mu>Zixv)C(G6?(Ps)3D{rw2qsy= zZ~fe2DQe6Z%8l1py=?X~a(ZJr=XJ>3=Vk_y3IGZG^YK7tDp=ejxj&JXEwfB}Jy;v`0IIheCh4-v&@=wGl!xV%5<;Vz* z8uH(WkaYhF(|4=*o-%!9;$s0AbGrEcVEQV=_q^%5TYP^ueRIXf67xN`_+B-A3&h76 zDWBahz73|&D?Xx#&uYZC&GZGtx83wDg%3=ga}|H5+<0}&!&n>O+*DOmt>&o|v|*I_ zS8#c#6z_y8t;VYY<+pl|WK@6qv5zWwQ14W}%r^vih1chDLdHh<@5v1ZRVkrF)q zKhi|B)zaKzHGb7Be0QPoC4G0d^WD?VH@ls0PCMV+cD`S<^HsLwj+V3H|LJ z^ta%cTW!G!WxDp_7Mn4l499mEV{Y}eWmR1gnQ|J|sQe}Sf5T_cVq>f}iPc$qa0DV@ z!?F;^c{r**a)fj%jI|Zo0^QAoqpy`W`F8k}GzKKd)|29jNF;@gx?;Zw|o9O4Lte=S}5?=m8+nSB#6@P-ntno=yeH#)lCFVS3%re*EjT* zplK@Tj}mmY1aY`R@{dap*PGtDsVc}TK{WK^tt(SOl$y~u^pv36RnW~6bfyH|rh;(T z0%FmIg12sp3K}LsXGqYkDyW|XQRLfOcZ&)-O@g=?;;rMjihTV5SKmOjeQ(`ODu`=P zeS;=JH>#k2NDyE5*4?0jwn$Jn37V{eUX~!*weZ$WQb8OL^bOo5_0~;PL52iz738g( zz#z{;eM7c*uNUuK`UY~symi-!_f~xal}5dFrQ$8oH&9C7TX(H^uhKVUiuW4vUaoJ* z5O0Zi^Yjhr;&q9)ySHvU0IR-%7Vvc62Us=zjYIs}zQ~8SP7D@l{+)QZ_FM@efdQ7d zykE;1x3^9imiNEJkaHx21PXDUWJqrbApt{(!4R^JymcgS2$|0i&NsbvB!CE+!4Qg5 zdh19a5kiRrQ9<|Ck$@sZX9!t=-Z~Okgj~)L@@c(wB)|w^!(Ge$QEwdyG(w2~L&V_#f{<4j(oI4*z#!yz z4B;lPw~hl4Lb#DAC*OJNI6zrE53GgwA)a&avUq;6meNSxIu2|W&$PARionM~569Q9 zCCk!V#{tpeDHbg$Zyg6qi>F{Mq^R(W11Y#{BBt-H;~;DCoVylWERVXbvQnwB35GsByF6}a&S77vfivRe=0o!ROg2Lj-`Tlos%D_jGy$YvUj+6&RjsG~gQ zyAw}C4r@_k&AFT@W&y`e)fWafNElv40?t@NNx@rCpuntN zH;xx+t2cC$B4E`p$?o5))kKjmoLHy(en`_EdKw-`v9KKFHtX4;QhxF>egggA2Z-t4 z0*n|fwh@PwHM_`c_}kNG7=(fmeM_Z`EYHYCuUOkh^A`&DM znF@ASnKTMb}opNfeJKit&-Lfmfxa5WnurnCwoVR!S3j6Y*_ESZ|-t zT?mzPHH?}{3(d90TNu;UYBm9vNFSzz6X7_}{CR|;dAV<5 zyPAJvN}FN|MuUl2X;tpU>itBR(HOleiE1-ArOhieBbFU$A-yyl5#{@#%Y4YgNjm_Z z8*4IIH{Esb)*orbMcPR+{B(qWZwovn6{v4S=a4A?@9Rk(*O9hxa_}X{QE>dN`tE<( zy53c0Gwv#bVQgdkt-d2!m1800G8i9;p4WbU@&)E6jMpadI?tmiK+H|XII2FzVU3uZ zjK|z$08+ID?<$MFWu~H6Z{xnDzWWn<_UATZT3JZXG`Ui~nH|#!O%RYd) zPsowUwA=8AV%8@8{>`JvwC3l8!ld6p6~ckhq~9x4$oGh8((k1ziJ+r^I)*h0JNT6?`zB0 zMEb9l9I}P3`BC4!U(eoYGsc&NuFEhc0NWXw?-e{Z4pA`u%F98%BA>#a?0~Qp`HhLiWd7NFWyt1e4a#ta|D{P$YWh(rpQ|Hj)`R&WB^*!cF}w;5x~(0J@d1EtlkvErmWhw-LX^9ixC zI_D~=eb#g(QeiniOY{8_Jpo4m?%rq5-p*G;IMztM#$w~JG5m$3uMMSBT<@ud9C z`%PkQj`n{Y+W!Q!|Ll0)PAs2q%MUs}*bqtAW1v3!JG(E2jw+Q5)cQpZgY#|4vKQ?1 zd}|xH(|2@4)j5%ifC50;l5+qV>h;r#jq*l)ai?zq4}0{vRKAyYnI>F1@jjSsjrSAzF_sk_S^|HXGYnq2r1HcB91=dh!JrE-fjDYQA|O5=z(;0$H3}L`RwYY^U*>W7K^P%{LNl$YoqD zrNT+*#!m14Hs|iIP>cG`FR@K#v`9*{cBK1`TRo@YyoI5}EsUO^S?R5fm`}Zl=76!g ztG0T1S1vI)dE!1J_TM&)C)*47woo&25-YT7z z??Yo>tI0tE&d?Z)$*o9dsY(ZSp!OqQ*>Bk-864v{3%Q`isjm!x1}T1Ye8~fnXhHe4 zHLselI(C2R^leRt{q;0w_F-)A5&=s%Tt&E~B!x<}SCsMs>>GUFAbq6AR5qY9Bw6&k z$w(GzK%BHeLhe4Rc~m^oz$--PvGF z4IJ28vT{p6Tun-_YnR- z5GEA+IEZdp->yD&3|Q#l=%7ucw;-k? zs>X|^ahx8XK!3CcMe^V$`7uaDTXH^0^|BQD6Cr!u*a8uZ6VT$P#2H3_e5i;1?cs;n zS|1;W6_|0@*tz>Fh-UaNW_eGbLG0F;r)f)m11u5ql@qNkWE(+l%_O(wAh)W(iS{e> zh{fGPdeq=+8&TzoPE5A%6Y0^pKS__6hiD%pQrX?4A1U+*)M)&z7=_p<9;=5GP{j)g zDIlD+UcHTbF)3mr;gw(tL~UUz7DulP4*}C4dPO+M+vVYHd^RBb2A}l{e@b8P@YQ^F zMmWsCoN#vrW`;-NhV7jn{-m~dXwHm6nZFG01E(S>FJ#JNz6+KD&I?srLQUp75Li%5 z@%YW`D74U8Zq(Fn0Zbd~&?wkM zF%0Sf{2LfHkW|oWW+81#^x!azShK?jqt0-ev)MN?=0-^PC#mSSm3h zCB{GW^`NLAL3`ul?^xrh+HI(=;`CdWe@D-D)6+)J>!#-zJuTwtv)qZ3jhxj-$y4*x zLxG4`vbg7=14F;KSX81Bb>%Jc?LWhYQ zPfoesWXB{Wl7@s*cL>ZxXQxt$6W=Di~FkN+NGo|f%H!-nuGS{nzn^sfC)*wXvK?WX8cu% zp@*(L?wEE2#kFlj-t^G?A90S7?_j$7LfmCNgDC}CBa*QB!85AI$KiFvb~s{hc|P_X zPuG@wfHz^t*(^WM<*q$O7v*n+El1N=+tw~je6`=T3lm>0X4xt4LQDWBqrDJas2Za) z)B}xh%j+OwLfT+GTs1VUrYGnE-Yhy^4$%QnHrOwIb)%we50J8LBxTdq3@hUE<`bTS zk;3SV5`BqSA!P(sYTIC!50wq;veDB8AED7##I|q^^-qNQn-^Ri`h}H4XuN)OqnQ;F zLIv&c3<1Vs%{Cmy9)@5p@NKl|0}m~(i}p{%&u=vY{}|P{9>DozW3SqjX~UF;EMf%cO8>j#psG;Js z;eH0;laC!}y_H4gbMqm54#ZCST1fFo8NQGvD8P6xC{F2V~s^md{6^mk==J(}adCkq;sKpnO= zNpAhS7Dq~^#ag$dyRUS-R@yZR6pQAaN>4EYYCS1CZ{?#t1|LAGP7AJWg+vR~lGi z{KN3VPeCX|jWh5Q$Kq$Q@j1;qdh0f;JNLxsoc6tiZ{*j@@Ccq%!vTzt?_;3sgn=@8 zX1UF%(MK#Ysy^W5|k{A2FCHt7AnTY|xOSSouJNzzb9s_Vy*OY`HHH)=FVId@+TSCRh9mb-yMr>yo_vfRz<;(DRrNbAt zYDywL#jN zcc9Zc1d4HkaEOlEsqF3zO6_l0S6>lYyg4*Euh1Lot&Q2EtuC;IuH6g`Ufp{H0f&vl zg@fPmba!G>!QHJ-D_@U-Aj2?BGrx$lF0|E03vn!F{;q<Eq^t|RjA0&XK8EcGQ zR%G;HHC{0;)W^fREit}9^=eDVT#g(8zkx!%vF2#bGSUQSnAJ(xq?X{Yhl6QG#>2EC zVtBS2LvRXPTIKsl7mW%^bcK1kC~xGqf?o%Dd>HK+i}tV!yc)I#*zn-C98w2TGkz0v zzXC1i3@<2knjRds62#M;)(7tNA#4tx+Kq$2=y9|_9LlkkhxRtPLZe53tKcf2EwAGzL4q&$;56uC{4P!5>aBv$;OUJfiZs#iaq4Kq8 zWng4^JgJ{k;{b3lCJK3DUOd19o3CJ?CKha@*$HAhU(4JL(OU?YYXsbJ)Q~=xH z797>W7L8hNt=tjq8mBMuVjNTrf_$eRf&YRdy7o8@4*`eI)?%;O#roC!=Ovm%p8zc( z8N;9nGVB~zsLvF(3a9a&v*0yt$q2TJZ_xr$>^J2l%h%^FS1--~lwaV#&SSYdE# zYuJkAJ{S+5x5F3d9ju)|0=3| z-q~}LKjM@7APX^Cg@*5tTelx@TmKQ*8sTSAM<>+};=iz1;y>EY8mh`&R{@1o+r2cL?60FCHW<$XfMe}A5||34+-|FwhocdGa=sQC9L z;xFkS{zw&np^EQJ#J|3S_!mmXhmTY7M-e~20P{M0eh2YyQSp15`N3`dOt7!R-=Gtm zs=P1UuiC#y%DWCeg`X`Q#9yf5uUGMnMEu7(h(Aune^|x8DG~pU4&vW@pXBFe6+auk z^*s+xUz%ze^Bx7RPoPd{1D?8br9dJ;*V7E7c>4u#y`D-_%;>4 zi;BO5@yi(h02Z*PDz75^!{4tG{Co;By8dj&|7!>F72zNLf{K3=t$6 z_g-=D6L*og4~SbWu1{RQxDSbIh#M3)B`+IT! zP2A_i{daNyB<_piz9jC;;=Us8-^5)d?iz8|iCZV`MsYWb+aT^%asMuEleo>|z9#M) z;=U#BPH}gO`wwy75%)cD_lo;ZaX%7wzqlWZ`!8`1iW?C(D()BJekJbL;(jac_u?KF z_lUSZi2I|sF>$Sru~nywn<;K*akItkDsDG%HF3L(dxp4YihGv0XN!A|xaW#{p1A$Q zy+GUx#l2YEf#Uv5+{?thT-=mkQQI)R#~hp&o=dU_`nQ!d|*XMA9m@ z6Kchxyy9a*w4PIe(`PLani#1#pU}I6Y=qtj^zaXeFU~LVqN*mk?D3 zD-IEQjF5(LC=wuaDWS!LoP^wjrV_f7(0zo;2t7e)G9jJ}7;zDLk5CbzBZSCOsOW{s zT4WHR5rp~^nnoYW8g$otReIbq4x-d34Kk7r><6LnD$2ACNz-H z4nkuI)f1XVXf+`>A&M_oJVNMMLN5|pLFn&<9wD@!5S17!VuThF>WigBWG^(T}=Xe6ODLR=C? z+Q9s+xRcPAgsKUBLg-0C?-QcfY@~(I>x3E!MG0*nl!=9Lgf; zO9-7sXaS)M3C$)nl+biSMTBl9R7$9n(CviA5}HkDG$C@~B0~s0OlSb1-w^6c=y^gt z2(2d6g-|mg3!%M)T8{uaNa%Ay-xE4OC=+7ok#`C8AoM1o3kYo^G=$K4LOP+9gsvm> zM?z(Uo+5NFp~nb4L?}S$*Mt@m`XeDXp}!HjlhA8~$_TwfXfmNs3AqTh5-K8;t^pcB zs5_xSg!&TdPv{Cly$OvaluKw5p-zOR6FSxgsEW`xgq9Er6IxE_Lqg9GdYjNogmw_x zNT{CBYlK!4dY{mr34KNASwhDNtsvALn@f>L2;~u~A#^#Rg@mpmG?&mdgvtp`A#^LD z*@Uhq^Z+3Tp+^W^Md-JLh7tM;As!%6LFvRu9-%h~^(6EGp&UX{LTQAK5^BR1UPX3y zKwlC%lh7xG&L{Lfq00$zs}Ey%@<;tP3=@lh&ivVT&zU+suYBsPyJx`2e%?KE zJXJIDX3U;?2mRA$%)4t=N?<%Z{sr^-T{G^zW6spd>3N)AaP#9MT+GRNxUR-^JFW+C zU1t6O$}iXa#r-GVr_Gt|uAFmsRU-V3snhOCcnC1Ytl6F!iNHB?-LvM*PQGEOoKZEy zoi}Z2rQ3{CRpD{7;E7jeEI=9EbMmU@-aV(1DV0y1H^);s%biHoGk5w__l%T8s_vRK zH}QTF7<|Hyd+wz32COLkW0PMI0$ zn6wQ#;TI2QeE#B(mCs_qAS}Ol`W@UKFvD4eiTDICZIWO7JxtKr`I$%l;?I>Y>F@9I zOr1QVvI;deG7oUx@IgZc4b96NGiUC-m9u76xbp^#8JL$}P%!MWA%pXWGRmMil`}8R zE1fjvvg>Ef$?MM)bdS4YPG!}|yz2+$IcHRQs;1sO>z=A<75846=Ngpf7?d}CM&8(2 zGd(kARnC|`=hD0z2IY;Jarca>y#CA&#ryu_pBT?LIa*Fe`(Mw*&kR3PewnBEF+yg> zPd`8Tga6GT*0i*A{NjZ^u~?n{gJ0Yz$^Ys-Zo}li>t6N?9GFsi>)oSsM^C)_{&v5z z`^)54asGx48)`n8I5GE*J2LL*aa}1_Y5&}#Y4n37As#pKq4 z$)^RAJ`1K;iC=1bEI#C&_(PK0?(*w#Mpjm*PMtevCw`fk-MbHvpLQDSIQ~mZqm?a1 zZ{qogr;EX}!~9?}Wx+JX0uiOekMA-6slU|xGMs+uT=TuuXM8vQ-8c^VBMg!wmOZ#; z;vzju#Y-wo964|~aXo=+6fTCv^NA@-JD6pA1lL!%PW*Whz)Ss>ne^I1Gvcw2aK)cs z6&J%QCgHyg52(&?5w2oP@{4eBp)eNLXoOvX`<1wl!hHy?VYtr6bs;V;85ZLi$B#>K z-NHMc;r=sRm*D#8pQ^{7j1xCTc=DaESuH1r$3rC9xaYs?{*z@x=1+W{%%}Mz8E_)R z2>;iYp9M@UWW3MB?`A0z{Yn)o+0Wwd$H(z_d=C8Q;iBQnc$nPdFPL}suhbupm$P2pe1%3B|rg=f9yugb$o{suHT`$N%@*-YRFXAip!ltSv^%@L+ z>Qx4R>QxAT>QxVa>g9z$^%?{}f2`-!U%Z*b!{}$6_?>XvACG%t8u52|kH`6s?(w+s zu@m?ge30(5opHQ~(|?Yo#2v>Lj;W}F|0jOL5!(Q9!15EXEMw|e32%qL`1~S{C*p;; z`>*=_cYpuCs+|A-cmD6g0Q(B(u<`!FJN>D&>E@d;HeP43ELvo-^j#Z^JpE02w~4G1UOZ;>|MYzV`vYDYj)qgn#g7K4> zFO%QH`EXBMTz8PxLr}y56+H_+Y3YOOTwHx|aXin%)eqPCxGuoeAJ>JrF2Z#&t^v3P z;<^ME=a`&#UWSWw{&HL#JMwW2!8H`uFkHiNU4iT8xVSG>fNLZ!&bK+o<@}ZtW(-_1 zwwzdIJHp4}D#qo&#rgU;T;p-MaFyV?2G_N?N^t?zmg{j%z%>!qBwUkm-GJ*xTsPrD z70G=0R@^xs;XM3yTxGbX;<^LZG+fhh&A?TTYbLG=T(fZ9iR&(0|AW2z0JEZK6b3y* z7%~h&K*>=QCFh(JP*9?xgkgXo4ml%|K{ApgDN%wX$vNjJK~PWx6|*9UL_yfMN9O*c z&%O8C-EW`0&xSg@r%w0j)1j)my1S~Gj;14>=u8*7(v9u}O-w!MMQ{4hmwvoKe-x9D z;5>dHgBZ*ZhBA!djNmOsGK$fRVJzbq&jj9PB9oZR6sGbH)0oZ-W-^O+d5_u5VJ`ES z&jQ|OA&Xed5@2{T$#R zhd9g;j&h9Se8dS(a*ES@%o)z|37>L~^L)nVT;K~Xa)~ebim$oMH+;)?e9sU3$WQ#t zFI?eQu5yjvxX$m~;3l`Y%^mLY2lu$opFH3p@xuQuBs9Jo-75|ZzKa{mRarQAdzEq_ z;4PSLK*o@V ze@&k;B=}V@A|yfB!>|M<$lm;6^Xy_pVAn2No4fVH*13bhV2gq{l2bZd9d~7*4*ryOQ+--rjkqS z2BjX9YT%1tZT^}h80g|HSnWq4V@SNPwZ|+edBlC52k+*^ZVw(?_<*0+kjyDznyFs%C15#)VxsUV6g-K zT7fPZlLu?l|A6J2xc`uuOP9{>A5tp%z<~z`4uqI_@GqF}u3hGL=a|(yb|+@}yLLTz z6bI|Q>m!Q{@vWa72fSI!KL2;bEadv6<9AY=G^N%m)s9cfr@TaMys4 zFk=sV)GKEAf#Ix$`Ui71JizF%{xQ>Ae#VeeG5PmboblSOT`>s|Gd9RqHA|2HV)KuQ zgB0lh*YI~2b_MebW~k=xqLt71{=53i??N%l%WOFKSx|&Twm*nJc@Q1MK?1}K2kT@0 z%GLdllo>O2$(S)^uwTUZvQVMSg$jLXx-K(QdJp#B)-jbpsPpzj&bPBUUJg`eJPdsp z|6!tssZ3I5Z}rma4)xkG=hn`cpZu@4L61HTYTYd~qyt^)L0^WlTV;Dhg5R;w4I!DqW^*x$+e%R;pa3YPIK{uU@0(3oq8H{nE>I z>ej2@py4a8HhS&##!Z?wi)bF%qGhY7)@|ChYu_QdW2eqtx_0Z{qi3()efsu$qyL)& z1`ZlLWazNrBiTd*YMN%ZTgIvv)+Ag_MEx%<}Y}E;iAP$K3KYJ z`HGbvu3Eij?Yi|FHg4LyW$U)>J9h5cy=U*f{Ra*nI(+2lvEv_|IC<*y$7jxd^69zr zpM8Gei;I`O{Oaq=-+cSs_dopj)6c(L`St3x->(0D+_ zzX;E!EjU{Oofz4&g=P!)mMGMyY@xvbzBf(~`xJcP64C;^C61pwJb8Rq$x3lpXjn$S z4M~tKb(Y7n1QVyu>Xj{(=H^scgJon3&usSLS;NCqYJpB=OzPArZAeP%m?n9ebQ#m7 z3EHN!rOx!2$sd0#ZR(Wbl;#qQOr17cFu&BP!c&H3wJ8Y__%ddSq&_{CDRt_k36ch5 zY>3UumfYqi4^NyRUTB#4hb4$fW*eO?LA>Doe|-HCB#=9gLOi`d|FM4AtzIB*aQOa@ z5Zmw(oEHV6+H~vOvs0^x?$J?ET_QSmZ>|3_?x+rN2YerNpT-^4x@UBB_m9 zCpy!Gu5_b2J?Kergy~Hm`qGc$l%OO*jbEDor-w{7AUK+3AuHJ^OF7C@fr|WhA=H<_ zZWfdaRmFeW-V_x0WCWFG3W8%^a7a@>{qMe>HR<0%_D4fG#5u`DZt{?qC&|ZCJWYO{ z;aP%mTaf>(O#Ns1T*kEjbr|#?Np$~%-%i(VQO9uXxFB`@_X&E9{wt0=A^-HJadF)@ z9M?U=vHtKm)?J@t-SIhaJC0jE2W~!cLmc@1k?Z2XZ;xCP2d+NytN6+zzlZ}r^V1_g zihp?Id+~RVd@KHj%a435{)#Ujxg@^G7hHJcbMa@K=NzB%31=TUBmS7voZ=)W_=w{i z<0wZs%pnePfc@-a54#C2TXwR8?QCN!o7u!hHn5&`tYI~)_>dJWXBi)`gvBi4eHJjE zxy<1`-endun9e&)WeSs+$OOhSmNATCBqJEkP=+vw0ldi@^rH{G=t+0F(uGb$(}8xh zp*5{&L31K#N@HH55wFmIdeq@1YV#sBsm^m$r7{&MPg%-PiV_r~2!$xXGdxW`@{o%h zWFrfic$^G8Mq0v2Npg~sm@wiK%EJftAMSC7TioC`u5yK+`GN2FhOfB97ktJ!&hjy* z_=sa1<{zW;U>v4_VF<7BZjN%wif- zc$;yIVgy4ONPqg!gRXR>J*{a;1dVA#1L{(nnmkVxDo~b^6r~W)kdNHtAPbN47->jJ zQo@MGgZs)SxA~o`{LJ@U<`Ne;#~Ds?j6>{W7u(pxI##iqCA`mEW-*P)OkfOeF_eM4 zK`*+|iT1Q6lBT>yL+VnC8dReqWhqHf3h*>}$w3w}l8$hak%)La(0KL-H~EcU_<_q@ z;xj(s6vsKlK6bK|4XkDbOL(6-%;X&=GM14HWdQx?Nf$cMh88rX5e;~m7kG|Jl%pg? zc$R$RA{$Te7~v!%j8N|XAwRj!6@K6{7dg)vPH=?%>|!e$Sj}=4Gmm$f#w5lulA*jw zAG*_tcC@4!uhD>)s7W;{P?};Cn%huFh* zHnN80EMgwBc!#$cP4K*hf%KyXooGi(n$n1R)Z%$6Q~rzs6Z(S zlb_sVB?I9kB|d*@6$)C0uJR*a^Eqevh=c5A3u{@yBIYoiNsM6_Z_=ACw4()$X~0WV zrxK+pLVj|Sh4h4zgm~P$=~%)QzT*<-IK>h6vW@kuWD#?i&O}Btl>YRj6RnA$5p{Wi zs+6S|&yts{WFVX*g!0D?`v^bt4PS7Uk2uIqHnExyn9ocmGnQezNl!Y_nh0K{4mGGu zX^QYPxyVFXl9PZxbynQu3g2;&PdULscCm?7EMXoqn8;{`(2s7krzMT4&x=&09L0Es z++-#l$w|PU*R2Cr_?9m?%W?Lzo%O6>A@4DjaSZ28deV_7n$mz;RHGclc!u0$A}z^? z&%NK|1wZjMpK+SQ>}E5oS;AbVGl91lNH03knx-_Q7S$+6QSy_MCrC{aLb-EIox}HB z;uAh%KigQxG8QnCNsM9;edtUZn$eKjRHH0Kd72z#B%DM%xGKH5!Z&=*X^ya)O?=2A z-eW3b8A?C8(v}Ebp*GJ^j-otG4lRUJ&3R68knOBv8S|OJ+q}g9deVUw zyha_WQ-NaSCnt}SiZK4XVtM?;SDfPn``N}?K431>7{@UB(UrC|qaiO+g;EqGFPTY8 z5`vDvTfd07%x9eB0NYv1Qsy#^aSWv&U1&{H>hl7XD8V!2;&DXtk`Z)1-~3KF<`QQ)!cNxl0kfIRNZzCyZD>M0s#A`_A6 z?q9jgIgYc3jVxy#?=Xge^q?Khs80>bQ<%JDBAf)={l>hx%%>bW9HuamH|a)e z8dHaAl%@bV$v`rK&iNaccU5hQ_>1RZ5bd zY@{U-_r7$V#brL_C_7opVrDUcq4cIb&8Wxol%W7QNly~~yyV=HZ#mC#cCn5nyvqcJ z(wh!6qaM#wnrF$uV-k>urXh;ppQjnZH zMq=)LZhm~lSq`z4mCR!bZ_$sAG^ak#Q<`VUMj8@w=QHJ!i=1K~8(GSGyv}4j67r@34fe&4CEpw*v%T=XDV;em-aNFHWevEPSTQ)TPNii z=Q+wYRx*dT8A5lWc!lbe=4mpMf(IwmH+;ou_OYHtOlK7R=s;6mq9TRJNm>$c^CO2} z&T*J6EaP3qGmtJsQje+>BM%u!%-!S4GoN#e?W|-DZ!?%~w4?#gQGzGQND}@yX5Z%m z$JxP3=I}Oy=|)Q$@Epa-O9m2i_o(&YGmf&270hNl1L;B}b*Vy8a*>XN+&tnMkxx0u zCO%*Wqj`f4G@&--DL__I@$j&G;VVwDhczr>|renn9NYR z(~|mBqZqkKM*?o_cM8K9_OXulnZhu7(253BqZqkKM*?o_^Lx&)k9EAy6o%5Bmei*z zMae~4;&FYi_2)EuSj{{pGMKJ3rw)}UL^e|KaF6ukA|J7X6}-nd`V&nPUZgBf^8`t` zyIcLoIS#Rj#Y|%ay@;YA)hI?T(h`sByObYJv5QsAVFCl_L{n-}j{IaIDR*~THs?6V zMiw!Z;q;&-^{GN(auCkL9k!c`9A_KLn8j%N(w0}LP6_gmj`&>PF3mZ`EA103B()!(LW1mkA7@BTaabGUOuz zVcgtexqQrSRxyY1yh#UMrzWMy%VQ+q_s#N&lk8+A?=psdwB=Qvrx>|NLvWMu)lJTm zImT8#U^*k{Nh|76nSx{`IrlcoU(RuW^(+>kVkawjm(ld4 z4GpPA5weqtKi8|9`HVwsU?GzkOlO+mc^x5T$VUbe^7}ez#7TCroSBTIH&N85G6l&( zGX7Yr4&)Q|v4**fr$6m!M0JXji_|<^~oAQ zEa4r7(T(Q3L|L990}1(km2KoBwy~7yjGzaRyi9rWlaVlPd?-IS!FHB0gAw$g1us*c z{A47I8!Ii36KrQG(-}^8B6*2&JVgc)a(#vS2{_JHmhcWk=}I$dQJN=7M?9`BS5`T~ zCKfW8L3E@sH7G$YQuAP$GQ)Weu$Fm@=MCEN3RNjgR+4ddspBsnvzwL7VkEt2Ngc}b zG#N?A^$(oiahxqIW(tGpL=$RKf?S02=Mv`&e9C^-Fo&`9r8V`b#Irm>B5o{}{(Qt% zmN1nebfyV4DM2p6`E!wF@hSUQ&1}ZdhbZb%f&647A=ek$E{?H@g-l`~(Y(fU6d@bQ zx%iB4i^Ow`cneC)vglrZSk0yvFksAuCC_{hr@&f~_oO3WJEI5!EP6 z7LsuDU1f;lY-SOY7(jbop$Y|ff-tVnQa^EojVxdSZ_tMNR3twch|krT>Ou~(mN|@} zH!XRYGUO!<4`wK*e8L`9GLsQ>qbW5hP7YFVce?V%Nw%?sDGVZ-SE))tGLeYu(`*Yz z*uXr-(U&OdP>y`0<>5QZC!ey1mCR%~U1>@UijkdU+@7k;@DW>B$VA?xEuJ+MQjz?m zCmz2}QD?EARlLhvbf+0FP@Ehj=gwq#&k44$h>5&OTN+T2r%6vJS0>rd*vE&=WCUGl zN)3vVjilV1sH|{|jVvH|#&Tbxs6$zvBn^MQ?HqwK>|`nLFqmjwr78t@oCI8(pqy}k z)x66{y3>rB6eAnSxHaB7ag2@3XB>TL#mkf-58>P!r(Wk2+gQwG2GEWMROD$MBlwSB zKaW)o+0AmMF@%mZqACS=oCI7Q;~a(ke8^0O(}l)7Phm2Xi0h*r*Eq-;-eV-)X+}+o zk(DIe7^U9g2fcl7V>qGFW+FH_MpH zAllP_iabSH9t?8+$Z58*n2EeWYwA#j+@#{}K>IPr*~omx(u?N2Kyk8>gx?3)Rt~X- zcNsw!UZ)xbd7SuMc~jlRZk92XfwZRq705>#?)SH^aFQ*&&v^RKf?AXyJ4w0mhPsqP ztl?co(1q8jMgcMsk6-#pM|QE4DGZ=3^(aSP!nxa5x^SG0%wr5aiJ&G$$V?d5`p8rE zv4Uv~rUMPBNIueVzqjq=B%4{lIC|5Z7br$n67yRxbrkzq$#jMgO+za36lu8M)4Vy! zW)?7xUNq+gijsvyTnu54zq??45t&XQkkbo%l(ehniFhdK4a)XGpbXF$BEA`(b|~V z!4f9YkCxP?1ldT;Zyn@0`&hv{45S_PC`)cqaI3xgjl-;A7Q^Vst5o7C(r~YxJmfeV zn9C@-(U@vHOM3hT-jE+S#TFJYj$TAigTg#Pe12(T``E!^-li`tc#&dcA&jf7bVJ4v`6B`w&?a;7qXHq@asIZ4KiR_Z4Xu##yEq8;@pOKwtdv!(ijgREi( zL+C(#%8`eZ+-@O_ImBvaGL&c@SqvqbhLk5Sskq(DI&hfP%w#AXXh1pgkdj+Xm3a=aiWv;1J@qL| zZjy7ei8SK?A2N+Ww52X($VoDOZ|oY0eXL+A18B|5lq5Te`R#S*pX^~NlX-(y)S@_9 z2;3<($1NXA1pkMQw_cg)n}t zuWn@ri?Gz|Ep-jMSi;-%C6byH=5a##@kMFHX67-9t~8<&`3UFE3zp9zRxzDH zw51NE$WCIe)wFzev4pqjLj=_+NCqC(u>G81BXf9*&b&ee@{*EU)$NBIU?o#|lPGFa zoGc{dm*?#RY~y{#(t{>cB|mAo_niFaC~KI>5ZY6Z(&Qiszg4rpvWq3WO&^+5oq}ZG zVO7USK4Js28BRwUQl8u-=SCIv1$$Y>WZs|!FHnRh2<6Ah@`+8%Wh9+>m5Mw`N^Vt> zPV8p|Q|V7DYEhI-#OJ4q&YRi7JVw!#MpPmnskmK1eaQhAQ(N^X_0kFuZTOyLb$ z@&ZM8f>3@et?pwJb9jqRyh3^MkenN()KTnZDU;|+BsC~R1|F1@?;K}6?=p-I)TazN zNy2X>>>uo6G2`h)Q=a1)(s8f2b`6fOni&kDEiY4otR&=0F=d{uEMPRl6eK-=KIz!aG1fAZ!L;RNN|Kd? z{E}CivxWJLq6@E5fjlJVMjrbFd-#C2=}j}9=ULKmFSq>WFsqoxK!U%CQk!CAA|5~H zvOltkIgFqq4Jb=al5j1jb0K!Jh;j6wF;#eqaBk;N&N;vertk(Ws7WC*@F2Uq;TUU~ z$q?F6hmvF^A-`mkK5StgBk9a5lqWaI_&uv@Om?$`3G|{V)yPj8?q+dJzKt5+EIs+WFY}RXHcKBnYp}0CmK?YTqNbU^y*1= zvWRi?pfOc=ig0c}Ca>AgawgM{NNP}k$GD%)@tz~BW;z3DO>K&iiFo{&R(WJ2vl&h_ z^(akt67g#q`zza6z-YSCh>GMT1vgSlZ+5eU3G|{V)yPj8?uJWm4ziLdyg>_UQiu!$ zf8qaIjT! zXAd9nHoa*|HS&{&yUA<|2U*Ef`qP4%6e0r;lG+xIv6h((q75%moXo`MrzEz8P0VIE z(bT65IY`Xa#PWr0EMPQUX+%Zxl7in8$rpCBgbDPbDb;wI)Z7Vk4#WXgFoidWqy_~^ z&z}j^w;W{+(-}x>YEz6%#N)>Vj<0OsJ%-VNdXy$R!QYj-65l?}R^~H`F1$i{a+8ef z@f?TQ#bU8n7>`{l(+yzDMfjzP@P)T9*(_iQ zD_Fxuwy}qU9OD$9@Ht=dEkALU8~njT5=e(6q$DjF$wE$^Z`DMCrgQJL!0qAtOH)0pN& z(Vouqpf3X$%1FjBiD|q`u>UP)Ijh+~uwU+CKSwx0u)m(?BA5ArU_ZXjZSE6l-%dnw zQj?xc1p9p+o~9th2hQV)Sx!?c$FqZ z(wYu*p(p(qz)(gqj!8`8UFNZfWvpU7o7ur$4so2*e98sB;yZrkDmS>x1L8YwCw_GN zP9x4hX0nrqrzuD=N>hQV)Swo1d4N=#|oYfw}%59Oh zEGa2TOGdJglf2}o5W)FfX(~{a8q}sPuh5w0w4xoI=uU6?Gnf&KVFFW_!EENUnB}Zy zJzLnxJ`Qo5(|pS3d`WOV`Xj&cJ9oHGsPok@l97sZ1W%*ON=}~S8G>`$;*_BxRjEO3 zf~V5GLSvfKigt9O8@&n6lLs-J(M(`6(|M11EMgfSvX0GcXAi+S_fbxAmh)WXGT-wH zzj2d4cu0Kb?1@Q1YJw-*Wg;87d5UK#LP^R}iRY-vOVsC8n$Vmm+S7^d^r1h48Np~K zFq!GR$2=CXj1O7ICbkn?a~$9(Cpg1-zTj)V<7ciBT&LXSPvW_5NklTjNyp=4B_~gk zpF$L)G!>{qbzYn$dzbbf618=*yc7;Vs7SHdC0vd(3AM%lMFWY$mww+QR{k za)L9Q;|spxJANX#R{Nbh+$YraTSAhOinL@TGr{#;9-gKEMJY)+D)AgOd5LqY9F=&E zn$)H)ukbp}XhCZ_(3$S^rayxi#z@98k*Un!J?629rL1HP8`#QD_HvM;oZt-SxWJcu z!;f6yH*Rv5KZ&PJD2$|}Bn|0#f^6jCN%B*WqLic@m8eDyYEg#2)p#cH4l|iU(2lj3Wqin5HnNqS?ByWGILR5#ae*)Sh9CHaYuw-t_X*Wz zmXIW*AT^KiI9bR+9-iV^3R9e*&8<9@d5)UYrY;S6oo2M4HSOs{H+s>J0SsXTqZ!X6 z-eD#|JKua3v6PjpVFO#(!5$89gpWAQCw#_5zUDiE_QNau#!c?>C!rcc5|V@zq~HT4HK;`$8qkO)G^Z79iKYwP>CGDi?VUq;i!n@KGSisFZ056w zrL1HP8`#1QcC(+u9Oo2gInNh-$v6DKFI?jWceuwx;%kphL^4v5mh?P9R&tV;r+Jpb z6sI)hsZ2G3_T5_4p#hC(Oav`yLkBw1ja~$8!vh%1a7HnXiA-TS?=qM7S)hfle-fhoKLLqJMk>;ho+rpc4)TzXXDCEbN>YXj zRN*;lQj0n?;8hyaj25(}9UbXH5Bl&10~x{yMlp_wOkp~+n8SP)v6L08W*wW@%1-uh zfWsW;6lXZc=Un1zzT-!(aE%+><{l4-rynJZB%~mmbYvhCS;u91`7GiCR2&?niK{tRR&BN)Y4f_}@% zyu%FMWey8i#0M;A6>HhRX11}5y&T{$$2h^qe8PDyaEZ%&$B+ENRjzZ3yWHm?@${`G zBnd%3Ybw(47#Yb-HgXd5#pWYF1t>ysN>P@ezqT^fsKJZ8L|qyX^y$7%QzB_a8`{&6 zpx?JUz39uE3}PrF2>OP{GJ#1Axl`sN>;Oujcj2%yV=J;xntDJcjiE$Mlj%mn@3Imtsl@>77q6r&_%C{HD- z@;o)E#mm&AA&qEEGa_k48`{&6E_A0Ced*6Yg1-3SjARVsnaC8TF_ZV0%K{eh0n7Q2 zHLPb7TiL;G_Huy39ODG1ImYaMRHO>e zQG*w#O&#jfkVZ778O>=)YueF)PIRRQ!F?%x>CZq0GmN(w%~*o_S0*uqY0Tt3<}jay z1oyctWd*BP!+JKch3)KOFZ(&fQI2zxk2%XZKIbA|a+&Y=fuH%6YXtY$+~N-RctD5_ z=JnBZQVl!TL(^kgIxS;}5ZPIKpvGaGJAx%4b~Q5?}ER-|-{CeNeyh8^3dlJKW<>LbCJsP|2QL@vl*X zc4mCGT7!Ezl2nR~{~G`0qwiy4(}%1gF3-gWNVNxRrs0j`Gzm~g3tJb zj|uK`IL2W*ry08Ii1PDSz9?=(H(iM{TlOIi;kJ6E~F4$Eiumr(aam7DKJE{P;j{$;b2sZ1n;*-dDu&je*9)J%f=B!WKq&>;Wx<%9-p#;)x`vr~vlG!OYN zgIWDYIfz}a*ma9tzhFCpyo$}QV10u;i_N!3U79iXGzIw=uqrWvZ3@H&s~5A4nmc1c zFpt>n59S|~fna&TJc8v1^9j}`m`AXFL03nx&O!MILhO13(*}ZR0>Lz~As8QoV0;kb zei!@uApYk(VkUm{_Fv5-cAmjH1|is%xFOG@fgp|*jEY@{;CI32*!jdRCzvJ(S9h$q z7*}Yn=h}=~cKqst3tOi5YEUFRZrc9!i~syR_JLBd-^MOKcDb?Z@B3YUGdJXKuj9x5 z{t9XS_gCm#&pV6bVT5zOI6~tk3`>$UMaqE3vk&r6l7}&3SIn5$k3qcak>GO>g8UD} zhAut?V#6RG0{;<$4UOH{n2|p`{6S*GeqYXqpdKkhX(~~X3Y4c9L0waXV1Fz{NlH+h zXUNafJcV5@q#y-&mfYkbCppN+ljJ2R4=y`m>Nc0hG4}yx7iS|lWpk<=bAMo3aj?Gx z^`Tumralas0X2`t>>t6t66`m@ei-au!M+isQBXF5@)YE4kk3If1m!#^qrtwGkdSMC zeoq8@Ilhm}dJKx|1K)F6YHnEwZ>%R(l zi+4AC6*5vhin%@y8LYf8f{~174C9!(ot+FGYCRaiNJcY;v5aFp6PUzQrZbD#%waC`n9utxVhJCxlw~Yu1s}48wG3qe z3t3ET2#x*lk2rRG!hZzMRs35>@{f?{A0e3SJB1SUekL;IuUqOSneq6(j)^ARXy2vy z!j?ZSnA&P~k&&OLe1Fr0zFB`f`{l^EtwwIRv&{;LNhdUn(I6SM4myH)tcEZ4KI zYG0%4=HD+?-ZAXWGoL;2^EY2~th@fqjf2BK9{S4k=(M|*bZFJ@Zi_#EIUF_mYMoGs-H>l;-AA)obIqb>B2vj ztS=rteNB~54sZRu(%o&#FGrs%(zD5>=T4;f`Keo2yd zGEPtV)z%d42R>WAW8!JittN&xY5Coax*a;Sh>XsBu29tQmqJ=xzcMu}`i+I5nReeu zJml4Vscs%PzbdNEj~mncv}wnf{v$Wvzm(;R7B!#!?6Kebe>^s-)|q>aBG=UZsP6hQ zJwmoE_`1;6GnE%!dg0Tl=gN27ck2CnH$M5e{g3Uc-ap@|*z+UXtT?%;`DfjqO;GLI zEb)s*)JnSaaQ_rvl9o(vC9wqr#0-yKlAkJ9;K_F z{prKrr{8-l@8=1IroYfVO|q7khm~zLr9%6TDVDt6zF)EvDZhE|VUo#Dt_(@KdUm2W zt4&UI?ev1gZ?(N1n)Sh+uy##fZE^c(o2WruOGH2ZeOQN1y)vD7@MZpwN4?(fv+!dt ze9@-!rOkKmUfnUi>W+;W&W>Nz{D%dfd@^A2sd@YMoGVrD`lXkDYqRxKn^(6j`XX$7 z#TQGgsqtC<6z6JXO8Vig7vh&_-Y-Gry;qxGYIv#5lB?r874EyE-ScDDMjm})XzOir zPj}8!;_J5cruI&LEPnN5TQ{eVm$P8rgbjC;-LgMlvh8aoy}mAgg7#~hEPnXup28izgiN!p^Db z`fd7pW&YJ~l*+Ur`KGNb~PJcY2%GYOpyR-I-ww;E4mhE`@ z9fKR^-F)k--m5zIuD&tjcdsWN*`WND^NipaoSoo& zB!~wQ^F=&yeC;POCm#vo1=Gb1qw2g=Jw?(df1xvs&c_u>&=q zd#T#WD$P~3F~O`uf^(i=_QAY^bDiL~vDYZUu|GJz|NqyQ|L?rM46cuZV_8rJVnS%V z_@1|$&|}cUfMX**`+eW6J-Vw-o;(r2IESs(&*C&shGS48dcY|0jd9 z^R(&GJ@#07A%o!g>oMW+N8yQogiQYkng2z|@-ISYXuQz)p$S40hK706cH+<^UP--@ zc_sHs@#vK@^siT{(7#^cp?|$nhyMMQCiL&Gw4r~0r3?N0>#@-P{*^xTzkg*2{qJ8H zL;w5Nxs~R@0BU^-+N^a{dZnjLc>$1@&8Mbge6UwEJ5=4DdMFJjcvJ#t)Tv@ zuY%)NaI6Zx4X(#3GLVM>71~1+JTyUY|La2&JT$>W6a2513=_r)!86>0;A!Z83-SL& zheePIBKC{!AuW3L=+U`TM2D!p-GlG{ulg4f-L6+uM5oR@qPmB)?Afh*=WY?* zJ4JR0Y16KCM08ZAkY1gmdv=TpY16Y^M31&nK6P)|Eh?&0_qMj8d&|gZUzzf+Pu<(L zYuzKFO?2NbZM%n0xqFX@*4-j)Tx5@^h?bo@_2||) zIwXjrI{BtubdRWRA>F$~ckUJyJJcdbupXTw{u&$7BeF$A?{=-EU#o7By(0{E59t=w zvU9gq5s@u>wCmNbN8gC(&TT>>qob`r>z4?A)`vHI7N5kjOS|y4j}x zjk!1fjw`wH{K7wy_WWQUA4&E(qkaW8!~~g0WF{7Zs7kUHv83vz$eOB>RBaRrlgI_g zVj?q@3z?{r>Ztc!(|b>Qm3`b^v7vPM$EIwnsDCItMxeSvc)4k58wA?(uLi613Zs`GR522Y_cz zle2K%ULH@Ty?$@rIRo6&Ub{OB?M|mR0X7Sj4$tWr18rGw5GrFU|&?vurYKU-YJ#A$OKgI*YTPo%BuzqgmFT zXBB#WZ{uc2MSM9F{r>=n%ro#X>kp>0c{WOQ41r44o@Il+a%r|V?Pcw3HW-}_dzmez zZmH}|!K_z1t$9|l%Ccs*x%nV_x1OE$=Cjflv#efiRI_&*mou_vt#^Hw!Pgf zQ-~};A#{9^alQ-iGh5(-kb$QSbXa5ad9TZ)Wc_LHdyC$vbCI3XwVNf9-~*wOLBF3h z4w%l~C|d}u#gKeSR5Ou{Y(CC9!|@D+2EmrSVYZc>licYI!IOf#U>`wXfz>dp-7 z8_oKwSv^)i8e2)HYQUNm5y^30qfG<|2^H%3ipWd*Btb@?Ps~$iJ{@k}&ni%_{$glo z2RVWakkIGom|l8^Yg`s#u@ku`^g)vGoDoM0V93U zzL;gu?dja+(pXkjnZeprx2WrWw&_(-=PDD+D}{Sy-2tV*R%2>erICG}?J%}>r#Iun zoZaQ$ct8jqnaG${WQz7MGk$Zk;Fs4{<@jU7m4!Nm9hZQn zMGzO@^Fi-L)}!tVmRXL%vtBPd1c$^Cj6PFBO=an2PW-IxV&&T^o?mF?QUCR_#TMzHlYyq`Bj-G@0z-kEgDT!2hd#A%OTQHGKXStwdvd!$kMw&I6_cP53lx8~k6aiD?j#=BZs;sm^ii~Z< zp*ccf_SSc^`(jSWc|9jASz~*rl-t<9lD%8XZr&?p=RJ&~U_OvYR33=8cE-c;Vk+8b ztJ>M8~ROuv1b!#{1Nc2%A0wc!j25|&WpDN0PL0iczj&1O-83xDi|L(^tb`Zh34jH=%t$V=1#rQ*gb~7 z?KiirAPeb=A@gB9ujcZz74tfi)R9Rq*9- z+@1`=v%z@wEJ%}K(accJh6B?j5XizZ^p?F&n7}E{amnc|C*$cn%%8hL79t;-9WRT= z3llsFDIg5OI4q_^G`DWg9ze3tAzn8c>x&bdY$nFn2TRF02Xq-l;e0Z*CA1jL2lHXC zTbt~Mt@LudZtv?ebO%ibdQEup?Z=OU>nGp})3X(v;BC3C!4FdPw6_&toX`}qPvW0c zocCe-q&FnlSaA);L!xCYoYpVREx3*BCMOC#yeTCko%Bc(<{V{{FBMX zl`Ix!p4S;q2CNNjSo^EYoq=+Y|VS;lTGxVF1?@67AK)zLW4eft2I$hlZx(%sWGp4{45xj2d#HT zaSODr02>KtvyD;>$o?ZHSfl~$EoJCKW<{cDq6tzEdn{*otSlC<(948%61XIyU;vpe zCeWvln*l_T^M4NAt-BlH&Yg&lYTDHJf&&D-OG`~Q9+g2`eKsFYXw*1DH?x(M4bCy? z1gRg-5p$?YvapEiWIPznLDHD+k{`8JcycLjbN{+-ST(T+K+I)J<4C1WkzwS(a0t9J<%zGP48Pt%QqX!{f@{m};(VeSPc9_O&@bhh zY9C%q2R8gXw_mr|F$^svq1}!mGI_s=99iQ8)C4@vr z!}?BFL`VM}rw4oCCIgIa5@Deflj#`M_&k%&hk4}F9?HS_U@mg#qwWb>NUfGPAH%oW z*dcFfd2i(d4=>u&5mSATP+=yeeDq9A$%bQMiIInU1|-Lv;X#k)nsQSj4 z=!v8gLr7^Hg=2=rEd*JrtHnGLGe3qrfCn>*TXodg=rQ* z`ad2&Q;jAFL2XXPOF;lk&alyT&YV|dPHu08tW0IB3f5oiFw};NcKANC6W8f%((4bf zr@-8yiIT$*gtV|ks~xDqDPFn*V}sM40P||L7?h`Ztwi0*DYYaLJ^G@ztD_bTh=+JaLBU5@o_*RgEC4ayWG`c4Xe`zH(yuw`g(Ud zo=n7+_Rnoi#b2L@#YEB&xklDRQFG+aD!UCVKkX&RX42(KUSse4#4`n%5h6!+xZbSK zjt%sc!OVIcm;+3tLoUr5s`yf+Z>e^Uj zL94P^->Ex)fi4`cBTzA`db*w91)uQh6o3<(q2`V*Iff5yj~ zH*X~4dv^T14R3{WRXQ6Ie=D8Z@n~`0YK;cN4T;zz7NRT_gH~N8;~@nP2X`AspL>b! zm>k}-o;b08JJ17@(i&tp^fVY*3D3=1ndNr|_N34BU(qAhyOjJ&2NfoEDQmT|qCeA~ zX$<=6y57_9OUsLv3|ft<_YaN2hkQ6V%04eQL4NFCU&B4xus)`~=Deb1!&`-N*_2_U2C#V*qj*o9=zrQ*su}g;J4|!ek@EyY(c|$$!NM=0e$ed0=gjj zNlV=sj3QV;h8(b;9Ie770=}hXDOBU9`pJgj3z}go`-G241_OEV2c;Z-a#W09aDDe7 zF{AkxPen2BoTdQbirKCH?ZBZa7?c-J30dRn>X1*RwzN8jjIlE~(pri@ zXaPur4DeJ^hq4X`K^eeoHqul=&|Llg#rAr2M$M z=JeU6^~!x@DJ}33I|Yb>#%i2uHjzx(yv}SWGLE&|p;ZWs-{nhCSR%U-fDGcKi zF)G<1Y`$o!fiyBjkeFksU>XrRr;A?bx54wkRCwPfK`ogjYB8~{%);^Gr*C}y z(bvN{+f@Suz3lO#oqgw9GjM0_olM4o^8prklO8dNBk5si#lF$6+81bQ?7mIMQg@U} zR{%b0oa_c#KM=c!CTZ}9e$x3}^g^iQYi|)XIDP4#NMg286_7i|#em&Xni=>*dp6U~ z0JH1T)hkR9UI$W>wP(Y&HG19gH-d(@TWf~n?>u_%{db-|K|S%!boG#lu^lFA5u_y0 z5Aj@Ja8x6eJ)b#r0_h52wm>STp>A+1bm(f9+~Fb4ge3X%iRr}bIcfhGSc8=?GzG4cYq|Ej124n%t5_$~I6w!6S%r6J%dt=cdre1p6@mr7IdGmcx z?6iYLz{nyPXI?Ikzx~GXyKj8(&EwtUW=JpC|7O!I6HK;dSVnqVC{SA<+tx#=Qm?)| zduzZh-Q_aF!O6=jSjj9tuX$6UllStim2TQwxt}Zb)Mn#yC(C(KHh`B(sErxsrJJwb ze0cMfo10RzM}6SsN|jVnJ%!Peu>4RrXH`ZR=QcupxxVD^;T6ic&ddSx>^3kuo-Af( zeP0&0F$C7aVO;rZVeKe<>*;qM1>wan`ri-j=gp^2AKSx|cOHjtJo@0|{WqV!r@tTC&->qe%**@VRMKPrdGF~5O5?}MJ$d>;`1X@;1^qsL^d!9X z^vPQsCHMtyseAPI!eb?d4<5b$f&HOR;jK5Y6@T!?JCE(*J-YkelkoP__Z~le`mTOi z9q)z@c<_QLhfg2BLp5(be)|5mxi0NHZ@l-$d*29;KK$UlH}v4t)afEiL3{yG0Rs>8 zF49R`tFvP5Kn`IH(hX5e*}i=SopTzb-Cyi?qY!zIRi0B*6k2U{fDGd~#&vNU(Q0!9 zJ3eM_FFk4-o*Wn&e|z8KPrKXYuk4lZkcB?$4xZ~7P7c{0zu+%Y6o1F!cuV^`J5#~g znNo)SL(59zM~Sc+{tmpVNw4>eH~qi~?01LX#ps;BLluN;9m|so`k)6;Kb#Ck5V6RK zpgI5CAKQr$j4hK4$pqgT2SG}}i0BCsgCoz*=_Vf}K0fY;+feG;)Wd9`GP;~_j-QQ8 zM>&7@LQczGk~y3ACfSv|oXHtIJ#W+B&e;OnR-W;iNjVR=*`pR9n2FIY+6ie4Y&;8|K)ux>Kc(97J9MF` z5ScC}y|DCJ*@~GUc$xV(^_XAuB*eVlL{&}N?BVG_2|`p=-~NP+*-%dvHflz=g1M}BI}PFXwfUNf z+XklF97w`#Lq_)%xhVUmZvLGc|75_JFK0&zu)I#RVoq3GCt6`AScc~T*vla!3|UkX zFj#3Sj|~#fiF6?nIL98l+|cFk%`xeFl!?#j2q_QAQT60rnbWMa)z;1 zzXR>r@N4pe9;SE@GER0Y`NG9@C!~wsCu~NfXSR1hyrN28tV({pD&@w{a}6tq*IIub zWCqlm;G(@VX4|3K&}6%D)T%rF<}W__CDWuBpsYx2ERC46q=;d%9=$(bga^=yguW7~ zhwKgyb8>Qt`)k{63gX~ai|6WW+ObM;o}=onnfTR6dVg^SF^+CL*7yjIiU3!__CI6A zJ?CM18q6@QKUN+P(nX^b=D^d_m)=G6TJ>#ZC5U3>-A_a?JXqu%kD!E7%coh}j@rtf z+KyE!??iJrI6a%^nOv7txg$kjOeeAMSMGRsH$v<1t)uW(Xgv&~%TiE+8QXwT0*&wQpRUjzGA6M$ez=2f51eb4a?KW0fX&Z zmZW~sFnAQK!FWnmG1oc-3^5y26%iAb#xqELkm1Gt4Eh1RNh9SFbVLN+8N6r?DG(Hv zl8oY@IUDT5U}h9a`mI)Y&3gx7lGJ}QAzb3Fhpew;S)&>IgQguAV< z*$Q`BVXGC^TjAqY_^1`W)(YR}nU~k7@B#IrTYNJ0Spw(S(+0X ze8p@IITcFMtw>TN&yW)1*u80R_?)rvlamog#{~lPXfQj2_Lsh7?5oLIo6y2?dSn5q z-5&0q6Zv(R?`u!HdoYj=_Wxnl9h|aJpO6%C!rnddyaM($a6AqOVW1^l_?Z)LokXe&2w z#GNn0^YkhOSaLF=O)Y9dhgt_m;dV-v6)G{moQL~T(^3)-1TqV3G5QcMQ|xy*lg?fE>VoHS<;KhiO5Esl@c%k}> zB~&n(tFX)9tUu^Yf#N!VlXoQus`-QIY# zQ9z~x4Q&?bsaUz!pVN=UC_QGgi}RE5Ft4OofCaUQj!UBT)Ttka@gTcq?Aa%{BdDJg zfdk;T0itVJd(X580@}*Tx57-8r<;+afSH;)a4WcbcKBLi7}og8*E!Syc0Q&G&70Rh z{k*Q58=+J>+-?DRKr|TL&Z`Lc6vp!*@OwQQABfM=8scNbo$)l!0^{Oylz1`1%k#@| zvptkrfLosnN-}9*L7>?MN(Qc#@+a=d_hU?mN6*gj?NBh`@dT{8nywQt1oiH2~= zBpcx)`u5R!eH+efdgoRmWm`rZ3%pOYM!nD^B%l6@#KfXmQ7sm>Y_|X)E0>RQjRaIS zCJJGy5K~esI7->nK#mx(cO^HnuzX~~fi|!^03N}zq8*DvfyFjX>>Yj6Qjc@tKFUVm zwRmrPT?J4%od?z>Aix>frl3+u%35LVkXR8DZ|jAM>4^{+8A2N)XqC~w4PtC|dwfo9 zm&qo8f|y1?1T)nfgJQ?yK4t4q{a^Fg90muOmhG+WQ0Y~t065J&+p=zFwQPJYt zDH6KgPEJjvgVnEmkP^Ks;yP4xXh?Asa{pIPXEQQCqnY`EP;hQmdJJQFxO#kr z6uG5dP9-TeSyXw*n)^PhqJMGVsHM%$}rf}r|3m_md3Q_;VecU|Xlw@tK~bPP%SL9U)J*abG38uL$bDaBVhHGl-4 z^m#mji-s?y(+xib3XtWQX{UF!Yn`AMb2Vc}fjx!?s$=>pdo!`@t5Zb$z?m z=x2S5PU~HJZ`7LoY+ZjvoKPYvCR}m+&&-&f#{L1PpAo!{IS+`dUv{j;uALEcTIDdG z?W9Zkasg3Pd<*P`?qiYV#850*u)b7aK7Pij^_$3dQK`UND!gjWBO8?s6u+CHaerrj zKQ!vw{55BiOmge`jGp@M+WKq_|My4?NG?l`SLMnpQoq|oZo`~z!%=eanRk=fQEUSK zD-SsM0gE&5(zNDw7_|ObEO@sIk zT}&{^#Ie=F6&ac2(pE@fq5wBn2u?djy`n82i-68oSW?wx{FcJjXX-EXyBDc~YV+#~xCHwi)5caz@E((w2%P+e0dC z`x2JyPb=wXMaEfPPulD#nh@F)JvMWsMrseKK5%8u7xt6V5Ewh>U8^TPrW~ACMhof7 z%FLfru9@@kwkC>#8_$ki*HNP{%S+!P@)@PDR`ZvX>l;;;7a#MS1sLaE6KZBwyrvT7 z5uf@RgABAd*?fJzEaH-@Xe%w0=xUkDpQD1{ZOGpnINKnqtL|3uD1G;{9~9oFsp*P| z&&QLh`_bcy7n|D1Zrq4@RGglu<@ma;-?)*!qj3IswRE0E<#==n6;ls3K5wnLRd6kO z4GQ%tYx4L?z4d;OFM@R=j@=c2qK{w8>PrsucnhBSn$BWJ?LK>u?ZyTQr^Op3s2$oj zICKIqYAIkCGit8fx8liz>q_LqECGXZIdY~kN2mj98&H~CbYk44%oaxVIH9&Jj+jWac#Ci+x8^;cKcbK40xE7<0K!LHkxm{jRUV`kLx*B&5ePG6vaG*DX)hfVHKBMdRF|OZIMdj2k7bn3H zc5vLU&{2J){}Rm5mLSpcsHByr*8)jX%PrikPl^EQ_Ad9Cm^lqudMOIhro zv#Xge#?xoB8U?74UF6x8YPzH2E=Nacq9(1+=md+yxmLS+Qe~F_y>Y@}@K!cCY#dc5 zhfV$2<|D22Jbx7(+y&ByWH3_M%CXUf_C~9<20I=0)@%@!3YO}8T$Q$?z@@a(I5&hE zCmS2~yHaTasMkvoDT^Z}D=nY|OEsc@=7D@EJI+IzB%csti!2@XNF{qXm&CpxA@fy# zt>DRXslXvgN3X)}pm!TAeq1lG0!&YB=iBR;#mQpdJJu?Mk;sA_{^+P6>{f}P2>k|{ z$IhB6w{P99D!Ik^1{>{hY%Y#2PGy|g1PGPMpwotUZRT~On%CI0`U*5H`ruHAo%q5& zBzQT5ukV8c;Qvz}&U})-7!FqdndqJT%)g)yXaDc|kg$uY+TDmHUMs>x%LJX6st5qI ztEJ2$E~JDSh}b{S`5aEU^_X3)3g)XluQck=mt*mhdf1F=iSZ}U!^3(+_>?w zS!Q01!iWul zI%~Nz0;7?Za^t1ns|(_L*R~#+;1_-zq2TsjOy6@SEcs%JP^1kR#l?kf>kE{@Y_=dc z8uBiU8+MaxOqJszyWa1(tg$vx<`|w~<&UK_L;~6Cisjz8VGL31T`%$Kco(HF zXO<+tvfy}B%QN)R?0;S1UE%LSk^oZ{FbYOk5T zuvX0=6eU%q;uDbFFrN-nqgNY5o{f`|c%aE7z5{r4bV+%&V`u0>xn7zQk`9~Rjn|0j zrUd6fr37aPmlMuP38qZ)p4SmI#v&nccvR8U&P$d?o}boKo{;N*Ix?}M<$0Cihpiuq zG;pXU`{mXz>#@1r*w*W>w0^~2>-YBV@%pQ+U)Ae&_G_(QvxjD*xl8)5w|-r(n~nXQ zdXx9xX#Ix2?``Y#H(S4{*Jk~GQ?>k7>$g1je!afW`){{?+uoadgg)W@cUr&W@Abxg zeg3pH)X#E4vsMoCnf6)4aSa46H z`oq>A>a~&mQR|Olxkghh|8eV&^}ct1XPdV_Y5j@bn%SSW{?v=@HFrq=v(}&Kb-S^% ztHJ+y>(BMNoBhMqKeY6HOa6=2U+Ap~OjPRC;DkWdmMYtt)y~!<*O2$rqxM%sQ>0wj9bG=bpm0iPLPeOGd&@Ok)x-+o;rhR$Ns2r6>IL? z{@B}?)mhaady}oFI-5+XVKQwA4>@-Ak8A%TX*}0B&o$1ubzkn*)d?ocsySZUW7D2@ z?0Kh(8LTt8(2u@Cz_03TBqoSze>knm&j={bsyJp;&Htz>Z=veU{>o{!ioa@A{;E}Z zuU2si=f7!H4&ha~gX>R%UiOb^_g>|UTXt!$5Bku^h;|9xhCM(VOZ$MHXE`RR$+2nm zNG`UZ!Q5%@O;wQo!KPqZ(PDaRj|S^{5_u^=rPxf?nB! zy~kLkrj?tdY&}x$Ho2?SY@8^wcAQ#Xj zGh#tYDwefiO*3)RXWCJasFpWTu0jyKR1G1*)Q7zIl}gj3QP1UJh?T#j&AeAXv&kzB zUQ^@G7(-*XJccV3`Ut4w$^cL}t{Xr_(|yB$ZWtGzi=vI9fGr9OWL7@&?$aKn$L;_U zK5NyhCOXBecnG+Q0mv-Sl?Kq%Oi=TSx7m!7BZ|#MWlFFLv|YB- zh#6_-3wE&-eAs;_i)c1cysDVLIi89K8O|sZ>>uS6oJ4TG64zySA7@&k`@p90#f#W?fUlo$B%CF@*#>}NcayE);Q&JP(cg_)y{D+T##QJ8VIb#jnwL>rm zfJo-nQ1lz@ilCWrm;q}bawS`n?eH&#e<>`&zZ`nuUkU$ec-9X88X@k&kHfP?_}5ts z;ok_)##|>mYlnXm|L5?R_|}Dg3jl|In*$T!-vRjsxRP)|;d~H&5;%16@8Odl{(X=j z{0DgPk;w<6cK8oDc^&==@7C}i1yJ!n2FT$*31{u_p9Tv3lw-2tAK}*%{xe)}!+#$7 z3*0use}QLR`0H@K2>&H3F8o*Fd>sDkaM2F`O}JQu|2ABV!+(dDcKGkZbim!P(?$3n z0(1F45@kF5Pe3mG&*8;5{4ZfN3jb?3Wo%z1++O%Ge;FNr86JNb-&ez@43NK!kiQI( zzl@Q;4DzetlL5}a;oto#ZbiDsyvs28%Q(NPE6qQx~^^;%Xipfg&zqqjU{{|B?b9iuf za(3rgQMgoSUAa?(p3MJ&hnj`{TIXq9f3}+YM3LxjHFozJdqG}LX`yj~zNfDgu_&W9 z4s>2h@w1aL(w7sKD@iPG>jS(5Lj{wKV@7<$BM&Ytr#gHvEv|Ezzv!{@uP zY(QA%?Pr&gpKSz1Usb&`=vgd`b7v_v4_ip`O4X20V6#%KC*?5_{Z*t;q)q|@M9?^i zrX!_aDrFLIxg5+E_E6?_alZrH$Z(_?E3#G$N~Tu}B8y)j=RaYVL;>TY)&)3$)85+4fTaeWtm(yqT6I6}tQXRzA&1O_Mo|0oh@mBJv z8>%XPUVK?3&;hDhX-FX!EsPfB#cUON9vOkq7Apx?`g!>?3%|SiVM4>={A{{NYNrc%z+~v+UB0+1K1(ofP^eMvtQ~lPD3E$ght+c>k?8-hI@p)l&uBB=G`) z_#5xMef;RX_nyAT^#q^pPTKn?2j2(<$1yt{qXdb9#O!+@vd;BF6Ry z5xj{TQ~IN^%61VfI;h8;l~{?~SV?bhy!qDGAHDsJZ@%*jzxeoDPoBQ}_uhN|gKvN5 zyC442ztBGEaGc@vZ1Bmm;rVDh`5sqcES|quUVNHjyzbvW-VFc$D!9894%cT#3NJeh zHmVu{bwcf&NCCCk^HVa$&w1(-gtjx|X);knfM`$VDVdsilnq&V3YwID&v-B+A-^&h z^W$dXly06%deQMC>hN>viZlRQ(P`wDIuL=V!$DAN1Rjvx2WmY26x)1oVBJE4pEmh2 zI|dmbSsj=r@gttl=QTBFli&-TGtd4*~P_n!igAA};c@W4W?T zhGd`&X5vHcBBTV?Pg9>nA1CJPXtYutkzFsy{uyNd46=#RFn>4?C#P)UE+hXF0Rhod zra=8DJBAeT2+3i}=@c{iQ30n2IRTA%5UEWH+f;|r8Hj>E$l8bON2~{r^q{{xh=GXM z`qQ+(JAp1Z{7*uhEt)h%+x@yY{Epy19|7@P1=X?<^$J`Y!#P454EtON3sV#tx;G(4 zHM#&50)3B+%|o2!v?+#yBtOP8JnD_s1ntO1YfyN}o>I7En91LB{heB_8umORt_*y)n(Sk~KzJ`A(4}lnE z&HBBNN7jrHHWg@A9fI{04VQu-zpgc>Lh%6}pOP#v=W)!pmspV?Fg7Lp!t94FtNr>1MLy0_RzGhS>%LGx5 zLvDEh^&}t}gxx3@U5iC9t>Z`yF`&ik#6=Bdtf^t$iGV}Q%+ZD@Z+t7gDYJT4@-BtU z4XLN8xdUq$!-bzH^i2S$dJNT@R^KXeC{o7(V%>0(y#^N?bRL+s20w+GT|k9Rfh-H6 z@4+N=s+0x$T59z{=3OlkEXZ;N@z~-kPch#{QklnYm$gy<;<=-AmdH*PDP00FO)$%v zAzI*{Pg$O(0uT@T2b4}xCMI}1<%m(7Mq+bK3hJ2iQ(3&vN+ccnoj%6V-ClEAz&&s! zfasnIr;&b(*^I03@FwP14CIpt52i+Dcn_9f@%(LmhzkLApFK^He3~Dl^|&Q4%l5IA)Qq#$omoUkWDRQQ9E_9H?iB+S#-0 zP#d%|gC2oc{=^}T_z{#$2g)qUboyRdED@&L`X7-;I-Z?H6P&i}2}%%IP#U&w%(DR6 z$1Z(D#+XQhAfgc3x?#=l5VQCM3M!odb`yBT05p<7470JRpj&eQ*F_H_HJpI+a1!+N zqBnoVWDA&$t{p(Dlo{Muk616~G$eGqJU4GrhIOqawFoUP^L!cHsTj*-DNv~SdPb@w z3qc#(v01p&l}=PrkuRt2>DxP@Zja(G4vW2jzcPcyS&8S5*Sm-bcfpZo1dAi!%&ovh zZrxjfV{Co?e=D43;q+E$XQ6#7oMfR9nqfQagx#k+Aw#&Gn<1o>R?BCxhfG=TgPypS`C_N!Bi?I{}%EJk~nab8+t z-e{&cMbrQECIT51-A(wpD!iD{m z?)w%VQHM1^H(fQ4*Xu|aPmit_vp5E)1gCQ0n@>1_DeHT&W1xW>RWm9t(+dPCX%0I4 z!M+r02M%BYn+~(Q_P}|-L1+_8ZXSM^&XxMLj^_dv7sPx@lrns-Zp=)5ZILLkXcwF;=Z??e3-I-=s*y@1YBRE`#Y2=?%`1tKr%M&Zaz>F|@# zGm53B_{(P+8*aVeUy2_3YM=ugMq>X6LzF8XMCSoe3L0e)L}S6`QWaw}y2H+h0%dS4 zQ=5=$+(Hk*tkQ(rUFe4g~8<(x`)%tfDqIEVI(Q z%LZ)9+#wCuUscRMeGner(q@YPBVn7c7Z&7pBOiDP@Ob6Go;j-uaWhqm*`j;=l{))F zf@4^GTmnZ}45fn%5<_$Wyq}q!l&PEi;+W8c+cL+Z@|XiVxMfE+AiP2(rgz>u)jf2k zpJ^F`yp4nKAbWUgO?AR}IZJagmB`s2FV{GCM`pYAS)0&@$0#wIY#faavDF@JtW(6U$%bOv?gH_pYAGgeA_GOJ3=<{8nWyXZXI)R&y} zv#`YA^87^Zke}^V_p0}Ppow)1OkDt_PKKIza(21fYg4i4u&_S7r4J1gnE03+Cu$>n zswxlbM=h$gN^KT21@)jKWuGluJJpNUPRtWX9SjdAwPnI7t32Ig_;7N#wj`iv1b7Lv zu&}U736_MpMchO1wzIZo1k%I^y_gU=ouwgS{5LVhow{VtjGD;s!)+ z+Dx&Q&AdP36og4J__P%0?;dC=3QJg4FRFsVc6Fz^E8zL2ewaT9Xa zV{;~Qg0*}xYgU#U@Dc@Y%a(VWvd#xtq&Xy0uimdyF}87;cPfMGuA;ZAfS+So;<&J5 zo(jv>lCbj1k#oW_d!?le@K1O@_D%knh2IKUo=TT((_OK|03ZV26s#2INXVboLX6|Y z@kZ3A4rQZv0Fq@s8Xp8`oTmt5+3jF?fz5vAD+sq^P;d}dOCk=QG79-a#B3Szqi}>K z6c5o_m)p?CjgYYlS^JeWBt`|75p7gzstBP5p0ceOX{L%;>r5AurIGJf?{ARcwXnQ6r04}A))ws+aWKelp$#G)|!?vvvsTB-wl&#fj;G~siwXc?5!y$tusi>R= ziXE0gY*Vyh@4C{apYGaviL1yevGaAh+Kn8eA+JFt9Fxd^>w^`FTY z$HXbD1;ygkOlnd?V@;uLqqoma;>5cB``$M1DyuK~Z`Djzar5Q4AadIcJHWB^^b)bBiU41G_??QuE&!+;QzfvcR zh+L&#z_1!TN5EZ#hhkCgIJC2?4FV!WCVkD4$adEj8`1%2XJe(ur$U90zQEK3%F7z1@25&~$C0}U~sg*fb z^q|v`#Jhv6WlDujS&nw->BBR~Ga&G_2u|u{dIpt3G7!7IyUWu#Z3ueIM@K=Ys|KCR+D z9?K1UDC8`O7r;PWU}{`v(TjX_KvL@j9(I<$Nwga&(-d8djI_p*F}sPo2-0Khw5(J} z>MA1YU|M-)QazMKMv>(i=y`kg?8pZimG*S8qwT>YdlL7WsM!hUW7H>WLlUKZ!;*^? z3Yqc|5>t^CRIig52q+2RkchESLtUCZQ%S_00UN4{(i^!%4o}1b-MHyc0BgpqOiVD4 zd~uoB>JMcHs2rXgRkOp%konTQMhn7;rUQ1P;({PdXTq**{-T@5n7@hPzm|t}8ylPV zYcWS-X4w*Z?jY0;eixng53}aMpJdwyznbkF{3zQ!`14GAp9uC&Gs?qJs|HhAjo$6t z&3iEc|9=S0;KA3xET(3a+dr(;{^B;*GBL4{X^Kn}!Wp?qqWI|o5}MOboEYKmZmEb? zNMNN9MtAe7?FMN(!|zQS z4r|qfs1(Hw={psj9!~o_ym*Og8s4sqb=Es4yhc`~0sk#Vm}up$yjUDI8!% zJv=hhR+0FDO*ld#h89UR2t~k15{++#ER-sOYl@R^sRXSKYXw|TRB%B_E5HnzMyuVZ zDO;TU)#vdMMi@UMbI(|)9cX#=t|L*Mu&k%$O(n#P%7Nw}EHmBmgvW(TQuGS9$Ku9-o3=?WN zpD`yz@C5n*d+wE~{A=9R>odW|5aHfnLx&B*&f66JDy7 zn(SL?+^YW3o7mkW<<|b%B-xoc$1~;N1=F&m6i8G#TtfL_oO=EYYuOL-k1!R^dW-IO(_?2R z+14ScJukYQY`wX2Ba_Ke5cerl7hK=PE|S5Jfg8VouV-Gl^qX^^BsZ5*#QQGko$;uc z288&`q)YJOeItnhd8FH5FkjZJNQzeOEWo#_toQzHQUp|+40tSOHki0U1}m%)7eg*J z?8e$uP9nT@iuG3^qR568VS4E5q1y2^VZET#;GC14Dy0YEV>2=^vv;aqmT(s%F{Uq)(wHU_K^KoAJ8Xh^?G2z0c{rIBwfWLMnGr{luPQFeKIhO+F0msGJ+yB&qg@ppC8jV{HZ>Z$z%Cl8 z7=C^cAk9iBQgfTz&3k+M5R$meM7HQA=PwZNu)r&VvY?!rcYMOW4wGNr>-YOL{_ATX zkAT6WMpBQY#iR#Y z{JM0`7^rmOO0RYrmY-h$uFoU$;TW$44ZBr4)ZI-Nt!2n-BA^spCp^qsUg} z=z(N?{c&NKRWz<6>?Agt(w`E@gb^zsuDA;iPH0JwteVc5z!~#9)9+S3^af%EU?x=g^wp7`4*<{d%We>-TWm zC=Fo0PB@f4$1MdVZgHX4$pZDa?eeERuCIhZo@4!zA~ilYBrR ztJi0#`Yx^3dbFA>o-`Bni00H#+!oCRVONazo?SV7 zKkvBwj=7XX14tL&&?TlrI-sd1Mky3A9YnPuVdJ8cj*|2M1qL&|cjN_aYzpmBD~k(u zP@`qO;o=1u!^}It343D;F)wmMxMQ>3ZU;GYmOcj7<+r5QMMFuc_xetT0&MJqrIVaXN_ijA6RKvF#j3+(dT4?WUuk84V;yn9Pu4 z##Io<0)XILzDn1F`edzu^a=Jqv}R`bzVzUIlN)yIZ!^gd-_IIbO&DimYbPK-+%*~E zC4U24w=6;A>^4axte)~bAgbCt7`Tb^Ii~_9I2KylpREDP;o=+vtwsG?U41IL&!&DW zyN^1ot2Auh61;5{uqi3=vf*oE$qd{Vxxl}-KRC!_-xB;8zmMK3#7Zeb!Vh=SRa7CSDTh*m~*Y!+n-q3on z5irgB-*2!sB*4)4EbhM4#USka86qe;C{e*E<#%9F4h1OR65~6&3)L)E8Z<$va#yRn z*=BaPm2usgVkBYpIngN>WNhl+zPrQEvL!EwBQiZrH>?@rYPsdcBljyd|Z`vDyu7`7`wn-`NR` zruBJWf45q$^?5h2PC?ytL5ZR?Xv$8ZPc~jCedDpPe9BD3kP8GLPMy`5s21zz1$9Ra4;z86 z#>ggllUT_PV2$IpHUL%%s~#Jt=?!KVW*HLXV39|{)eWAkQ*T}-6zpvU4KbkvTMIpn zOc93yAVG}C-***bfAy7`zZpk(GnF-MFjEvk>Rj|E=o zNwUbz7%6;E5a9kibae0#(B*!gh5Tgj+~vb<)2?!W?cU*kptfyAB6)p`m1@__C5OQ5={3^7;!OZgDcPD4-;qzuCe*VA4GwE;0)VwR zx~yT;7TomhFBSyA&FH8ZLKgZ)lBD+=o2XBw|Cl9Pghu&Cao zBPu_(lf`lsti=ShiS7c<*SPT$S4A9)um?aI5^xiigHHKKgtBTSt|cgm8-?={?7yf} zxzW9F!IPaduSZl1E4&+7Y!ZWy13{F}Eq8@^vfo;EaR5q;Q;P7zH7ac$FgtPl4GU*V z4$Cc8A;C{{xG!-?T_rbW6(Bl+uE_zy`w@M0ZP9*aUb}v3hpCUpcUCyL9a*v+Vu&of z)PwWOA1S0`qP989BFe!cq%$mqVIK6v=9*pzoPIO1W%##9d zbe3$;;S8hbH+Y-&Nh1u>316F!n1+BDpZ4mU1u`)zfsF2_IBo*>D)bW|u$0?K!!;uX zg>cPcpJRqcgPYI{TqcTEqF;Jf;P9c$7X3c`7snzXomiwfFS66CGk~}P;99b}bmGYs zond6(LY_Gsrh~R=?>(I!cZ0JzRO>({ohlzo&+=pG$X#;Z;g2@&?R>gl!U~3fP=@@HUDcYQ ztId_kPIz`#QBCn`3=qvfTB~Y9jrge>mmc<@s&QbV4GJM3+Y(G$gbgP;J0%P?H|T&8 zo8)d@SQ|oE^+BuG1yQ*c;^*VlpvbsWi;eorb)B? zC(U@=fgN$cXNkjU&EzzzNS}!{%c-J@R2?T|)O%sst2M}EqKU8ruGZC&Z5xApl|!(P z_ATm+6^g^v6gp|=OKV`Y&YI9x#7#$f5J%Z%#n}2x+f9bgsbaxUZG&_;MY2XLM4em1 zPA)h^=DMG%QAJ{oqE3(9H_*9lqd zK%k^35Tr^Yjb@O%u@J2Xc1m%_G{uA9Xx)NI+sRy1;!VPZ+|uVZ#HwJXJa+qGwc$|pH`W!DT>$i5g>h+CsS>3X|e@#&~DYU|+7da+#Ywko?UYJf; zUE27K7e3>fpY43Ovxyu$V(70)N=Jhu71eX54mJouKnzgYPt5) zuuSFh$`95>%k`fI^xKv>`8!Q*x~JFOdK);$*I$RNSh3$s4}T`O+F+Ngrwjf&T(YPx z8r36+v(ZIkFl{U3b6uh61zYU!`3i+E8o9_9X_kp3zCxna9wunWWh05cp54P9*ZB(~Y0m&h3iK#l7jqyL@P_AuwFiK&r(E)?3FF-S8!O=H4H{ zbCABck6CA56u<>C90wkA7=G=LCA8)+}Ms)CTjq=Vp{>`n_$=mHpW8k)T;S)VSu%8 zQO%%KBHP(Hujd!OGS20Rc;2-o6W0cDBZR-0VNgl9qSsknBJ8Z$0E$Pl#~Kqb1P3Sp z44TWI({{K`{oHpReCyYx(PBA75ySA`)=Dt?oBKUE%4>QeveWZ(_sdb`ow3}GB7ws8 zXjPa9gbyPIH<=7fRMH>=gN#?^+Fpn$3&Pe|wT;=}>MqgS`v(|9I6&YFJgw$n>*#*W z^Ch1zbtrQo?`yDSuJ;w-;~dJg!lM?1Pv4;wqDauBiXAUS z(Cq0V614a!#tkjY>>|9#D%O9O49^GzVMK~ofZCAC6D2}7nYw^NWHJ>?ASKEi}o ziWcRB4ZY1&@k?j)%!P}4I#$SRUEgdZ)yEFyw`b$Tubt{8HPM2j^_}O%s zO$RB!L70`30y}=5qXX(lxn9Y#MZGXN`_36(!XQ4e^UZ)SN5q`jm$IS+U@2aY8RfA# zu)P_v5pJRuaxK?PEOGmWb3OUFPCwc65K~-Eg zY=71n3?K~5(?R&?*0#}K8DLIrFH1zqj!oe9@KOJsQ)iItn%s{E;B53vS77k)(Z?@D z3(!1y%PJplzOWTBm?@|N)qMT=3sC*iWd~8%* zNC_t4i`Uf*J=6x}g9m^U)$tHd-iHDRfjaFgVCdF5a9MoLP%((}MrCwb|QO72IOes1>03Bs@V7w<+`*> zKlpQ5)MvuDss?v$pJV?YB1d6?^e`ewlp*eCCc}#rcMXNEG_f&C>{PdQkY6;KIU9e} zBBi-+#16j}x@V^77=N#Q9&l@CSHp%=U+$rC;&g6`cG@LIHqz-P$Q=8K;dPD11eP2E z1Z`bOY#LlP!q2ay?!;6;$I-+HI)pfxWcWeQVYdcAdca2+D48eY7T#&59uqu-TYIU= zj9{S6!DJA)1g7K(Wr~wU@idu0Pdf%0Zx4f&freHJ&{%P(R{rl|` z>A_5~Xr?-0@+dKadN4GvQP}3fqRYzsRY%9@FXv`^T^$AdkF}<=lhzTRH5Af3ezbSX zv5E~NYdK9=ec9Pp$7C>w9pk_!$F^p3*dljEdB-d`RNjQ6sXDL2P?QS3x*#6d{luG1 zri3ur+8ja$1b1QCB@?sEKtqLwLMsQ^tQn)gQ9sBb3UyHdfrj%)NqvYGaK@xg7h~GP zC}QCDLHY63OM?P=`dWU)i3QCH^|*ho7KzKCdE7lbAwVh~Un1}zf| zu}TQX3aE+p!@yx&E=Rz5@dN2!2q9@HxFfz$Gn%Dw55XQLA4P47%4drM1GQ{zNRNld z4I~70!0U91QM0Dmy@T0s;tP`Zsob_aiOg>kVV z>Wp|~H99HI%798s+P5I6SS~~}w}NWngb%5#T1Xp4&TF(3}%^NWaIJp$r0A21gA^$FnLaVU zyjx_uENSwo(zQ@>bql{uedWL*&$M2TC?+9Q>zTtN(NvYYH`58WfvtC{u@;gcQnRRl zX)@ax^4c-;lF6fF#P%U@tWV=zv)J`(1bXvhd_=Opl#yk&U8WHCt2vuZ&mrB&$>HEA zry?vTrUYqOUB@kO*0P3hJ0^DCwqlnN0Z(_h3eNlhH2yZD*p*zT%Ys)9gJ3$8T1soy z82#(vp{m?t7-H+@8|6uj`VJe(+DzW}|G2=64q%~)nhl_o5(D1nvyFmR$b6JUv$hxw z(+~kI#Bc8IvK1i~9JGotOg!%#pNJv_{s}evrNcK@Ony2ix@jV6AE~ zSuhLh1n6gLWRgraf4BJtYo|gy3gJOCw>N=n3C~Gh#b+-e3@SDX*_xA7O|&(c<27cP zuayPzj&4$TD{LEqcWQk5j;wrjW#0n#5kC%Xaqk_l;PIT@xd=oeYF(9xydWM&| zWIzo%PXg!DK@-X2H%ucavAr5(F0uUt}WQ}`8UUPd#G+3XrWDS9+h}4>rfhk&%%c+h%#(F^>l6_6< zuh1uvcv*cUq#|Y#*^^B9ZE&B9(hejp3Bcni&Nlq6hwPS`NJcXyL zhNhly09}OM&KXLb%c=Av(-!!KZCfVzopcPH?G2o`$ty43`6R_l7to{jZ2${tyK-oUjkqOdDlu!}HvOcVIMLN` z(SQuC)3pxKTI>emq!K}ukmhB6lbt88*g2*%euJ%%aOiffI1=s4bU}&h$o^)DlcHO> zk4S*PgN9u>ggEO{@ekgm`(aZ9f~K-tq(SGY0v=;T1P=`3zn}qaqSGqomZ9@TsT;88gV+< zVdT%`{y1B!TR>_jZ3AiF02@Js7ayk6I@TL)V}r5~2t_gx&pPRKbZLyl*Vxs7;)C{J z;4v?KEFL(5iZ5VO=B9KaOT z>&a0v)>}Nuzdt$uSJL(cz@l})^K!HgyqjLWSs4Sv0vMmDE6t(2o?QFz4uNGW5 zkb9Be{Tx7jWm+Huo;~D%$F{=_6Y67x3;x2V1`f65R9LP{W?*FqB3`0vbX-1`0FQ0|#^s%7U7)YVgwt~&R4gDx> z7ivUlq`6=!z6OgU@{Unnzs|>TE}-v3!`ebT&n$Y)`p!O`Y1oN~O#hgVx&n%_sk2TF z22#l7$(Vx{;51|%ML!ToxqyZvZOHDeqKiq0+0I_AwsSwvQQSaV%N)4Kb}_8%ZcD(< zEs+%&Lq!H@d6%Z$6ieT*N|_G}`9uQK}53y7g8s;^4UnKX6~>2SO!PHv|?kuAfQMpNFmD$rah;Aw0_ z%n@Y$WmhkdEd~fr=)_}a>3EoNRQ8{UKej*=asH4f981qc7I|Dl zA`X}}5^qz>HF)60f_pv~LsIP%TQoX_C_c`nlD!8vgOThpt^5^F z54%LtOZ#S_kvQk2w4UydQ+#eGfkIDt^>DQgH_GJ|*8Cn-VD9%o^o6c9p00>ZLLuO)|D8nwjOF=JC4ebNL-r~?pQIZ~{%_|_>LC<9^+ZtjNTC?y)bZNLhd|0BDAq><=NAT6yJJ&B^!1&u*et|^==Wr| z&xnsHpgat~Cam0Tl0-mqQlKE&kd2(})!4H|lEiq{-Q>|nNui(QN_&*taSEQ`Ds zy%WwsPSlR$2A?|Nl#2z)K-{~a4LkH1E;PpjO|BcM<4%Sda~ud`E=G*tbdlAxnF4LY z9h3X6<<6kJQH%ePzL8sm&{#zg!z`4C?SX1Wg!Bn)l+pl|+@yTg;qKIZBZPJU*(4#4 zljRN4QH7#m$EJiZ2pN~j7og6uPD`TA;a8mG5wL*U<;wvzkMWH2p-F{Dw%cvEoNzMc z`)agH=x)R3MF6;cb3hO=?M|9W#N|rXMfBK29ChXjb@rPCMO#Jxbv1+??_6+cu0%90 z6(r$=m&8rLbK?}Clktd4EI8zApUyHJc{mz}FESMsIQ(sC19#*5NVVcPYi^N9EGxj! z&nNEEA{V^Na01T+6Q)Z+tPovvA)2eFx{VGW!3FZg3kaU5mrQ4j4_~lNE|SELctjo? zFkL8FVLy1WUqEYJ@2?%9^B?2Hm^ICM513HeZhH*r6Antyk`%%$l@~o z1pk}}HM^cOKyaYpjxg*=p_n2F8Du~Z&1Eq~y1Wan#{DdS$21!C%vBnV0oFxqp%gs0 z_)gI9pcDaHxW2L2top>%B>JerUhki8{YU_bSd&+h6e(lMQR$I9rxF+WF*Y<-03ivb>Gos!C2`uvoJX}3D0m9|295zZ(wNcI%>4A#9d=50QUV9l zC|sLAu@j`|pMpD+GB(J?U>viHQO9_Azx|v(pgh6A4`oY-G_Txgc@(glac7?L>}p+^ zN+x(|A_?jqz4)@uy?(kb0MCV~F7D)Aq!-A^Zl6jiX}w!|gV(QjYc-`ogZL;CYNpv6 zDJQ9>RC9>D)7uGm08;5tJBR&H^)(;bC;_KS#ZwEWg@`|gAe73~me7}{)u&{wB>X2=lg zJAW~hG60o6w;fi~1xi(XU0z@eU*E#ymvx-nQ3!WRIWqu>jkXy%E4-8{B3u76jF^x}8e%g7aSYmZ;! z?M+}^N(?xPpZRM^VvS`q8VPc`304$Em$%Yo1-Of{JoMdVdD}~czQwzK)g?kC5%`;L zyEeRI)uc834`y=_*oZqpjCf0Qze7JAU$$kM9(+#y6I-?Q1>7+n>hq;af7UwxftM%@ObQpstB-s$htpwTweU*1I>%yW+?=}H z>Tner%20+e1e?oA_Py*y@X5+RW`d((%eK+|KkR)8VBAIZ|9p>4noW=ZBH+chg+L2Q zv$@mILeeB{L$9?-fl^_2lWdyMB)jY;Jy0NWUuqC7RjzOea!5eX0s;{bkVE6ar6MaR z;sHkg9w4ay&zpJk-6PvHMFjlOZ8x8NbA4ytcjnETHOUxcFHN(ENGq2bC8 zxl1*d!+b93e6jvno{|b~$CS%|DV1_sGa^6qJDEzk*aU#x$D8+If%qoaa7nPLz;!YB(JBcW(PH}^{OwnDb2TGDy zA-Yj?VLFbs%L+0+Q6KES?Gr+MxE2=YS<4-b6c6t&3aeUFIiqhHSWt5i6l|P#nezJ} z7%s!H_RR}m(1&D9@v2DqUCY09VEH8N4?B8C_X4>-0ArcbqE6~tuoxp+0yP+WGC|=7 z3kwP%WhPupRiHQrDwRF26ddrQfEe0KSv)t|9Xnrd(W+e#J`bsmIU&=;VZk=c=w z)I$`3bBClT}qnjH&SgWWn$(hjO8Yk;Emr`vPJgbxTfQD?x#aEHEZg5`fB=wRl38Tyi_J z?8yp1Z=Y&M0Nq%Co+PV9iffu1#p58`eX?Y12Ri710P!LmgB1z23X0K!it>ZxI37pE zVHF$ItfKfq*cC~JSyZs1j)OWNnBgwgc3>?}__$KB7V8ngc9m3fo`kyU zXVB>0Y@hf4RGxN=830or0Y!F(Frilj#qq zxJgjgctX{v#c9Qud=1kt><%4}i0gSUi$gyFLaz?8UqNqAd$BuK%_|SlF`8_?F1PwMK>rR`JR-Dix4y@6J=Fp6&1LHy}Dwa zz+_^1xhSihS5qM>%PR4^s;1mmCct1Uk)dqL8jc~?x`$*3udiuTU1gz z>xjd>^Jg}#Y;0TOZ-%N!)>M3~z-&^ZgwQ;$i@7hJL2VBm0X z-h8N6hc_--h@)|O!_Aw*upW`JIKPzK;jL!k4=;+(FXf*ZaTbRMTF~FN%H3?!kJf@F zx(G6Aa*Vk>9sS#VT8r8(*AtFqMnpF@7b1E48Kqn{q0o@8IN^-ne`YGxbA8(@=n7P~ z%;4L9njf7nW|G<yf33t!ZwZ9J5tT;l&&D?a7OABsJE@ z#9O6J8p>m4VcS-%Zce5%zf{%p`K7WI91aVH9Nn{YS7T2a{NnJT{)1tdMQ`jNgjA%k zxSVV=)VAm1H%S^EtjbMaDbYx0Q@yPWjtCebDT9O@P!TCpRmPa@SW(dRkO97=2MZ3dWkq`l!p5wEdlAJq?!swNzo7+ z(eR6A?c86bje5DxWT(>Qp^lZUS;Cgms~?PE?`1a6MYIBnMix8pEtSQQOC~7v)JbIo zF6G*~bB}Oi$v%R4;c`F~H;t2uTbUtH8L}|TmU!1ZzNNzlX*k4YMSAsp0P%$;dJRkheB z64&ljr*wGvJRM#=TtwEVbmFo_(%>DMuxnsEKrhP``j>2GP!UK+=wC-uD|DO~*_YBn z)QQuuT5B`x-)dhnP1~I~DCb+$(kcvTx^RQLT!b%gG$<SK$nc4xU5>!}$}cDWN$j#O4097ifh=ho&xxu%HEMx}W}wv4%X zm-;zg6vPKj7)oVO4usUyEuHZ}QfXr-M$0biP~POOTTB?J9nch$9;kF(EQ!?)?yw4O z$z0**I%$YrvT}Jdy}M;S(Bfj7OP58~Nr?b|aX8eP2&?889S=Zl?o*jxjvHTBwmQe) z4IqSCwxxA=a=`!w18f>?#K?{amvw_ZsR5vP#8YWn(UD5aWm2gQeORd#PIb_B9d?@^ zS?}cx)5sA|l@>j$FN?q=DYHQ5ZU@+tvV;x*Q{DlxQ*j7Lu>Q`}ASxRvaone-xN-4Q zTxfM=JfN01QyBm4ByAVAS3TV~iIzpiUg`$VUg#BzT|;YYCLFK&4eb z0-N*?9H>nF0EQ)KYOcv5fVHvR=;lzn_$Z@5ycdTH1+er`y^sxbw+~L8ClhUe3F#yH zdNyH7kJ@s8hO7wRHGp;!4z%}zA!!s@%H(iFPLu_pMANhm#%-aEsIK_cjqY7$jl8Jt zqB*Gyt0%zTsZU}`W-yF(C77)UQ2kX$$ zL%X7_CEE~LwaE6X{tL&MyWnm7&`D#sZK;jsaH4V_Py^MUg;*g$ODh^^5{~PUTsTHA zRqlbqsw?aRTnMvxa@8{q@O3_|5>%EVnHH^@A&IN28fK26Zeb4??sbSF1sJc$n}$Vm zoi;pGPA$s?)YuuM6GZliOS1aY+6zauR+3qBokdWh-2Dj1K9z;uj+)4xU5RaK$S;35 zhsyNq%&sh>qoR=`xm811ZRHhuv&+lp$#}|5nV8j9shW9n>U473$zf&rf=X=QE1$QZ zW?nMr^nP&;SD=T2C7w2<=w*GhoC@oUP(-(a(HSPRXBuUu{W%+YLeBbj@K>JAJ6AoB z6P(`DrxS`248D!kaKXV!BxCY>AQssifSL?WN_H~+Om-H{bZmo~E^Wu+wZI12qq+&pjB&zZ1V&D|^lT;zf9f15 zBXaVu&RN~Rz8~f)r?Gpme|=^c>ILb)o>^0+p`Jt)g?u~VOBOgeQ;F`zO&?vOj1Ltk z^U>66(%d*?A}#60`dc(gB!cv*uaZ6XBI=}4nghB$JjhqB9;JFLdFC5Mgg(VmSjk6e zBv!JL+?%G7^+KTb@idbKJ0DU^_R&pV8fb<+8 zMIB3b8az>ti`NaiUyM5cKvJNJwB{~~V14ft^SuJSUCCSfC*w9st_{)z1XUqO4ZIDc zDLs=cC80<8qm`1(Co(RYN8V?OgRpF9ACB zqi6-V(~2W|(80tp&zkarz)Sj%fXr#x!{X#jdGMuIC?mgof61V{J|ZosLnkuOA!=bc ziKtSWgM#Z`njh0dTij)@47m>tgHOuGvv~F|{WCh1zT|H!lL9SD>gxP*v5(*yl z&_Q{~HfbZMi>MySSFH>{sjoVVe#YENZXUxm?C96!#usVIm5Q9&rYt#*4j)pjOkH6B z^F7@MfS#N7P|~|cF_49%Sa9{MoqmwodB8i>w91i87*D}nh%^f$1vMC(EQ8{ooc_dS zQg=-&(n2hRoUPRo97IG{bjS`HvJWgpcOi8hx)2!4*E`nB<^X#d>4<8ESh>3b)2(kL zoNyZ$W;4pm)jhGx8kV)GCpPgBk`x9qNe=U*AV*_{CV*x>*J(<*IpaVY)Rl59Z<zLZ`u$b!%IJCkXDsLXTpfSQdKwFsz%By zU3y2#X-7AvV|B1BiI)r_YCUv zWdj2nQGzsGS;*eA7-gUl^F}H$ga=jJWn{LQ1KEL8iT~1%DwUp>qc@BxBXu@TZ%;dP zV4OIMahE*UgeR@SSS6I?5Gg@=^o+U!^#wg1jW{uku9Nnf08x0PGTP{{q$&-p3rY1z z^|R@UlJaw46yb%mG=!#Z<~XcCz$5UI9sxsU#o(VueqQ$c?!=}#5?sir?Q^rx2o z%oEG}Z9e)_Mt{obPX+y{q(4>kr<(rM(4SiRGfyY?8vN z(MSw>6KqAY%#sV6aCfpc9O<<^)NavX5FfGRL+ZBLjz-H1u!4&=57Aom<#dZA1|?#7 zPw)E8ZSvq^X@;OdgK)$$^y>Z0yR)X^)c!zwQ_C$$!Byz9pB9vwX<*+}W_#LOTm^(2ajf}Jl+J9%iG)qr!t zASwbZ@^pYdC9LC8AdI~u=nBCOOgG8~N9P1m_FxnZ^`SS0E+^%*TpuR}ai-bJ|6o^@GK-QU}Hq@i$(Q#7|n{OJ}pbA)I2&16*Cx6M-ArqC(NRdJfMrnz!Izgy|MuD1>B(PQC(3iknC|}6E zb#zjPURa3(BV;VB>sgNu702q+p$p7h5|aYj5^f3Ul@C>Gy5$-MJii?iGU>jV%uDlD zsvNU5&4&()iP2J6?U|NWv=Qvy&}DOTPJ6(pkjjUgB}dZ|=10m5r_?|<3|%|X8IFP> z^oFF8lu|^w_FKrFPaU^Gyrl08Q7(57l4M)J&u`jOJ~nKo%tA!A{!I z!rK;@=d4_%iuAM&V7n1rG3$01stee01T66bE6|Fhz@r&kS&3C^NsTVMDOEL6vYD1W zRkwLQS-k^UmuYnYu>$;VlI@8qRdUxWwJz1LpvTj|5%N{&PNi{GW12k0nF8Ssxwn{n zXdH;m$>@1#kcbl`bhL)1WzDN9%C{3$`%a3U%mBE6A#F+rO4nb?y9M0bN-8BrTB+Qe z@ZejrIobFjnqVoD_7h@0)lInu2O{6qR(g1ue_|Xrn0u8y0QjKN$CW9 zGR;U~EJbEAMJjpoiY8bz``RPD4#r4mI+7ntSZ$IO4@vqmVxppAVuEE4Mz5G|@8rFW zC`&3wNf02jx;rH=X&k|JW|RrmZkfgZB>A-NTBffSp-}p;wtxeI&f=4nEcKqzYx$S8 zHFNgmpb0A#xhHY=qDl*m)B(z<0m*JflEf#~Pe9F6W?t^9aK>!9zJ{%X@!-Ci;T9!1e5{MRoDIX7|tU5*5$+?Nl^tGEZzbdFQ zdZ6Cp^`%d0(pVLPUD9%jFaYk5|K;usn%bYq(J^trW=0C6{^NnL0n^Q3vQK0y5_E9P zr&59CD3}u0Hcn!F(vfYOvb%R(eYh=vKDAvw9N&!()4q8=y3GM6TekFa61<&7lD)i0z` zQ7moRb?x(tH`TRQ6mPC;_Z7Py0dHy-q7RQaiyCn? zwLcai&VVVDnBojd^B=KBm0oUlLCO_rtO+T;P01QAyH21|F+j5>#GK2{nzAzDO(pTB zVj8?D^HtCtqV!Sq=3V7Y)sCyp4tT@7dRutotFB7nOtRiAukcZoL2aRW^B>ie+O)cX zdQEL?%DPdVUK!eJbem8wUN(x#X}tKVG9TUAL!Y!4kHR^NVJVD;IOH}mSM@~qAL-R9DJ zqrq2H;ruje2<4%6Le(OY4Sq#)>(s4+>(im=<+vX$LC>eV(L?2L^r9v3&uljty<$dl z-eEIh32T>?F^B)QFa^1PHh|q6VDgf_y=D6BX zSr!5MerFD5QIxz))*RW)bj@j%x+C?Ie$3LPs@R!|WM+GxM!R4ocV{)Z@+|KWT5c=J z_$hkycPxXxGFCV;)Nq->cUnTd$JB7}hPjfijlGS$c?(L+e@Tp2y+u{eS3Y$GI`rL9 z_5Mp-atFIRDF?u%DXY>hE-8hnLUAcW7#)pcn54b3p%X`FhGQuMz5l*#;GL;S(;gyX zFSBA*29J&n$0FIsRqt3|QsJx6daul!HtB3XYdbmQdkZDWqOX?iq@)Y^eA47lQO?Dy zP3aDxlgZ+-)-grReEY{CJFGL4a<1)=WKVie=NueYgFauS;=Qiz4XvwNQxzw+_q;t~ zAkBJOBS%ZFDP$Uh;&kI_ZMsbex=oh4sH>v1otE#=K3H8|NsYfOq=f+2#Dz@_&hnLu z8=PbORVBwb{@%g(6TQ*n4RHMhP5!mcs4boV7S#*<|z$o znp5p>g;P6iY1W*|Zh_OI=?r7kG-^}^r!t1)JK&VGIqy(LbXF^wT^_2@!zv}bsZRM@ zE1gAjc2lb15%U#qZK`5>TuN(p8Iu;6UfAK_EWO=9Gm{O?t&!Opo~!N3hUeQ+!>g^} zE})F1lInte#f>n$u8%kkOMSKNuA=*v8I<0?O~saXWG-iiY=P=8>r5>^#1Z_Jm8rOK zGw!&An3h+{QrFlxh_w`r?po>;;k1)7iCC2KW_MUOGKEXlX_`~C7_K4VvO_T(s!&$? z^71Y<_Q8A&6`zV7iLG;vnp@$l!r7x(odZL}e_k!#O1nAqKW{iCNMdrAS-ISaa zZHEBR98(jW$?46sCY3QgqGb1!(>&>dCUdeRS+$sNm>hMvRXcUf;yJC#nkwj+l{M96 z)t%K_3I;K6c$)Q$9!|Torwxw0B|J!Yk7irXV`c%!T z;tGa4uZd~JIB*BoF*wb14Kr5#V4)2U_R^LqB&%4qUR-xsJJD~uQQX<5=}BB)rw^C= z;oLJ`W}zp}ikC!UJxZIS6)!kr3p)pBt3$MEtT&WTXsT;(VWaWDB4MNUpJwY z+9E4W@sgFRTCz2vN{o~${@Zm$4rImy;F6v^>9HUZ~P5SxG(Y@>5cvuBuuqlAm?^fsXY4ccTL%Ov=bebPT;>_rqWV4 zg-1y#O!a7yzZH7}U_t+%6}@j~_a5F}bAz7W^FPZW2%pJTo1IjE^a6Gqq%12ChTbfY z278Xgp-Qb-!Im*#tfYmvdJt4rt*teOVx{=htM4+0)-dm6NLN^P^y(XFMycM>8gp%~ ztxgVoRrY%pV&@O;>dRJuv^7F0`QO>qgKTb2?HoAw(z+-O^5s*k1Cz+aQfXS#bZhhZ@-A#}Ebs2CtxT^39l4V%+ zHk2W=rl*%7%U%qA4^oNPp@FQtvOImqmm779y6+nXIqmsss=MKdb^-jLI2k$#CB+Ma|Kb?b}JD0lB__-BwJdV zYW2RD+;N$eY;9^p;8r3vVNW)6XUA zJ1LUfg}6N2cpuAe?9i~~3i)lQRN?{8b4 z=2vYc+hDZ4GrfMb(oTH`r+u^@x~q;Qc?Khj`ebX989aM`*E7B9v$C=*eKYd%&}JON z7w?uDM3(h?ys(B>38>{)q=dt!Pz95pG|2D@E$p(TRa@k%r%0w_Fwb0Im0ZZlogo%j zm21=B^tw20B&pH$1M4KHq7=KOT^?G8;|^D}x(Waco6>aVL?XWJDSE)6@;aYv-ixR}i7It(`kJAXrf(uJB<`B{>*X{t04r_52e9~-!7A@0W z@TrB)PH@PLl5I96i@|X!i@t7N=)tv!l{`sf$!a-wO?q_-Qykv#mZoRRnU-3XN)EL}x<(WIS+}&E(WRrEb)?3|!R6hAMlavOYdG6JFV-J$crOe%0|1~bLHkxe9X=3ob z$))NF^sV^RRPltX)?HULuUy=`5=Z0p_c*l5Bg+DKw7Iu7&9_rikZAL&gDVTG4Gmh4 zT+w_?Tedm(?5gB+g;?_KP3n}Y(}o2*oD$U1tE`MwJD0U|79*}Wanxcd)%NR{Gp}hFUZI#nyV%mDwro zSS#FN*D#4?y2sqbGQLf7(%F$!Jhs3Iz;e_Mc_`&f@rt8bnpzrCDweashx@~nESa6UDY_cx+pR|HwQA|ZO^6raMRCsV-i*aCy54N6%z(0=)RsttwNVI4IA8fVCON>P~4p$ig13K)cw3s-oG0#-)!p(Cn$q ztUal#eBTjeZ8{SLQ_qdR9ZSYFi#jUZv6pOPXkfcoq@+z27VWA<>1Ut2Eb7pQpX(lZ zS1r;fAh6OBuFh0iTC3ihvZ${o-ccqeIx{Bj{`*p?cAh@Hvny>EVezWaNiZ3&>^~`l zr2*Twx&EI#N`np373F2BO5r>WR)>^0QoQkp`f*K3EVOIUgv+S19Wv_uy;8zuloHxh zsZwjys)m*$SHC-hkoSg;x0=`m*XUp9bcyuI|%c?7+orKkZ zUF=~^pu(rkM^YhR_8i^Q3%k<5r0Vm&SQoFCrtsNXtSG^Fx(at=MR4)``t2;$nbJb& zngo?0T%LnANjXlPS=`|S-K2c#nZ;y2v+POE$fUbQ!o66Fj=0mdE;=z!8oNqhFi5v} zPMTiaNdsmzR!2(KmSKm!`f$$}rd!^nA$Ib_*gHR$_}-BAnpgL%v0@G`taqe5n;fQEWw!7ecF}iqhuA-XFrQf)&$BSA$p0ur<`b5sQ>CEwZv7 zGB3P6EmbXHPVenmj7@c|TWwjHT;k=<__7QrZp8)HPHSiYC)iN;BgGZTCOJXbE)P*4 zK?LJM>WXT2*`u0uOe!kr_m*YRO(vbJz}EE?WrT}^`2oEuuX>6_dF{OU6&i{kS4rQ3j z)8y{^W^Ak%S=Wa7EFhM!#jOM3P@i*DPi%k=``BLpv{QOf=Ac2+YS^#3Gq=rTQzRx0 zkW$SCyjsLfAlvc~_mrgRoq40rbi%qIU3<9E4TQtJFdFpWZuJ#CeeG#?NoeJS7{j^= z9grmR3JFHb3241Qb{mS${@cC}1GE3rIkO0mN`OZ~wU2v?El<%A5 zom<8KFBZJA3hUzWDKB?zSzPdAm#-=DuROYWmE&(r74&K9);qG6WhdmGUQd;|E-;^LNG{uYdZ<1 z=p8eZQfxV*!0F@cjP6mdB4w-k&aNMAUtw#v{kkLi^v!=9b3MNQdg(uZX`G`eTWq!Ot+ zlS%GRciuqppBmkfRo;vwIqUu@Zrj+?FO5>ECZFvbUpn2Ym;NgB?lL8uut7Gh%1yq8 zdy-uaC!VHi|K*vhVo}SaKi)PA!qmHF%BFWps=Gs=LJ2nPrjP@H;-h*xP}w)hb=7hj z+G(Ydyi+sLZbQ>D-ZfG2sK*W9nyjXG_=8*E8XgPsJx=d-fpuS>QBU6P;@8Y8Q^JO? ztHNZlYR=o=ke?xNv~Db~TB16gVVUL$G+I`s$3m)1NgH+gKp5-FDVZsSR>sg5%7L!> zStiVPu%Un#8CKO)&%?jY>aLo~>Z)>FD~_v6NdqEItP1x<2Bh6m%7iM`cifFb?Nmxt zcpB}>%#g%a17Ek~nIquLj)!GLdeK?emljyGaja{fm(2vb{bH2i2pm-mb)Gt7F+$*&v6-zCM(5v?|4m07^Iq8Lzi6?7B#`ys_azF-f8@U#K zNF>V(SFEa)TL5aZ@rqU4Np>La4~pO4_l_}l^b{g)TTRnPig(=+wX)SYM(Dj|x)x!+ zOYfAB^+@qa+N66nq#oemDzz97$YGPK)c#*yd+V}E-{M=L7A7e+;UcYpaPmazq=<6Z z=$IUAYOYm~czr9|Hmj6CN=h5vzQn`Eba4e;YP!9V?y@t473N%}@X9W$&;?*@u)~Q; z&Arado7-e#T#4!FT^F`dt8@9($?BXd(&=KmU3|(ET4C1nnN2>`8h7z2lTTQ8q=b7J z?=F|^j%8C)T1^t|P}ts@kkZ3Ncbqe&keY_Yf>q}22`Ls@Z;Oy}nWeYl?_yTnh7!s<++??hLc0bF#n=dOwXLObDSIz$Xk5B@)ymZ?ngY#7HLqxE6|4J0?Y&`VAc9Bt4D^J0drrd4Vbd~! ztG%PxWZCJ2)`fcd<2XjNX_-ST#=b(z{#^OrE0$q<&-Ow&Dd9RIosmGCI252Kd1dxm zR-xW8ervnL{5oUT~-#JZwRuhY>T>hBNt#)*(|lL5Ozlu@uM z^EHNKI+NdGntPpFCsLhNop4mH!vleMM=TufM*+G9Hily1*>fCB0K%B$#KAE6Iw@aC zZX$RH1}YUuAf3V9PNzRI;IK!$vp1kBQ#dvg6)h5t()%a#6uk`noIpG5Tqv0n4-X7b zfG*T}ynO`e4`#Sor`%#|uYMF_dIi_Tj^0Qdz9dt;qI6kLdn^>&T-p$g_V!?NB5eq6 z9gIe?2cT4xHihHs2O`l@5kZ4V(2OYLx?{ZR-}h@wbL^sZkgWK$<*1Xx&8`Q&?% z0FFAy3-t?Ve?@UfcgJyXxxu=4o#We7R6Do!7~#wo&ZiwA!#V@uP1uwZrWxO`!LN*aU{a`LSsH0jp_jibfj*c)|4ZU-rp0NosW_|z0NWW-7RyLI_ zYhB2{mg`@Yu3M$+Rx4I5URY64PEc7{Nl;Z)B^EATMbMyJD@6kw;Ef+}DU)7skv}L# zwTb}%RbENa@fW{qYio%hpqN1Uzy|q)5|uxI>_X9LV}F@XtU0QzT(qoNeUwMja9gulpy5%o;+NsHQ`dp&>_ob{APgtHoUXy%UL^?+b9AHbRCOFt++^@BArj;p z^@<4kvsjOO%*LL9ZYLTGqicPZAR)(Cbp%N7dD(NI^7i zw9}-Fq~@b?EsEBZ6!n!5hnCb8Ew3wT73lCtIidJySL@Ilk`&_DUQyJE&@w_NI%oVB ztR~>m;(!CtWCGDz5eW1Sh5`ZLx~@%(T@sODiE(!C8^odh(xo@l9`2RDsP|tN4q#c~ zdKD);5UN8@Q@$zns~pNU70LgSf*4sVqCFjvl3E7>0%odCbd2b6q@XJ;-MDe%T;)9% z;>DYib+67c{g8Qxx%vY1sWV8cZPLzF|&WLFVNmI5EmN{Z5J_o`%Vg+)DsPC zjA8OH7J!5a^o9EZ;Z1=J|B9%I3^*7A$al0*?yF4gs;29~(Hf#UEJKv?Q<)I_{!n4T}Ry8d?L(RyH=Ytz4BQ zC)8WXg5fRnk`5 zP71s5sMvA!k_X_{8;Y$9i^2Z5(j*WbFR(k(ndTJk?}%-VQUytK?t)H?9#OE|!Q+$? z2R_D7^}u?F%?PTL)Px)`(Ba~Xo_?wQ$k7qW%b50Ypc8gPVzI#}b&_fMf{p^=9$&A6 zie%j&U5InBy`*$CN(M#h;Z0Fwk?Ox&%|K8GE*e)gmQ<8uoD!y0ZgNPHmYt5wQmSZp z*=TpNIdUY~o}^Zm>cHcMR3}-D^`m4gdZ}p+QX@=riHE~(_GBC^7aGtZG?(3W>GGX| z_M@!|9)40)i1#7$2!XbQCEi?bWSaE;qyjAX{n1-W)*e=5Q#h-NLN!0!DaS7^1K0P{ zkSMEo=)&r0)kvUUb#w=iL+9`XP8%fUvcU3|6@ldqZH-F;%bHiraSlR5rskwVqE-x0 z(6X!^^K}}_jtw-mG`0m=TaIm>BQ?noiG~2ZZ;GBw5RVoa!mFRuzFsA?NC{1kiU@&$ z2yB_BDvXF-f&E^NE{0-CKA)}W>1d~S$UA+=sqyL{HlCiIJUkU z!&2-y6*Hwojtmaq_FYIm^1vy{Fc*-*O@f#5K6`fAYG?j@2Su4f(sK127UU~cJn9?f zJ4&`EodVR;s3*$xY=O?rsD983)RUo!gb|BhHTbe*^`b?A)-}r)u3Xj{D9?Nsy(ghl zfi|d~+zktgq~(i@uk{_bHXcyVqSq4N+_%GAv`J zFbzW(#vb{$F)eY8MCnf}HVd%#7x%O6?(P`U-;P3z6wDQS^YkMu``@I(z^ z)tf>jyu$Q-5I!Fh*3id=E%q0l(fx%Lb%f!}6rPEh!t%{RxKd${`GhE}6h>jKu>G|{ z_?8QEYz2z667Fk-;ae-r#PPxt3<%+L2{XD**uHLIIX%Ki^uVoGScwyb7(N?u&H;Tc zo_Q|foF_c~^Mx3>P}qqJ@vJSv9=})^{;fg;uMoC#72;hb#Mm8p?l*-I{H72?-x8jY zZAj&YLk*+86k$sZ!>I&T8iv2d5Kf(8jn*OTVTMS|H;kdf z4UcFrY_Smj3k}=X1ivP{qs4|fwAe6)ml&qA6ji_v+HZ(xt6|l*8Rlpk;vZvJi8Y28 zS!;OwpG1B>iRT`N=N*sdgbZUmWO&Bf4ST4=FvmI#V$OJ zh8Q~$;bMkoD2{Ru;F*KS{~*e?!7wK_8usWW#5)P){FEVvPsX!OMp~yJucsJh;#9+m z4k6BIh6tW+*oo5(tME+2@SO>MoP}^_%FD^*=Ps z@gE|8KQ_d~PvG~Y;VFCuah?VJ9Q>a*OebMjLkYu307rg>=lvRCeh1#af;3+-Jj1Wz zS${#9|AOCtH;mE08)Eb|D)hCTjo#QV2lju@uxvrHps znbwePntqRIjCf2lk!#xHGfZP*hG~uFnZ|g&DGGNpjp%NsIr;(M?xyhXfpB{u%$}w_ zv6pEDKWK`veN1y`U(*=d*Yt>wBJRf!et**{oN3zrnWpI!nId|SY1JQWdg>1`#pt0( z`%u#i7Ms>Y3F4QV)^LSsPE?wPs5b5TT2ln)nfAy$({SocJ5gsEzQYiIzG)B7$1@H$ zg=mC-BhqO!&B7)V^%u`Qz5+?H7$X9e&RmR-2Y@(itldn^1qEu%hc zd4{_zQ}iI69?J~&T1KMRvVDD)a888#fMwNhusq`%k%yBkJNPMtJI%63Pq&Qm(=D_a zYNN;VqV^ zztZvquR%VpwLIc_g#DUjPuyUMiCZmW^frXM17*9@vJ!W~?HzWu{8Oa)Q>6bh@aj3ld&%%a&*8_m+shX4zw}Sz=V!*09I+_-EK6>a{I@zAc;r+cUD8Eym{Ap0PSx_z$-s z2W>IjYa1iIwwUO%EnmMahT^t4HfW3BskUeQGq#cV4AMByw#Ux5MdBjc9{M8aEr`1X zX?(@@)L&`~-{rO$y&P%X47}AA_20s?@3gJpT}bzF#QA|O#E)#F@JC1k==+InjsFC0 zPuZT4r_jefW!n=^;rUM^?PqO|_^EA8{M0rkerB8X&)G)sIa`b-Y|rp3D94{|Bl>6L z^Y6Af{+ew&uOlz7+oEuW2mOl2E-dhfp$~Y>iM>45=-wXT`>4m`cRW_Y@fh_pJ@(K{ zxE;{XL}6)IUeC$iS)1ZnB!M@tl_JX#vLBRcZWxe1B2i6h_MF{=er31 z5c2Sd$20c0M@)<(%nv=H-pn!lW{w!o%P|rKIU=}M4&+LXIkI<-sBg&e)Gy2tqm4Pn zSYwWrXwDIZ%W^y;%Rw*C5o4doF-F^Rg#Xwa+gY1q)PEBGCm_8OaztWdjvd?tJSoQ- z`BaW@PRlXGnK|b8nRw2ba6d1{Q-48@5xgMB9JwIJ8pCh#S!hNV=GfyGB0m@97|}20 zc!n>|F{78@IhW*E;?f*3az&0cd?mttJ;x~gdX5$SdX8s&6mf3NF-LF95yN-n*kgAf zA9v+gqj%@nzHjGv65mFi?!mLia_s1LP{wDG_Or;t&vUHc^EsxI$T3C|Id=UobIigQ za;%9La!mh=c!np}bnK&+=#s0l4~YL5&nT(W8?wk{inIc=+EK)GSdDn z!cOGczQ2Qh4S9PV>Cc$qaq?!ELwPfdpm&A{?l;32-*1K(pFP7Ahs+S-@EJz^;WNbO z;u%I_$qX@c9Ps!V_C#og;k3^X!!OP-e7~Au`(K*j8Gi|Gzd_trW*CL9BJ7(pjIlRo zh>?E+|2YFXZJyyX^Xv&TPmI}l_GoUNG3L!P{rP#euOQDFD#$a23-W~cP@Wn5P@XZd zPo8IJ-#p=)m1hmizI zH|H4%VBsx!kV|;R81nWVd(%NO>V(Jrqs+~qav*Lkf(x7QFoh;st+wI08Fy`J$t zuU+5owTAn>!Z+xJJonlYgI-T!gVzdf_JZ$TG4WZiC-`}TglWpRhk>I_`DicsR&)t)X})J{S-w%YJYP7iNUt?t1ltg&E#IzR zjo(MZ?P&NNgZRhfdxqEK+v98U4d>W=)4vwaI6fbB9OZ9Uy^SQUkdute6xNe-yTILHF{;fQGZpwHFQd`cAL#q?h3|fZzaRN{0Qg|OnRqbYs{d}j8GH!w9?CcU4}+%<=bMF(ARmw9n`6KU zVDx)<-uDphQSj_hrK{)Phdp#`4Ng&03CDex4w6d1!T_`S5i7+P9j z2bUFyp%n%8=!yc7Xe%%#+6u(*`T~1wJ<{w$*!}`L5h<|z(E@Y)MEJ#!M!Z0b#|u35 z8$h3o=bu(!1y3umM^1y=83k7247i_J;PIVRU=N>FU?k2eFvrg>5QXRBndcS=-}wdR z*!cw>=ko>T$Z&z}`$BUB4|JNDULnXk+zz|*x8^Ys* z>NC2BuoHU-)4wOi$QbjF?+-i#cnI)NVT_gw%YkuXvH`!WK6py_g)nzxtbaG`8uuWbdokX>7ir&%wDEiBJ^?*fn28?xS)M4C}kau!n9j z%!yHiy$x}0Gpy)03}g5khM52s-fmd_+Y$B-JnIfT`wxa)i1DWLieUvY-b`R@=)>5s zKF>6x`KD(A&D=TIG<*k}VhlJzI2$y(hu`O$w(oPMIr0UJ^S)@>Lt8Ljy9Dtrh5KcuRd~56CN9VCD=?P3!nB80aJ{B7wJ4?T0;++#^^(c_poV=eGlnAVcMflm}2-xNaM$#e`Z?ZIn!{S zGi~v_Y1O}I3ja$8`;uvnzHEBxe~&!8Y8vCOB9DJGg~+oEClBKy;7Fe3srOpenAbAK zy%zL!%kmds+*4p#7(0sb4`7_MyCo(HF$UVhGJJblVt8+a-PDug&B8e90JtBBv<|fF#2m{S z#n{t_vFF4B%Njlc@dL9n)^98tHWEu5ew5-A}Vf^?d zON?D?SePgjC3R{_6jdBhFyy8(H+#quOZk?w7lXZRb4e+TmYP0JelmSqO-v_+Y@cD&9Mes3@@^+`o-{D0>33TWIo1rZMHGI8e_Gi zZBra$d&C-y;f}=^^H|#)S&Qd?6640>G2S~KX$NdiFo>~U&^9N6NVgq%?m!;;ZOe&Z zTp6(qf7G_eqM%QN`;cuFeg@$%Uah~__Do!iGHgXYF2^%R5avqT2wrK6;A2SdG28Y% z4*GFC;|be7TfJKZ(P|wF);V|B=`s zD*j0j{z%tfru>7yRN;O1DEIoyJ<@*!oeG5;U#)QL_cfB%1-bf~JtTcIU!}u8E zlZ?+Z{+99oG5(V=_galklk zyqod6j6Yy}mhnZ#R~Y}!Xna+bBcE|^#{C)RFjg=wU|h`j3C6XIVa5pKX2#PQKg)PA zALI8Jf6VwC<8K)M#P|lI=Q>rM-5K{|Jb0xVT{d;D;d`? zb};raZe;untEP*D;>R_$kIS89&eXWyY%+Z)W@!<98SzV|ZHZU$_T+J9@>|u;Ep3HbQzAk#y)seC`q^sm<|{~t5`Y(}^jnEox}9~u7|Q}GHh4@3Ron@mGjlXQMu z`H!BV=slSpKU2~BG9AoQ@r#&F?4{^prZGPt)2m{7=p04YF+Ga8A$tB1+P_fI%}m!r zFC_n^Oc!3D=uc>Wj3dbZSf*+2iRcj182U=On`!@UijFYt+gs5am@b5Ah2o#i^zg8H z-UUpH4=MjIF+K4CMSq3qDCRgQe&%P(fa0egx-0o#&h!M+S2I2I73F_D(_>8Eq~l+r z{BLDC!SuJ7j$W$#@6-NFKg_i6GUfk$rbn25O8Z}~{C~mp5Yw6Ed2&#dC)%jW|8u4b z7byBWTrU&Q(W$&Ivj6BJ<^MaTeOD|0KQcXnxwvfn`z!koU8BOk!Swi76+L5v%1`}u ziY{b2h;ad>w=dI}Uy}4prVH<2e|~@UOqZ~Kg6UcvpXny1N4Kf?E134(rRcRxk6^4p z&+lM5IHqV_-$w3NbT9im4=8#g(-TXw^WzVjRCy;D|Hk+_4{Tc7!d>+JfJ3r@8rpp*VwpQiipoqdcc3;3)&)CSgh_Qun z8RII(wT$hIzv))#u4lTuPtjG3wTy=`9>Lhicp}FeVBE-f6648?LyV_0p2c`B;{}Yv zj9+Bj%6J*$RgBj$-hPtG@92x_{cmGh{7TXHFkR2|{Y(!r{Rq!k1M17n$}m{adDonSPb&38w#|!~aIb{|D0}O#h4N;LFP2{FEyH z1k*W85B*m8=QBOV^zKYMzf=BuF&$+3!%WxzUilYkf2I#%dW7k@OedJGVA}bEieIba zGo2|9yLEc(A7y&@RTV!o{3)MS<&DB*m`&c*a66gLxR9}haTVjSj2(=fG4s7`kA8sPr<14N=lAscW%~O} z2lr6^Pcxlh`rAFKK8)?D{GZqH_fqsrOb^4}MD^trrhR)W`Y%k^!wyCM|6*F~r)cYB zmA>;4MQ4^{cu4sVpRfGC#B}g;iv9}Ig~N)zg6W|zDEb;5pXnQ!b}mu=w=o^Xx(CYN zw{-Yx6n!_-zH1fz9UcEVML(?lnSP9EaijA8G1JjT)!v?Fdg3PKpIP3X(^Yx>4=VpC z)8l>>eL+W&Y(>-RB%^)ytT)7gLG;q1@*E7zxgGTy}f&WsaPK6Yo^oAJYp z4&y@%xO=GX9Ejg7Hnp8S_*+A7tF0@eoEQU)ePmGj=oTeB96cp*lmK=$_FA^uL(i!t_6xzMAPbna;aF@#PJszs~;uV0s(V6VIshA7WZPT?hnA`^=i9 za;D$QzH3za+xWeFoACk0M;Y~d)9>-8?4DrM7?{IGgbh#uCO-#&X6=#u~cogFr z#Bmzk}&6#%{*-jD3tz#u(!u<3`4l7(dN;D&uDu&tN=@@m$9989&E3%y<#w zml$>UtxR9Scp2je<5i5;GG51c1LIAMw=mwycst`a8SiAgoAF-8F~$cNzsvXtxqG3GGl zF%~fH&bTMz-i-S)euVMkj58SzWYqBwX8I7u5=I|m1!FbiJjVHqdVGHb(+e4!8J93F zWn97d3C1?YqZyB7JdQEQ*unTo)=#>a?qTd@j4;L+2N^dpev0u_#?u(jVmz1evy8)x zUu3+P@e;<%8LwizmQjcQ8q+%b%^BfuW%>@rZH(V$ypQn##)lXmWqgA1hm1dAe1`F7 zjL$Q^!1xm5Zy8@zSz0>(ndy%_gl{4nFk8D}vb#CQnf zT*h+7D#m$?^BLhMdM*5OxXgl}c~XvVdS0mcr-b&Ts7BaCszjf|gSJeBcu z#-axrTE~By>D^i0{gmnbn0}6F-M=T8*8Tg7O#hm3 zDf8nuO#hbg_l$n_e}(DS`&GUDBh!Ck{C|vdIs9LlzM1uvzcc+h;~R|sWc)Xy*0VH{ zKAri^^dmYmOe&qtKbsrHAtkwnF->6xL2N^EBFCNnz=8>aEKE490UA zKgW0x<5tGY7_VZyj!~tCa_-tWp;nKB=C+KgXZRcmQJ& zH1aAIwjS$EO*G7|&ol zhw%c&TNv+TypQo=#>W|d!uTBHON=MsnQ?k9zMc4X;JX3eb@;a9+l_BOz9-;|<)Pw4 ze9Q6Oh;IeHVSHowV#%o(z?b;58DEkSgZTE~oBARCehA->;7hzA9_)uN@qqY6eA)wF zs!!NDD`>mx{`h_vUk6{}*WUQf!gn8h55Sl9=pKkKy+f*h2jPolvVz_ryi^jzRB%KC4<5E!u_x9gU;fy7~qjdM5Vridjbq(R35N%R)g1Xvo0QPyb3s zN>8UrKJ=T)qmh1VT8AZC&o^Doc9gF(-o|)0j%Cv6!)*F}>8-zH+zW_+WPFbCWyU`e1-APjDKf*lhIhK@{z-s&sfN~H{*vH z_h(e4NXjoQ$6jK8Ec+0L;JXyxeta*&_bz;Yg>NA`8Z1>7QGBn#_ZfUKO`_@-bx`eyKW997 zgQCB@QQ^It6#i%25P~5KY z3C3UDp=j^76#BL){1M~%cPjevyA=NWZiVIdC_MgNg^TY~7#veL=Q|3Q-mmb42Na(B zpu(HJtMCU8Dg5)p3itk=!iA42JpM6-XFslR^a+LI-&gqh4-_8qLxn9rQrP`tg=hRk zVeyj+f5*7*(~4g5jKUM2Rrp)R2Y#yP$j=n!|6Jj{jK6$N(cb43HY5~=f2r`)7Zk=` zRJiU}3P1U4g{xmuxZ*boH@&Rzir*@H@^=c~{Jp{}|DZ7Nio&5+6`uGcYYOXMSJ?dzg~M+syys1Yzx$`cz5lJS9vUCXqIHJC zEvCW;EQPT%8RF6BB|3ZC3xXthRcYWxNIxM z09>trvIdHh15g10lzYJS3cjX*I0DBT6+nL`>ShI0Bv7{~7*#;81CF;T_=bYp6=1s< z`BBLL-%_wm!JP{3QgAmwh#~%J{fX+tSV+~AM;ON$pJ7ChU7uYX*u{Ze9N5KyT^!iO zfn6Nf#erQM*u{Ze9N5KyT^!gU2lkjXJGfUvaNKAJ)-DY0yYQ0>gU-TWbYa`VRSSb< z&A|^X41Sax4`^sxxVj-&*noq&qE2wX#x)JWn@rz`vASW6?;P{E=HMQ_>y6`m6GrqL z99DrS$1DsM`o_)RzKzlP=#1bN!?)F5E%vSt1e(HKA)Kkb3ddkCi{Py0u=qqw48tRU zBYHd5<23vAfpvqpg+n{yfbm$=C3^akzv;|icyw;=#c9d|gY7t`oo?0;Lt70pabRxm z5o3?~09|3!*o!Mxn&pY|!y-2BI^(SCfiNzTXdR4og*w8EaIm>RfM+rS;2dGPv4gx4 z>0WK>eh%_^Im1U?9RiPubdRHv%g9EG@tXE%3e%+`a2YZ=!?;-mx7}=BmGb0sGW=2= zJ)Gf{e8kqI58VmV=4NU{do048L|lBz!S&jGF}Nn#LpM&Kl;k;@;)y)t(ESw8Z7H6u z;emz$+>?MiR>Bl<%=N?Z-^nX18ag}q;t2}$NcKRDbRiA-k7xH^ET1JWyrEFfY(Lbd zo;Za_Y&V3uDTBhiyxlPRP7De)kv&vOnO@5tVg=Z+C=zQyz1lC(9*f9QHD z@;=A)Mp@}TswR0;8F>w-cs2I+MB5{1J5)8ub8D)ny0k1K`pD!EP3r2g-Set>0*P0Qa+` zuw6dwoOJILeo61)bZ;dF6vw6i)^vaMLiox!D(Ofze|5W^e5WbiscEmLSo9v@{1o9m6@T*)Bice}{=V;Fs+yX_Rhf^I|2ise5 zn^#!&DqCHjczQFZXd~KF%NJMdU7zVg0*^)6XcoVu5ZjjN+k!jz&>X^wS!0>rnNsPI zNdZuial;VhcRY*VLR`HdJ)gnxQR?}E$3d=9#9R|%O*p?CsJKgx~kW-JKC4# zntc3F4!) z;U0;~{(LmuneXMI2-~y|y2?qFYAnTb3GT+A2#=(=={6hM*oYg+q+T+f;;pi~I2LNB zh|f&&Y3WeyAu-9Pt!Drl86v&xdUZ!OHV($(>M0Z2d38Ts-rzFvwRHECmo${i?_#yQ zBrip2IVasmWjZD1u=YPX6pJp8;GMPfCtt)??TgDDWsXO3Nxck&;_+~7AP^gnE&h7t z*nUztrUaX!)lDGu78FfaLgDsIna&tHh5I_9n@Js&%y%8>;vRM!SB~*$46g{6L8ze5 zu&b-h(k&#EMnZeUa8-*A{c_SV`Lqewu|FjbuPN67yzz}n7af`*i#!m)H9E@W9C8V@ z<90rJ;;^JTBC=6zl|;Np@?}I4kOdU%dQFrQHA)m+q7vyKa+@T(`yx=tp~p#zUOiEd zFvaSbOW_V4@_t4-sHZ3RcQ<*wJmZ6SgnMmY2bA;vL8$U*>ghgo$tO9#mhQ~={E^R4 zURqLkJCUf2a!!T^uAb8B|8O2k*xA$7HPEAUiLK-i-lU#2q6nFt>*;rwy#IzCHY&+Z zx>kqCZITQ}x`-H4gnq^&l9bn(kngx8aqF4n=`)&=FD4-=X7J0B&`+3d7~~FHESh`-}B3Y1PDaA z5<-Z+bc84iqDa)Gh+ZyTG-(ltUY6eB_xYT;E6I7ke`fd2oatvyn=><&{Mem3I=Cm_PlG|0l*pv(HD${`4q!u#(e0HdN= z3QSBgOS9eocnJ_+W#%g*`Kxp-F2HZTGGq{XvVLN9rznyJqn`%2D*9>YcgX$JCw5Tw zYWEv>raf-{^k(7JO}t_B%nMAY)r3y&LI|5L$^qJkjZ;K$b>-`e2G{K}5SvpC2X)DIxc zzg1P`#z#jiWWJlmzEE;3TP{jSORN=CIG$XtJ zZk7~nY=M5^ea;MBZnl0xJa0KhWhOEUM3YSkm`{*fUt+u&`N>UDIvm01r@@7)=%)b= zML!`Ju)NjLZ&SSEem2pSS~sGJu7uqPJP5@6N8Ha0w=t2XZ&To9_d6>tTbH8$9u7cG zwl7Pw7eqgEbe3)RGsjTovZhbX8_>@t(Q`6CU2-3E|LdSv>4!@PL;T2f(UJxfk5_h7 zc_1?ad#2JekACK%Q*SYx`D=vE42FS848ya3ZT*Fc=dW?Q<#fh`D%_a%NbRREa~V3N z@N)Ki-cesu`T+06$*0It&ZIyg!=N7kw=rFwdb4W|UOl1&|H?b*c#s$xX1x5zd-BBx zsa+G(q|-*3Y}#>4C#`XbUqa&>k%2e$|6HowENc> z1}^I6$yC9P>#w-=fQwlgJWo&@9IpI%hOXElO_FF;lk0H23dZO!IV= zw89JDi88E}nX^Ev785nG73LlVpyqryy??jYhg)SOb`d;<(PG?}c;1$a9v$bYF?h&P zrndT6&Y_gR6!tk>!?Gfi`QPsOHcl)gG*74LSY>OxX50;Z%J8M>t9er0+83Xi`U#&g zZ{M}OENP9>#<7IJVjaio$E`%QsxY;C8+3dD%aSc` zybQr#=fKN=iyUMaKJYT4VLwdG$W4^$+r`uLQF(h>YC2xfOfb*2$r5A@Oa-`X=D!6m zv5@@?L#tkDQOM1fg-Gleefu_^$ zfjBNp?n#ODxyh#GTkc7f5#L8M3OSPDel5_U{`(xXMkI#%GBH%dZpX{<@9Usl|Guva z2ttp0ky5OPg0N|FN8HQIW04rp=y;iYuV$;hS7MZ!cxCeUKgdY-O2NG!#dh(^l6%EN zYUz~?chkVQ9(ny&bcil83|xv%$F+O2r8_QOvM)1+Bj5W6tZfkE0Bh#=!oBe_^aon! zBqRjSv5+vrrZ$E&*GlHn=y+Lg;P)Xa+(`Hk9wESV)-xAhV)e#n$IHbZ;KAQi%!gcO z!3q)xKd+<-Plyi19Z2ervY*28-@yvz3WW_d-JY$r14&ZNYj46 z*X{A(Ye#m^=amCL;A`f17}fMQ@`HF;^&^*#&Au;DF5Z`x8JnOoUB4guu)OteF)rx} z=v0PGxS8{1*D7jk)wydR6+eMcJRM!O5+#Q+@+WMgd4swsa@G>0^`)AwXk<@n}&K3Tospz7gfRJwe35@|w$wz)7F>jF_ zcxCpTAN=KQuay1x^R(1Bube_kTbX?O=g;B)9i+jVeu{Zp{vmp|8X?*&*M8bry5CRg z`XXZeHyMWgWQnl}|A}X|A(+dM`?E9S@!$P6vermsvTqPPgplH$th^r^z_R{+iBUEt zMfZOo_`(I;B~99%&;#;#FmW`oL0h#@b6`8`ENG`V#@jeO1DJ#k@LEn2D?3PeS0 z_BJP;yZ=pC%X56qF<0(?CqoK<=FQ5^Ojb3v;%Dh8FaRaSW4qFQxLanT%+Oelfqm&W zY<>}3vOSp@G+brtORHHhy(W4g!=y{kpK~puh@7n0G;cBqBRl<0Y zY@Xi+jL~O&a_eU~sZxZ82STUrV-3#F5eCLTVBz^#-849fv|!;+5$kOJBSO30B3#Xn z5JvXA!vEc$M5_|`-Z|dChN6lM78(9Pi>8gi<#EA2KPK#+-vYK%Vz(}Q?KcIZ36&6S zlT{D!L33Te8y=9`W3y8AVRUYrcy)XZ|2)1a#wX`~o}8PSD0vU0Lj%j^zCA|`LyT9q z@pdoY5|%y>WYNmbx6w0l%@_@Q047$fK|JkiA_hO;lSvQY0b|+vKx;X2VkQST!7CRY z=*&%ugs4eHj{iS&q3S7gAw2BIIEfl=D1jy>5&T#_DSZ%K>%)Nw59J^^tDa*R(r^XC zz;eh%trB#TefERk-B~jKK{Q@M4`wGO*ke<4+2Y@#>tG_$Op4z!Y^9O!Ll%0 z7+8z5z_-QA(w`^D+5cx=?FNB20)q5?FeAt3O{1!0Bj3zl zG~!#Z0!{Lm7m@cpgjcm8sUHB0J%y>^i9feMI^`O3O>Bnj{;+}U|1hY5mgCn{Lsk_f zWWvKnq%&U?4`X1JY5_9XlU-0mNt%BI7&dW_e}7 zL$EQQWL+~pG^s7KJH$sgjJdibA61M|i^;)yc%krY|T zqy=0x{$l3SXYAYa1#NJl&5vZI#%H$o^5JkGUUDMiO_Wcq3bGT~LpOfK>USur!nq+Q zGXqw(Uy@~FT}kOLA%)1&N7$o%kHAXqm65+hr87NfPw*eCx%MgW-nrDy^2TLmfK>N+6eMW!&kz}!uY_n4*Isz*>j>>>I2GSIfp3?ixEu@( zMrqWeiRroVnQ1cq(M(ipkYdWCzD^)LAa+?k2|fyP#Kn+}MnO09$y`(tP`%Suy%S~S zKmf~o4D~;T$;~zVY~iD6W<3mitd*=+ct_#8ww21qy0w*R#0Sql$;Mt|Kf)%A@PF_W z`jnBG!DR>g={|ruCz#+zh&o&?_u^wYa-C_H84FW2#tQmKk6-I{lj%+IuhIA8NN>$8 zjcnQc7-$ZhWMt=KiCiue*A6@e#i1G&wG7C9FhqO6|kw3f9Rr5H;cEpnan`*#jo1ZHFh^MWbc>EbT2QHi{&f{5`SyKOaPL4D_-c7DPj@MsV zrdRTxKwr@?Z&UvUKAI+@9z#2pJeDDW$FUVh4j@CHz|dS%G2l8w2me72csap_CqP_j zl-T-2F4lf~*#+1DpeS2_9n?PoCB|!#t~`O&w-L`-;in{s7p|n_Nfb8qIYu-L)=nS9 z;zR+}O5%=l(gTZrgTmtCe1-#K9fh9c%Jb&xo}`zG$I2(6Z@%%K8cAgSlVAiW*nflB z{k5$S24_9OqSoM|1`kP!PYQpNotR9+WYKTXxf0fa>5c~#^2(6k7#5rcwkT76gOrv_ z-X}eO1AIqxMwG^wA-MGz0hp-f~Nlo=vt@F z!S5`HZE3RV8HJacwrMiu8CY*O04D6GsOUdOy5la0uIXM^>puPrcMs1HY!&HBuu%~; z$YLW`nI$!cZ5q|i7*NNzLv_bEV9sWAr&Vl5YPyuQi<2qsFdHhpVGDg>JGU##+Tr13 z3Kf9g{yU2T4cLeWJj5%j+ofj7S(F!6^a%7Lk~jkyh9^ElB5FKprTAIJ&$4H!!pf*; z(XuO)nFE`i22@fij4tD!^<_dAq27}nn=Xr=s;)NjgvOz@~K7HvSd z3Pk))#ek*H#Yx?BW)Vc5OP9d&nZB;xwAkE?_!MtSPCCUHWrg#e&yqvWL$`S$$9U{c zeW3;3RK4Kh&EgljrppS{7h26O(U}?S;_O>VZ!ltIsB%k)3wV2S*}ReRHQl?$8(g? zc8_e2!M{n|4Cy)vU*zn8T+VM#2BEYn1Qn22|3xJygI+`z&FZn0Vc9c?Ig#&RNbp6HX_@O z!QK~}r@sN&;VV%|xCo=rIxaU^ z#l4_HHYY*%{ zvg2jy^)m2JD0q+-zh1jHjC3vmWYNq&G=J6f>;42?!>HbJ5P5>#iPwRZN|mm*#ee5I zV zK>}M})j`_zN>XYzB*$Z~sI@l&fKa7YR?e|>5Q+z`CPlAe#D~0!Q5?_Iu%?EhsWX^L zQb=x!txjJGrPf!eV2^wi{wgWaWn2C##cNscDr6j5v2?gry#l#GF1`XmX%%V+ZX#2# zuR=mnK3w=3y565;hYFlgk&9l-%uG-gI~u9}Rqa4^E*}7uXf1vtmgiT(o*46tEPt(? ztc7<&R%|?FlFa~j3fYCw9*lq|Juw}|BsuX~XOOE-au&(h)$@hfz4D|>~TNsC@dm9wv=$%NO^bJJweYnd|mb>p++mBp`P z_3rMVu4IiJj9=IZmVA=y%$Ydi!7C&=?4LC6ppqSQebT(AlbHaa?;-Sy9a=mGYY6YG;PjICB$v55VS9Ag-QRv}Gh z1=;}@z1_lmE6d;ZWkP_b^oGWvi11i8E;tw*L6`g0x2f&52ZFo}w;L~AFu5)4|1&@b zgS|l%OVQ194h>~O?a{oqQ)R%PvlHWB5eJa~ft3l!;ml{7{2MrKNnN9wiLun}{Ie=7 zKnLTuzYp-X4u&%tIPHm&jNb2!AOJhb2D+!J9KH9^bTD-V5b2Kp)K3x zB-4;1yi>`zVn(nfX4JdIHUh}L#s+%j_&bRSa+489QbpNRKC+$xtKQ_rmvR0*oB7bL9+b+fSy8;&LGdg|3Eu?>w;TFP0A~S|07FX zrRKd01_>Ex(Yt`yNkQ8W9TFJQLqlMzZjxq8qz#ppKxVhY?OEUV z)OGefjA}0}={!M0`TXy6XK42@XuK3Kj#(8wQQIA~@2E5kjKPAIUGK(a!;%Guy&S23 z7Yf(AiBkF=6?hDf!TlsXuQTI4HJQ$NkMoeIPWubqOLzC7R=r2dnmg`3+4>%hZU0ul zuJ<6nf-`~Q)xU@Jog>TN%}tek|A_{cs?2tcQh{5fPtO0R*^+@ZOEvmlotnqN@xcJ7Qk%^Bph?Ys(@UT*`@>fxM8N~-+UX&L!8)@=B%*>#2n}pJ(&xgo1K_vo6Wv!*aWTW4p%>S@S z;tl~Uta~7VB3LP!3)_Q)km@gXcjzX~3Fnz(Fu81`4~q}xajsl3Wza|DNk$VM`Vl6w z0J5OwmC+x8!f_M5|3|<=nTu5C1_ha#k0hp9&Dj4TgrKV*Lf6;^i10LO8TL5pn%LJv z@8se~&272PLdv;W)#GCf^E$T2Kc518a2v>VGhq40ay#|q8y~>!{6lTV>C(sFk->X@!q&b;+y*;d z_Az%n3O~W|1p3^{_)m!Q%hbd3$OoA+1<=7Iv~ooH#c+ovk=;CuUE5aNa+58eC_2`D zqUc!ni80U00ah{^nt&W-0cUAX3!i%t--G^&>8c|o53Iq`Xa&=HpTDZx^3cE16_3U& zh(F{0N>i7Y0!uk^II!`coL*}0IS$_CF^&Oy{;Kuv2S_-;;XTZM=XK+?2x4zr>G3Jp z0Y>WbU$O5AZk9&DS_(czho%rqYh4@8F)kdA{ESbv$hm-UwkbEJA<;vMmK2*nlbIpf z>ppE^pxgW@cV}k&73&r#v;D8I(hd4leaXu|HA`vXr^eQ}6Xjl>{UQ4gSsQILlNuEe z#{G@PUs?jo|AuK)8se!0l3A91TjK2f#PEZhyD5vyqS0XfD`K4i&`~Pl!5C7dT&69rzElcr6m2wog=kM^2 z`@6Jutp>e6YwBxDYwLi|z?r=g`Yc=K{5@9&e2%?fW9|*_CE|uO3~1=zr}Q0!{mAFQ z5XjL9J~{Qd#1LQ1*WS;u?FXecQ5rr6SNa@1-vdG=z5ju^!atl}ABVq=;X3E3X(Ujz zsQQO4i^T*x&dxfO8rJ>JgUz-a+4c{RhcwyEyjM9e!5f@k8zEQ#6hZEGB|)&g`VZh3 z>TORlVYStHWTdb`32PDz(KXAG5`F|uscg5mN zf_)QAxz`ui(SXSyEi*HVtIgnJ)E+tU3q8{?^$VXA{1@tlRd3oqK(_u1T?(^R4){CT zcKLUf5kA0^m5Sc_uhtT1;z-i-%N8tX_?NB4Hp*_OghEzmD_Bf4=i)EX%O0F~J4DII z-`a7c0@#EQC?|7!gJ-n z;$`fY%{HcaUuKElOHyA(0yf?Y@y9Ic)pI`Nn8)YPVQ{Z;dpO`lv*&z>MjYk8DsAai z$|ylhES7av8a&}t8iha$E>ieU-9;$+C!kf$3r>PYf-P#Ccu`5E5-IlDrf~$jlxjqU z4^lb`sM*4=W(&jb3^zaY&*l!C0CW(xU{rw6P}c#mMj9-MMeJ-;D8ukCtRz-NtSRt8 z!JbU#%rrP}$ZRAAE)i9OW$cC7EZD4mDzX!aev0>=SlJhwNwEb~M1_h|ND68b?f=un zJ}{m~?RW#@P$&j(}x&t&Baw6wvdOWJS zYP6ZzaIKN`h;S%x-We-H{;BJ1!#_b})ppq2rSLzwr{I;d|4f(p*xxu01@lInN;^?K ztTevmiXIW~Y9(9ZzoB!P`7+y4`{KnzYdswe)QLuV{uAr^0Gbk+u7eSH34IBGc3~Et zkyEfNy0Y^51jJ*~Fn}tcL=Hs-l;T7T<%n0nq*l|I4Y0n2K zRwg#@gRMl0gA|OOh5=4RYn4FC5>sV;q8@?>~ClihIbFGU6IMgCSIrg2{E*%F?34U2I$=@l9W5HO~M4H!Qjs?pHwBaV3muLeBz); zd-_|fgz}XKR1A|NH)$w{bnZ7 zxKWpsEfbTm1&g%M3Z-o@Wn)moYSxZG=z)8Ae4-pqhET-KU~K;+CDEsBe{$3xRZb#z zIQSv+Vc=2AU|>5o;B=u6h5rf~F*-#Bp9v{6*QI#ndNLi_yi$=OcPU=ap-PgNA=kW# zvN-`pfEEJKk%Sbvnn1@8CF9aB(cu2sM9`fU)`ihX2Fi_W!L7pl zEaVT0Nss|w`DE}{G#=~mLZ9^h$~|Z}0;NpiR%)u) zo=V0D?_79mE&3`O`-HUs@E<1=4qSL0R1_yODd@nX@Cs5wx&Z9P=mHqj3B`dONDTPj zt*?l*UL&gy?L>#bW`;QlkYSqCJQ*^rlW~2}-5ggImCYW1pU(70lnNw2Xs&x8edEDs#~@)F-^7Hxrh#{OGad=N@@tH>!vh`(NNUk zPuU4F!Y(aRHl%ftdSr`)NZGI8pH1WO{jn1GeVpumCSDHxAwjDDWORlu5;;6_-E;zIOA=EF77X zK?_nzI-4*D|FO-GN%QNxr{Qyw0rz2bvkkBO(&TSI)DiW$je1nd5jam>Ky>I553=cz zn`;^B{RI}4kt+Q%fhhG40bQJ``#7ldxgvv|oN2asrvo5-^j8E>UT=1EWld&6986+a z6pUn3CNt)8Z&+q$8b?yEY)8%r+*nb0Z}t6yWRaJp;(VVh6xW|gk$fb@z`2IUHz
rQjG#-~sI2rX{-+m?p7R)w0_<_ba%T##93b^9awKE?<4nvM#tdX7&gGvm z{^HNzCXHS6EF1!i&7!d_6W+GnvQm7~m}UMj%1xC^S*TiTZEld{eT~Hg88O56o%Zzk z8dg!Thn8&|_%&1|Ihm>3=Eu~9jY z%VFHp%yWGPWT6ixYHkB->}sFc;@aUO&6Z0(-RbI=gY^YRg&ef6oMN&wmO7ChZn&;# zwC!;|)WNAoE{LyJ7Ut0Zwjj5aj92f!+Cp-t$vl(>M<1C7D8or+<{JLC2%uBdMKHb_ z8V5_(+FV~QjN0AQ4!IW@GG%;ju2&iW8JSBbOn(ub!GZ(maIIUa^qlP1S!MU)&KRFf zzeRdrGhrirDJ(nrkjH2TaJBrZ&Ok9Zwo;Brl*OIlBS~4kSLd|YIM~#U#i*<^m>k4U zEq5w&xDzw0vnrpm0(C`HVsTV>#AJP)3xC>fQr5+l9!GTnNT?MmSH@|Ev0J4_D?;S*GPFDa=Q{br#gUcC4R%py>R2&nRnb|2l7Du2Px+?29($#f} zIEAdC9Rv*3vV{qmxm+6%USWhO>INH6R@3K@ZV;KWAri6aa=t75^4tL)*{!ws55QLt z)lT>+(H{7iAhpPW1H#?Zo1GeBG9v4{$!$jP1`h`_r49)K;qFl#=#r3YG$Cl1^x8hE z@`qf5)T?fxva~BTOp~~yYc_T@@ulOiw=0IT8wP%g_I#Lz)$G6Gdc!yFTJd4YVEo{O z@J$xX;y8`-4cCAEH|`eL`EQ_Z4pk4WeoN@~9Dwt8Od9;~zm|#rZ4N4+)f^aJxPfRd z(01B?V+S1)m{k5Z(6lGm#=WsJ{t4H4Om02lnjMEfnUIQs!@fm!Dt4_VJ_$4>%1(VU zIjc*OR6fb$QF7`@kO0~Ln{=4~t~S<}CD*Wz4;=SOxU)}|cF`UW`EP7>SN*qHZ|#g| z2Xy2Pa1KtKp&|aMT(*&-?;-RLx(}hF8#|FhbifQBpy*;qH%&Uy>sw<$jUKP-_bn~5 zaGA$ek6B{=Z?mNMTNDG<3A~(6-|;ZTnAWn_{M7OXqLXa>Hbr)S+eP*R++W2t9NPU5 zk&NBF_^obnMtS;mRAhDwk9=#KEqeSfkiU+t4D92w1Ezz)K-x2ilIdJ4rj?^OSb+ePjnlc;vQc9UD|#@$k?~|^4~sOVDci0d=$;qbW|r&JT~BDII0iKYDwOrWAsy>c zdgoc{S=~Pm0CpbbKfC8ckUQx(KbevKBa93*Jct2-gC<;N7UfykE0g6+4Qzc7QkSgB zvs%k_x=y1}<9>#faTy;L9PuGys)y&PJT%F$&%=3Ej+|%iP|5ue%KPNwZv;)oB&~je z>j)bP`Iepw2l}cj+xUD-PbT?XPePf(Od&j>f=o6DUK^SdWl)~g#44ueS*h7z%d#iW z%9LQfm6Z!mkyIR_g>sN@DK)9rstbO>Qi^|p9=2`wLY$25iF5ke)d@XOi*plwlnVY0 zFTgtYfP!O>*87Ys>1loEtkzn>M2>O5g4db{>{L%3u=85jX&tbu{2y4vibJ!1fgv>Y zmG#0X#hYgL>t$ua-(N=c0;pZj<>H^j4B@jV0-nFJhR}&=kchF@wY(Ql1l(g2!9ybz za9eZ9XBq7u&gjUH=IB1XS@>EmlhA1P4P=iezly?Vg5p&4 zMS2v#nPy}GP}$$d>a0UQybnq|KL)b(?T|d^^BdjAX8hpziq znwKYN@<7hyVh>9_%Et7uU_8YYK9DxK#J!ySlPuC-PLAei&-h9crf@!02mb;ZTmlJW$P*P^PStu0 z9kszI#o5x=a!=cMTjv_$BP|>{ubnE zIouzJ*jCo{x1NzL{XtJo^~X4s>Cw<|kkS?=tj_=|O<8uf3>#p9leUw<0DuLsrGs!k z!|-IHxjmX;csj5b?vkL^vSEPr!gKtybwHGQ?PA{WO%8uV&xQsrC@0*&&_9&QMR>ff zW-NMggTVvMDj7bIbGQ+$YC|o{RUK{&u(0`=lS*8NFqa^C1F@#FAfl;MU=IKF8Ayih z<`_5-orv?wn1NPqhOV9Fw7CN@k3d>n3TCJ&d?*H3bQWBwwGUB+y^-_GdJ0+C zF=?E@pAn6EcrSn-Y*x7nB^d%K?KOVq9DJ+}2V&PJdz?&U;hWu=Yve#u5R zBRaPJspu?h7c#QQ`Wi^oA+}SBFE%Yz#uWj^sprW1>)ToFWGSfD9kDWTfW<5EmJYD6 z>zN~~23V;w%*G8rpkQjmq>B!Z>$(=4*)|8yn=12d3n~C?($T%iI3C!G$HCAz3E3bl zy^GL~@*+;ZtkT+XS`pI$TPap*hAb(z6r*d3+4^FYAQtEvFXbk)e;d!|>J&i#Q__04 z7+jGKwkMe-6b3*m)jgH_)+`SIOwX6faye0Io*_M@*sz%FMy&uj)^-oFxY@Ka1vtuJAIL$R$`` zlgP7+O35SPcqfIWmN^rs6E~!kJ=&!b>F!n(c7KVnqD08SRIQW;uw`*6CK!mP+o^7< ztSE)^BDZbUvXr1r6Owb1#K0+~MS%(qGpHS678kCy;39$jThnX;E4lOlV51e}_ye=m~k(e7=^9aUz*1gtE$rpz+N zhRmd>VHUd}%;cZOH4@%T!CqMc4(YuA<=*X`uFPv_NA>LlC zOmP*%5dJsMtqdJz*sP2mX4oV7l1vx|E`r?(-N%>i!z?AgblSw}i2lPsWmzkZ#!Cgu z56&a%1W#%0J9Xz3p;?ZQrP2XOvu)4eP+oXgS^Lu*UpO4o=blBx)?=*P8fJ0p4Q~0v zITU#$1@=H3S;Wz#ggCebLNQgpf@Unbf;P&c;gIc`t~uB_+)|<5;7oRMoa|$9wz?qM zqlj=39GPU*%9*E*uz<$@hGDZtAWO(#Cqkk#@37r9!cqrGsb{)f1k{qo5g4@OSm?uM zuXZ9}q-unvIC%w$-#5EXt}sB3)kQ*stT-80V#Ujj!B&DyEVaIK_7Wbfr4Sb3UGL&x zK5@Hr2sF=|Lm)HjwXbpAphp*%SsAjU%;Gx(u2ZWN4Yjgl%TN&eO~XKN4`4tfA3Vzg z-9!x@C4(#oGGj)f58-QSbwG%DqeT^xo-7(=xm!fbM}gr5=R)!T=nSH`qoEz-{|Nqr z*6TTeBcq@@V-=nn1+E>NAm>L}#<}|HC{}Yi3EZAkMb;H#%BGC6K94pUC- z+ds<6!leP?9}Q6{DazT#k7jl?uJ{{T;phjY!~=}92Ty*o*E!e%9D9lZ0 z9LDc4Av+V7tAL77**%KlvDud&KoNn7`~DzDJDI6)PhH z(8*<0zyd#REBiDzwtBFtrz_@b=u89t>ru#C0kiOXjxnN|6pmqiDklYR{er~yOUM}q z8*obm;tPREu8nWu7z>GBwrdxSJ9IVLHU=w0B}wzl!LBh7QvS~s7(S^OV?jo1IwdbN z$GE~8B@eurjpbv2FZFDny_*Mwae`rtl}b$U!D@~zy>(-e7F@yM4m#xj zS?#eGLYa=IbqA zpc-Hw8@Ko+G}#z@GJPDD)$=l991gw%Z)EH^i%N*hMm)FexIvRi{|BftOVLkjGnZWbVvBro8U|d%r!^f+NP706-yr17ZI8Gk#f^y?J+*D3G0$i?M{H6FyIm}Dfj zGxS-oLzy$R0k)ETNq`Y;&L&dAOj7jj~|^8k=lv-0%E?tlqa z)XHNPOUVStp-rL<`3|a2!TN@kW7q^MNv2K!VY)eiXyui06IEP;MUnct&MyuQa@#=L zHg_UyT}_mn@|Z5jg%iaclb60BF4&s&q&NZpf^o|7%tZ?kYR3JvzB@C)44 z1E@ulX$5mHpD_}>*>zer8RH$B5vzvXlanm$mab;@0#&nSW8V_=qMlkB^=0bhP|$jp zLxjUDgMpS~U0gP2rb8qYbZCNyv~k9tR&KfY$3gMQ>~fTxkDWB!Z>0N0+YrLX*xeMM z831#ii5gCpTR0&e^?U&3Ew`{C093^;j$RPc9Ysq?Ifg;zmt$0Ew>A5#E?L-94nYWr ztT$SKb8{~SUS8#vZbael;c}~Us$6B0{6k+yll;@zu#gF15r-=`7wP#a!0NB%>J(Qt z^jDzE_CD|)3~~j0wah>UDzLU8!RfZA%6g}!fK0*_t^$aj4a3Bw3RD$1Kos?#qm*F} zBbBu$E6JbFnDBi5cdGb5v{3(-GxX1oY3X0wXDUhxR>i=u`fR&Sa=gOg(FlXda;C!K zzVD?93r-R@DxhD*O5Rk9wugaJEk3j}j@cs@DD?*xLbz+As4crHsMW+8sevj-eFcWs zoj|qyHCBL|@i2<2LQ+1};*nNx9@>o>rmCTpR#i2`9$_s`8O1~UmhK=BGq~ljdK&B# z>Xw3w5;J8Z?!CZ`6VUIcS}?P3n}&S$WYV2TukSJURsIk5{~l(6jBAearey zCoiIRQ1Nu+3l|eMJV|qmX6PToFjUGgQpV63qT#UH!RPe`IB}+1bTrs89ZNk!_M%99 zHL$$k6vEmifK{7b_VeZEV zX9e+*GOe(=oT}+os!|47JRNEPw(C|*H>5(=qN}hM9bu!S1hq>Q%GTY|^(;L!q7D00 z$S^eOPK=RPrUWfrsbEjwLzxgDWNwfxU9PZY8kPbUS|&D2U<$yg&LGGK$iEQ^8*sD$ zWFZ+W4Mvt7L5tf>M_5L9f#wd}iTVO_+n~NosDYTxEEzVF^dDp*Q?FFT#>7kuUO36| zGI1uyVIcF^nll(|4ZMqs&Bpdtwk!;Sh)d6zq`foI|1Ky%wxKkdwbBfmhi`{g5@u2M z7&gK`i|FCZ({KV~LaX^dRLwA4fyQ|f$wy_;EDJY>a61onGwcw`@>y7|nluwhuwnsd z-YiI$Yi6PN&?Q}rQ!#Iz*e+-V2T`-j%~_WA5JEd$(DN$+?#yL<_7s5MrX`J@WhG}r zc2JNBvn(9(?j#knAdxh(j=q(U)_^9R48XKX=wbkuN){GcrG*`*LKTWoq3ZY!j=vLx zB51GKfbr|NtF)4U)T@=2-dEahHW4==F)l|&5iD@+4iw@q;jlYp4E;LkiW0JUwwZ9* zIU92gBBs+X>t=HjWgiQ$hp;V9ZEJ)PTW5R-!*DThr&UMtB%T}YH^+J}`oDON!8j?K z;}$<^4k)EzUp2Ea!)Io5vB6y`HcjbkuQ{A?89#>|E7uAqGmNaz8P%BJB*uh>VT7@3 z0q-Sub8HS4QwA&==JUoJOaG+%k|l4h1%AiJ!*G|O^qEUsGXDq8wRl&f`4~JGwFZms zX6bv`&Co1{{xOUR9%&6jIGoMrf_Gn;3;fHLTg(tH*5os-$$e$iJhprwqXKK&z@11* zBr$5{Jd7;5HV=CqGEc#@s_@y?7Em7wXe}cHMT*UZZ9s0p`jDx$&gaRwN|t)g!vM*; zc_ewX+SScd`gD$2!;49K{FMyDvq^zE%JeGO7-m-?HL{2?uXm97RaPfi$teFEMqy2_ zuY&mkwxC^AXd`!%4Khxyf_=T7kbzZ7*0wMVY8Y{D$DGQ*YNoDXyn}dY_0hZ1r0P}Q>O9In&G|>0L-8LQGpDO)V5M}LOjw`fRdegL zolL9dkg0uUbG4N$*Q+T$jhJtJl?(noeLk=}G#^B&KN}-+7C=RqzL51VzYX;VS1|Oi zzKyMS*3kj^d%~DjZ)wsiq zi_FyGs~Fl93RS7`6E%Js!{Bs{8L$5rXcb_@GGeiX2YpS;=)IeGm93XBTlv zQO%Ici?C5(+In-5W&CR-e=!t%RrvZYrW^r^ZZB5yAf=0~T$#KW+mL#H1ANC}d!-Ca zt}Q1PLC6C1a@H3r(q;`~gS4yDmRPvck`fB;+pJsykZ>76!Uq@zZV-^gn8TMlmRP>r zI3rN(C2%BaKOHd3{(x<$}I%9g*U?)q-z5?5s*B_?zkcds^%;a{mc!kAl zdEtY!f`E~21PLo(Q2$@9e+x0rYMuMF5YIeG?vPwrVRerFzs1b<4wQVmGGeJ(fk9Zi z!b*y3NA9&B)g*R}Tq&Y^08+V9XQ^f-hE=g|uY#>qjz0QME3O;m(Y#g28>(TX za|&(b;jo-^>9Y!bgeqRPO6dkg8tC<-2ppclR@lci%PRT;C6Lh8tilkfwPD>VOufc! zCcHhAZ4Yi>F2BwH&RU9~yiy!3@Jjd9q$_;dv-fJiN6u@>`xG*uc}H>Hj8ZdmHDt!v z44Fqz{~j&W&(P_kpfd>S(!sr}qco#owFS~i5lb$ta-}P|whB1je>HGCBh{DkK5kZB zP07TNtcumpntVQ4wAw-=sX#d>Et?qSkyxymkB^+C&`$aTf~_E!e=SR)(WxCLd*WIy;7)N|#qj@H z3u#IxXxkdtWiva)a_nXI8p>2B)_}zouEipp#o~fy7Xw~fC>q)WV$Sh@n0{QXKwZ=1 z+FCQ)-PfsQm}hY?8SA(n6Qut-6yjW^?hw4HQ!|(&Z6gK_O4#D!6?pU4Sv-8-wDlz+ z%^jn7x>E-cTqd>y0EgY`w+fC+j&d z2Imlxtg52CWWBL`NDToZXdjGmAh{?(_q1dk0Gd5me*oM78kOJ+z*KkOP_v-%#nb0hI)&v#H?~3a zLxV}|f*J+}e-FkhZbV+#0K+}*qPfN*Z9j>zqafj{%oM!EVw?l~@4v>aDs4b;BT4Su zjmYEQuMpRX@6>QXnAUFuhGv`pTQ*v9SIY_6xq(*M%=jePx50|X69elfDNN;BSr)ojf~pZg71t+H7Zn0*$5n4xDgUXEo#H|>E;a<_UxwjAG`m$i&%>#la%oeP)!x_?U9))(m}O$Nva&u76kFO) zjG z3i3BL8$n+3wy=uTEGlHGKvDRgr&X*WxX$j>Emo9W&DsLj12{IrPZoR7o2~e$p1OQ< z6U>^;M0 zziq%7J&`*G&}k%TlePh8_9Gtl59z)QzDD7 zd`)d$kW067L9W`4Qi2B*0*0%m1-Wl~^MX9E9W1EDf;30t^gzLo?a`$UY{wEj$~HuTx(ITl`wq+45BKjtbhuo*GmoKvqW)LE zF}tF*InvN~Cp$2KDZz2XIAbo&F|=gVPN?4F2@+XA5L+`l^Z7qANn@&+$rX{i%GRCi zx31h>JJIbZs$SkN!|9&C@Gk-)6&CDP;-`|KxL;oUaNLSad*Q` z^t@ghuQVo--`Z^E?Wx5iXUgTBYOvg2%RxBA`EibNgdi{8sI|Vr(J9H>#jY!Rb1o}e z>Idlr{_9)TK?Ll#!7|bfD4TNVbs&~fw+UM*iyf@028SGX%4Q&V#a0@@FynF)Oe23@A^hNzQ`{bu?uEZS|shK3vdmZQ*2S+g7b z2mE={ZWsV$`)=4}<2%JBW7+JEl8F7gfkR|_hj&}@lMY_lGQ;W!mN?UT!z;wB2&Say( zJZ&c@(W+Ll+>01I1=BIF0$lsdG`LR6!aW!+zwSBP)79H$ryjGKcs~XwT*{bm?a!Kg zZS(g5JUj!Neyt&%>j4QlyO$)&+}Ut>FW30Zy&ySmOy7OLZ~8;X@O{`eiEN{r8NEwS z00`Ul`{28y%odVEg6w4Zc1T}+sJ>6I&9Vy)Y}i&wfbR(CtZtnO=IC)P2$ z-TgUcyzwk{?O;#GIaTypit3T%Kg#{!fSzGbNbD?A>vfj|KEW9>ivZ3Ecr8g4|3)H& z4PJj4or{=lv*4_!5Ea=%PqaYQAA!&?-SFKaIa7}ZFDsOYnns1)3*vl--h z3*C5+p5a-u-#9PJrv1Q9&^=g4_tTzgZhUZ0`YhUy#fM{D#?e-mqe|J144zyWv>&v> zi_>(#EBmDG%!jVOjw=1U6A;XZVR&c+iYNQCd@|hssli_MA^tZ;Zv+2G)$`*!FsPT+8N1+z^D!}tnR`A zQ(gCiZgu?*5@ydEsLnxk7Tu(|g=ESPGBu1;48Q7*q*FYrAaf5|*fIS7Y0^e!37lr7 z5wmD&-ed!6-n6`(+e!aMmbjHs&Q6ArjSNFuO!Cx5;u73{8X*-z2ZQrD+%32zO!E}i z4ivB~nZ;6^?aUcO$ek#pLgvH{dM1oO7{^16#z=UAppk7_m4ZUL#eOQB)$j%i4dO+I z)cPVr4zb}1=+`j3g_-shd)MTWHF_6}`$O-B?TD0_opv4-UwXwVLIUY~i`v}@jBc3>g_LfsjLZ!lxzW=B4N zVCbLJ9R{Yv%OW?=mcuj>z&-siWSDe0h*S@JEV6YCR~)8OkX&N9p|LE{KZs!jO_3Pg zJD74rZ5qKNq-6;*_XvBCr%jmDvW?r1m^SVqKxCY@?iO1YI>*rYP8)k1)i&;T^ISY) z+Ianlwy^-I>S+l+a|G-djg^H*w57w5M5LH-IEoZfeH0biIuIcpO}hyVbX(};QA#(8 zH1Jd*aQFaQ6s%(ysKeL+8HXKXDZ4wO+wsI8DLH2P6F8=An#T0dDga9*{|1gScjT~^ zbcEU9`4GLYR%(yo&6W7?Wi_F1#vlilnfFF>5qc<4nD53Df|+&wKD+kX<8sE297=q%*4PQXKNMNLLtsd zu!f;s@dhrkG^i}aC)l~=obzZ@zZ0hWWhdDECdes-jFb{-17!?D!?@-+V7pJyC%{Yh zWnv0M$gl!~WT0PrP#uQ3`$^;v?#2f!7`^%7^gsd7OIgG=R4RwGMkzU|2uJn;Hvo4b zjA0IYhjyTv)kl`I`e>tfom4z(YHdBi0|tDHHe-uvM!_j2>||7cjX}$XgTQJ(2AtA< zxP2HyNP8V2!;XQhVN`GxM$2t>k5g#&^iu|h*PXIZS}kGx>ySa}NV$2GS|**;mw2|G z#L$}EayUqy1bYQKT-OYs1GvuxupD!&%qXol?U!M>v1m=(}5hGqbJXctiQl zlOX%g;2Z;R>+l&usPB<;xE0_+dXUEtKO{`v6o&Q$hJJWC@*Zx!t0R5RS_xfc;91>{ z9ema(Hp9>I6p6aSjyVe?(JR>?u$b*x9G6Uyyt5WoqD(pq5u(JLjy@+EEmU_NpY%OPhsDmR$&g(+>&iQfPxYQN*l~k~-E{I-PMxt*jZ5f_ zGZ>YvXQ6q+EAJfqA_H;k=h#OP2F5>%y4rf5@jlZ|&Ya`69ppY9JA`TJ(m9UJxJQAU zH}vlW&4P@OW)fulc{p3hl=A=zo0LfaZTk!!XJ5?7$P@s!;x?r z`EYtewh|<`fR6h~vI}W2$>zvK#`+iBjj0MW!UYROuZ?31rT79);>jfVZC-$Sq(dV!2^ZO(1c<1Umdv|gwS1&(>jgSwbdr7-V7T>_uQHWC!<}P?=1a(BcQ#^HE;fx0f*iJ-lMi;Gntp*hSB!K!N7tHC{fKrS8@S zxldgMABS9Zp4mfMU<4sHrexYRR8)D5O!^)=8}J;f)RuYoMs`c$W4M`Wgs)(V`DZ50bi+Qosq>sCsd6kNxOK~V#)!-t~z zHmZ{Aa0ZCQ4*o?;kNvH@2znp6sQ#m_J|)GMzAFU>E`jvV0_MuaOCS-0F!ZwOD!Oy< z8uYGV*Ev);jtGp{h?6Be0yy*r;{5A)_@teTz5y!=27qx6A*AvK=A=FDvA>SBqZDN+ z6T^BgGjuo!rPdJyE^+H`U>YIlYJsPIMI3>%F9@$8@i%WManHYr>>+ddmjf_=(Q}M$UxNf30FMNT_p${2(6GW3l3XY6CZ9%$Y>W=kOh6#|Z44Xaz7%tlYT8^~ZbAwKrb(fP}7-Lca$C zdm{$0NmAt3$E#p9fkX$I0j)~r5x~J60=SC7JmYuJJmc3@>iiyD1fl6ue#`!-1Gho$dAATas?_>%LlVpeC;Yf5T!)g^Lp71(%YNMF)3>`P zM#Ar~0=$1l!b+pX~0AZI$EQ;o8)>6D!sWTh$qvE~kBa;My>rPv?Eq>MsorW%ux;;!J;n9t)tt z*D|rR2Zj*rC!uBJh#nr`4o?8Jj2+tp&kVwD=!X{_DGxe8dW9#Kdw5`**suh0f;bH- z>fk(Uo`-Bvw&bCA{>xn1fsN!a_I_{}_ZsF?c^+U71k59OxXYE7ho2{SM8W;nnJHNJ z7;ru=mv0T~Q8w;w!aZw9K9-aFSkTCPj7QVgxO|V?fz^2ZycH`KFK~C4R~!$y2wCm) z4e+aO)I9p$q!Dl5O)UFac^;qa%JX3NwP(JkYphqw^U(@hFWCupC%rRI7>(=+7=4p* zTu=6@it`k->HP0MNi&dLOh4dA1cwJ(VMDUT0r(X?aaA>>_H69?9@{PbpAoGka4 zD{@twkR4j?l2$0ixq!v4r(*M6cahlF^HTX3WOUOhK@1}+G=|1MOF=WY}GyCfL!3g`QfIkkE#kV zG3JuGK!IMAJW&B;Y5}^3vnR3`5PIwDuHGKK_7x&i3UB3PA5}3QR^ZVKjbtxC+dv|T zlk%Q8je#Sm(atRH2^7R>1KHbCZv??3ZRj4%=2+;)B)hB^I(D;w^K_i}5nfMRiRj_J z0M0IB>~SEJ&mCm&wr0852O=5{kKw|7H|BaDWDYBD#oOI|X&gzHNqrgFz+-_Vd67Oi z(8{BI)B0-mWLZdnUhdq|0}pXbpS$#q^&!HHEM$XDKY{uJ{S_5YkyFLy;wcNh z;H!=g8w#T|Q_I_02t?%ZJvVt5%LuHDK^e|E(s$@dMg7nr@-Z3Gk3Cu!18zH#fBl=Z zn&rP`HGITXX7uy8m!p`2D>AF43efQ!r%+4neyu}nJzA`VQE>;3pDEUq-_&)50%QiLh}0qg81UkTN5t^@P<-znjs z1Z(&|XtQ&Hp>F3+_4hQ@E9aTr9?Je*)xRSN>&Kx99f)BATEGSduvwD`JCT2bC=swD z5rHvV3GRWD|D9yu01r#JQ+C=qkD4iXG6hL!q44=%voWut8l-tomXZj)5$Mkru2 z`hcx*%)M!&Iq=BHFT!(R(1VM>)}3FX@K_)%PLN_)u?zigtku1vWM&cCa-BOLxZTtI zRN<%jd9=nNvo7e)|VG9h0+dqi1 zg;sr-5O%dfY-booXcngQDS^;}?MH)Y14~f&HdD3JT=ldPZRBjG)*>2>Tu_2>h1n>2 zZd3-Bc=VDwcQa`n(qXzhUToIC8|w@LslcGfNwiKKlqIhOxVE!|Ei58a4=m?9>0zjX zN_1TsGhwh20Bpob#bD43b0HdTO_@0u*b<6Emf(3_A7ma;^zv~HS01S!3^B7y^enm@ z9E_?$K~@qx%{dM&C54Nq&K8*QQ!3JrAi`E9DLfT~56r_o?_F66D%?b>jbzUq!|GBL z>RHi=9=en-v(zDG})`TGx!eq@>Bc+mMkUcdiBzZN;QVN4CSx2_C zjux$IDlJNkJxT^;O-4fYp#|B#k2ClC@p=FL`}KNx*6sN?=giq=pKGqEPs&ueqBs-P zFOQm~(uXVMBdZmCf#%64WxEwWDTjP=p-kP;k@uqEL5#Ie%BrL_%Q4&f&Qxh$Ip*T(`?qjB-FuT;D z$^Wake70Zq#>G3Jj3>rP#%QTJy-7bU_QVqpkqZ*?_Cj@y;#C!mpDgx;a{O3rOvTw` zykoA~kZo4sBrUSNuMRJ5q4~JiaWFty9M^$x3y!ki03U5EXTRrEc;TrxEu?#kNYuK~@p@a9y$K z5y=M3cs!EEW*g;2K2iyJEs)HAz7k5`{eLSe%Zs4ZhtAc#8u_N(cO&UA`I30KuqJDr zF+P&h_7CNE4f`11hjNIr_~CLt`M~$?4XUfKE*;E)Gj+HM} zD_%K_hbF%pD=Ydd6QrOgCzY=sqK@As0}ijBog_PV^#XO{+ezhN^2V%4IwrhRZG>jX zO#s=GtK(^zJL>5Cucy=jwj2~2w@;R2@nZD^Pc-`!_466^Gmh2ITz+FzikqkNCaZ4> zG8RpiJ)L@$gt2_`|C#d(%6&q8XRX-84>6`rQOhZwG00RcWqX91F`rIR z&*I)7ci_}#fb@p&3za+`)loHSzN%cX;*?@r9Zr=V>TArJQhcF}@y!&h%lA$#7q6#~ zLoaoJAhSSU1XEWqc{KF+R4Fu>s~-QoLPm1RR9O{2pDGh&2G*mcdUcXFnaB~2sMLF~ z9Mj%5O|3a9SgcX<`E_|-@d@?Id*qjLY_nsk^v}d;vUiUzS83!)_c_zlxxE^(71N~S zukqU+(azX1Red*=@$xjOM^HQ;mp`X&JIK5+zEK&}ncI&ln!cnOonTxNHLCyJQM~hM zxz`{Q{=TP+5q|h-mHgFW_~oY_z-OPv04`JEY^n^P+J{TO$ZG?NaZHMQ@?pQCGycz| zlJ}ohduO@+{j{pLx-7C~n!LUJ*CPEVCrh=mUy7bkyBIa(#g+E))63VWr}HOIm*pk$ z0eqPx>b^*&*qF)zwVYDRP{{GeE7Rp7&_Lr&l`x;KCUSni+MI`K)>n$x)fzucmm|I2 zaz3D5A13D_#k1zWPA|*L!c~|4UgV7=eLXqIx@R&Um!2|NeY)?fsj`BuQ$zHCEYx^s zx@@HWnXXngwG~#^&3oU7Z)BV?L#hzT-8i*DJW@KM*sd3^^frE;QNBW67bu^7m3P<5 zenVYJ+osaTxI?!>RXon*)T!z!<0 zT9Fr<^-XFsoc&as4%}Z{XM9TSwg1og+8eXvdgt3JOYok$1gXy5jQ3}i2g%ip|1QvM zF5(}k?QZ1WHmAl1diGhC0(mZhXW zs*0swsqI>{T~#UmMebk7l^At>Q5_i?Yox5fR}GT4{>n?1)M>lCm~Hld$5FU;{K;%N zIviGvk36OzY2_p~Q{{)RsggGpuQruK{43=arCcqZJ4cR(t}~vUBPo)1)vH5txf&){ zoCoS}2f@p((m6a!{jcdCs4U?USt}djy}0;hUfD^g*Nl8WvwWHH_e}kmnmnC2OZwq* zxnnBt!j_}i|JSHRvv6+HTfK?FSU#)RRjKbhDZ1~aS+eQ*X;%3fW9)3%MSQKAJH%Kv zNA`g0=kTOYo?BDzY3#EUFB!=u6k?cVD%t(J{R-O z*scl83PsSFLskeICZ`{29POM^;j^D{@ zJU>sKiQA?M%l=l&%jc`Q7O7~uZ5Nrhm-YGI)jIf7EW7*SCb)dgdPgj)Jzg0#dcIuLQb#+3jWP2j zfBI!ntF5Y`#kF=U|GoKgvZp%qBb6u~uTE0pSp7_97yq7CEKsgw$awxXpI7mXzvs&? zPqw3XEcic5AGJV=h%&XVCa)E1>^iymD9`i`le?1=%2yT*T&zO*jAE!}tDo@%>7Z09){Hq+E4l=Eox6gni|pdyD#K{Exav$b+>97Rqt3tY~8vN+j5#icNo(CE{X< zu|WMg-ll#X?T~EMeT%PpAB-A(x>tRtig`NFu zv6SMaYsLyyOe)>YuTC-6J*#$9Y{suDns1Z_G`h_AYpxswJ`@)h`Q!?O`cTaCvFvKr z#KpR8OjP3{d#B>2j66g$zc?N>9$Fx`L{x=jyQseIez37jnvZV$?^mxc;8a+*KsEsn zJS*$4e90dB<-b(nB3Y*&#X(9YuL0BVUzxO6em@?+kBY;Tio8jt_=2UU7t6O}E?F$w z{1+BWTf*Da_Mo5f+T!vM_4-(;Zt>cW#j>Kw%P`ai#&}P*74ikx#YL9hvaOJV+wbPe z#bh~lH6C9iyVZ@Vq-1unic!%MfCDMuNOjXXR|5v3zn9TG@g@NGS(?wPd?||-frh}dY|6y%+AKn zow~?H#?j@@>aTmNPn8EzPnSm!&XsZM*G(Nl8qZX#(30BIjc<25^TLw{UuoRE`?+0D zZfktLdv9aW9({}t_P)&cw58m58{W^@GOBdB@yGpg3;Df=<SPJIeFH{n7IWHr>pCwco~fG!xp*S{K-f;QkgFo#N~}ua>_7whHTXy zom;-a_uY5zA9B#@<7XQTiI*yf=(o)nUZJIU-DnThO zB_-1g<#$fJXI4sU@>k*KNsVcy6*H@En)2JmY01kYx%-qUxYzW+gu7ZKhh3R#cLxp+qW{-b$s!Av7DTGn z(qWabV#@-h*Qy+8xb$IIvP@O&r0k_7-!UCKtAw&JFDUz2jU=#wN+u=5m7ppsJ85ky z*@K$AEIGqUS||M@%LqzAl@m$*Of~FoDE(g!>Psg(ZXgTJE0Q{uvB*n7V`*eLm?mS9 zR+36uj;g{&l0vE(lwCJg#Z^4tiOYE<*)=GeL3LPFR5eox(gCW^%R%F?5>`33W9M~A z*^xf4_0p=el+`3<%aLLvQzqjg%PZT`4fXSi8`Y#T)g@Iqu66vV6xW6=Y*R)}4R2I! znWp?-`Y)}?s-tow)kvz-Qc#yw=h9O$Q>6PM=_yAVF8}jgKPuft(a-qN$V$7S*;|KbuF(l!zMB&W+Y=~rnR}ub0?|` znn}&8!*W~|)rM7JIXobfGG$hoY00*1`Qt<~*QDi+lT?M$T=}h(UzTk_O}0l^=Z5vu zvg^fW)-bH~rAO*#CEt%~v+Af`Sd#2RZ*^8CAs%!-^%HC9^b;xfwN(&X@nCRe3|HWhJe$ zrSGDKsq~4On2A~iWGfRivMoo7k)bey`k8cqV>w}sG)mSGDW)c?b=*k$HEx{LH@&PX zC}*Xt+Lkes<-{dFtjeVy^TW-o9IBqIBqiH*yi_{Clj5tQ>bypN)+92UW!THP41Q3R zSMs``Hj*ut%t$rc)PLoqDk-Z<=QUw%tR|HgmSvX7{BqT=|L^}&si4Y|%CyfaS(U8G zwyZco$q!25u8CAqI=P>st~rc!^47#XC<<($1&~(S!=!MpsXC$*!k_UO_9Zx z+_;gfN|_nS(3h;Z+ENuOIa0J#B&#xI5=-C6L{welL?zdZsslClHD0JvG*D#yx)TI?KsRXjz ztlCQItB#Q_%&MZYAD28gmJF)B@t&z{sjKBzaZMn-8LE+~u^caGA`2@^<*V&Prg&D# z_K_x3g>}+vm871O9hGem>E0{H!dS*F;w2 zNT!9A?wmB0Eso4&DXU(n_KdP|wL&$sDo$1#mgD+vT1jeyYU%EBZbi~jo(ykP6PH6- z*TQ--$?R11zLm;0)epTsBbw|P~%FoLfKTg zVM93vkdcgK=9<#fr0huV#+9fNH_T;imhDX>tFk8>?}mAsuqu+3B`Nt?wH(H{iL^)h zJeKKSHf^<6bWJNS+o2peS-un1$Sz0v$ja-<7SNGhu%(vkF83@Ad>AsRx!Om zRwFxZXokB4wP6$4TRXBi=`6J}C8a=SPbQnjsFAc=rh@d36IE0%MAFn;M%9(wm=s?V zRKkjBdzSn@k}Z>TNLVXNwxu}Bk~!_BGMqBkL+O*UFv0abH1-bES^mh$?NRyHMS3O5hR@>itxn?*?Wv@%a*(~(O5N-d<{vnH|W z28SnYBN=D4^3=$#*j76M`AeE>nlftDvW`k8NNY{Ul|hfomha2HL><3Kt?Fa|5^1St zNk1noqN<>j9ve#sI+0XGnithrR#pzppk<zb|_B5Af9?@4W3+exL_={{*W+C6F*HxC;* zvagC7$d0x_UYFOoW-Jwok1<1;K{99LM<&|RET_&5AyyVz%m5iorU?jhq zWzvl@+Z@xD+E)dQvMMRt%&Sb9w{q-~SF##uPMvJl!bUR3%uKcYHksfryqr%-XIYtr%W!WhH|MkZ(T23&G#&S~cRhJC;%Q%j9PJ}zrmII$o zoARP+mA(fpZ=fmMpN`}+Kq`JMoy#X&ly9Na93Dw~zrgp>PQ7xG{t+Fg$I_9B_%u3b z0WYMjz2O(ME%;U1JOF;1_6~zTrqiS0O>}-d{1Y9uhyS3n?r_ya^k;k~Y|`O*@E)|e z4BnT{mcs|p`3vxoI{i!V$#ncSd@ilNmQD3}r*rHBVQ zeQS6WogWQ9rt=>MN3?$;{0!}#3@@j{Q{mUO&xF^~!IkhvI=>$Nj&^Q@x9jw`z@W<>Nx!uZOgNR zYWX!0`a7bV(Dp>c_n-s1C7siU(Q?>Sly?%HO@_~)?J4lZv`6=+gQjW^V4tA8U2yYPj9BxE2UNcY^QB`9kp`pQ|zzha5LIVU`xke zhTGECE3l)}(_QHFHN?-Rlh@(Cbo>T9h<4wCZ>B@~E;?F+_#@iyz?13x19+D9hwuv8 z{}_H($3KNP==f*wChZOI7TWt9{#!ePYbSGi`X$_iHa5X6Xoqe^2lSD2Mz^P}uaLhR z?a@8xi0-BH)BS1lYvdnHyYww|NROg(`Z1mU8{~hAj_BF6w;Az8IzRm)9ej)UTXaIN zrLFG}-#~lx_q6jp;(zHlT|0&Im2N_3bPL-00r^|e9^F>wr%$58pOF4^+WrN;h&Hys zm(%ff_(mQ79ln!J>4)j)55%9M?Z4pJbo@8Gn0Eh#6WTYbiuH9hZPmda=s5j3?KMIC z2RfsFr<10Lm!_gW{bq1OI@}rFjkb4z_oJO%VVgGgfRCfCJ>kwe-U2?0PU(wjcW=b6 zptF78!L+?Ue2dOckD|j)h(D&&cZDa@MmKm4?VkoO(e4f>bbLCzM&~~Z{+PDujkI|I z;y>&3m%`iVxG!9u#{TXPH>8sRaC15s2=A}s*T9GA{65@)&aQ{M)A>#C`8xe@xDV~z z3|~#V^bK?*UwB)R{li^!Mn6Q`BN3lS`**>!X!l-t5gpzKzesxz!f(=M2)|DUqv6kV ze)?P58i)8Vv_BsHQ>UK_S3QmXwx_{6(bjahxsKB7QBEqSHa6^^&QG;JYU!8Gx%*< zPN<9c2Ri>3@KG&!5ciNf**G@-&d$dW%^q#aEBmDuivj9Gf_Md}~)A?V3 zPo)#OFKxYu_y9V13BFGIWq1Vby#n7sJFmkJ&_4Y*oxFwkB%OaXJd4igXX#L0^{V>& zCE8d6zeUUagd)C<4&H?`9sdsgnYQR1I{o*ES7xBU!yn-WwDl9bD{bcRzH~|-NgKZ) z-kEmkbLo)oMdx&XI{6j(2h-6Ocm!>1h40qs>4&wqBmN}q{Q*y=)4$+3+W)}I=)6>0 z^yjOzT@AlS2le1j>97voOsDnXU+AO({Ev<|gllJ_zthHW6FM>BJ?MBBct6_S18$@9 z(?@CVh4@LdwKse!9nxpf{yvCbNP8CChc@~vo@m{ofEZm=t=)ttz4)Ni%aU497 zPU*+#z_bKpy8_guIyo%DdOq0Nin8)%0P=$L+x&ghx6 zdol7qPY3jSbVz?kC-inYrz>;Nf9@qHuNiIhg!iL!x()4pkGMnI|EpJQ|1Q$`uc<41 z9i5JXZ==I|;m5V*g`aAFHH(hN!!Odgd=ZX{ze}g@z+cn;_wWwd{t<5c4BF@a1UJ{d zzJ5{O0km-^+?LMhF0|z|DAM<)y*nEg9!!T1z&F$Ge0Vf%@7$`-UHr`4)=vm zptF|n*|cTDm(Wgk*w^v1;D8R!hVP-H58#OQ4&14z|1vti4StulM#A6I{-f{?I-LgB z#T>td@Se1j!ENYlh*>P}R64%_KA#SU!+mM*IrtXZTn0Zv`w2XYc2>bF=-@;6V>;Og zZ`0|&f_IsZ`e#4EhtU2na7Ws0)}*L^FYP_yVYIamJVwV4gk#!n1+S*VgW*lIe;oWT zozl%0pnlQuh@VUwC&2w_pT3_?>A7^$9qHeo&5PhI+5_Rbg;<_-7u<@DABHcX&Bx(k z+GF6+v_sFOefljrqBqkiUGprKZ#;?e_NQ&SBkj>19nv?^3H>OY(+g;8EXx0ocIh2- zK(|F4Nx{(z3@Ep$ekOHsZ#5#=39JM?L^PhUw#^hi3TpQ4RPDDMT@ zrq|ORy@L+veV&v0R2jzBdB}ehZOw7ucOUn@CG_~8Qx5Xufw&=(7u$m=x8P4Htno}J7}+l&!oLI@CCHrxM{I{ z>qEPT!&mBfTX+ba(}9j3f%t()m-i5Y~N4%Aep8%hv-2o2h5%dB&rQg%(9i-o)<8+hfx%`t6x9ODbL1*+p?Ng9` zB<*#AAJaY+ex45KH|dmKuiXXdw`+HU%@tC=I>U&M-MJX=7PNI7yg!}Ohtb~gh#yV+ zC%_$P=Onm0ZFGRoqiwpkj-QP9m2^T6qT`N;-$Yxdz>m^qCwLm|&`W8bUQI{z$F$WM z`F~NaZx{(}ya2DHYw6W=V>+dGp?`N#-v0DobQ{_@8}Xy)D*8k^q`T2G&O`bh^c=bu zy_D`t=ky@jxB&TYrritSJLw+u7}}?2YhQ%)i|Om=x9Oqu7xV~v8{Pk6Bp2C7{(ZSymBMM@SZxM zSU;Yj`_T#ApMH}bNWVw>^e6On^sn?#dIvp%uAgA}0o|M)NgqSsLwBY_`fB=7dN>`? z_h?T;`=)Bogcs2>=-26({_sC{DEeoU_A~HrbVC0{ze?AGlvG{o~Mk(=Cp~@{Xk~`V4x1x(D5wzJzW=UryWfO>{dtq)((L(hfb3?n=K* zyYze7$D+R9(jL9zKX)p|xAqmZxBs#5F0@a#p#!=-9n#&jPeA_jv^&84=ync#4Sga# zjCSZiJ3;z;>8|vn^y&0i+NGyyJDrR6#q@>r>vT{06WXJ{r~A`eX`lX=zK(AAD*A6I zy&FA(-kT2SwzP8!>eoTL3w(xlclctu6MY%ol^#l;PLHHr`a!w}{WyIgJ&o>3FQGkp z4c(9aj`r!_w9i6)YhFWt1auSaa}nQ%4(UVb$UC(ducPUybO$=7yZz^`Mf!`hGx!>9 zuUioxNE2ubGq_6`fDq_C;dC! zhW?9gM;n)6c^zqsc4>$1OLwJ*(=L4{-GhFJzL0*D?nzIgJ$feHk6uXkr&rJe={IPf zewPmDFX?;e-{_F8yn+4-uR!~oYF`Dnq{q<5(h+?&9n+U-UxWNN&`ar%PUx|8dM(mV zrQN~s6569zY7asD1G+!`CGFEWJ(T`~4(NI-(f*P2Zgfbu)xHtSYe$cv&!orGJ?V(< zPfw+yoj1Kfxx-7rjsmd@MUO#B6ED4h_bw&Dp=~TY2UgbZU_T&rW zl{?bWBk;Mj`oc*SznnIhe>m;kh4=&7cGIJy&FMcVe+VHUX$%@MSByG{s`KA2|k&2UVzV|L;8QTH52jMbpGk^eY80Z zo;*7GF4d9+t=43ulZUM|<-T zm&eqRei3{joi2s1pshLZFxsH+*YTGTe_VSVJd4gI!wK!Lh1V&|d<=Pg>Kn$RcM;!0 zC+p#VY3p-%=L+hdeg+>%+n>V6(D6s`skFoSe3AA@#IL5)C*fOZm+^<`fbE+~=NplJ ziO$dZzp32NFzhe(DCYCqbURueqb=eNy^;BYhjD);r!C%Zk;f8?@k)O|Tpk0&_|nJH z{;!DlqN54$^>i`?ewfZ_u-U|*1%uU@tbhHYShPk4&IBlUWJdR;}_sd z>4eL>lFqoiAScGzxE0pw1YpO;}_vA+DqYvHSAx;_oK~m zh##-b^e*j>LHsJ(`yIZEwzk2O=#cS6wEYs|@)%Pwp1yn`wXE94m$Vze^4LxhH*bX- z)xs9NADz?bGMc z7JW4xj6nLEX?r*5FJv zzC=`w*8n=W4i4x{UQwvxA)POUC(|L<*B5B_dBoSzKK(OoE zWu7d@^DTYpq$|=7r=4S~i~OT$>peW*D7(dC`OXY@IUT=-^smurYdnwe6&(&j`G3;M z#;T(HopwTb`7=nrKb<(J-_dm33FW&w{v+ajlx4j7-_WKgZwTXd3p}55C+(eq{2|l( zZ4W5YPoX_}3BCJexSsty^ULL?BK_NR))4jGqU#P?q-km$fSDGlCvS%VQ8l zdbrt|kef4@jOY~Q6airhW3`i%V>8o{3&hF+jabT#GCGn<%f%4n|2n$a+?w3MayluqQ6@YJ*4PgkM2ZY zOS|-Kv`vpzmiAg_qP$fTDZ)vxJ4`zCIS8Oki)A4JuJ?lu@gOR=)(?{zuUoNCWKJR$7j!#5;Z>NJ>VEJP1 zqCbo__`LZX+P(3)*=QZcDq5z@6#vG5CC){&Dzf zI-_sVz7pecAMN&sC({WnUpi3qe{>b%&(qFGY>!sb@iO>BIvj!d_bY8(gZzzlM|sK9 zsGmi9)8P}8)%>g1rkH{p3{1V!f9j)4aUCs0!w{N#Go(@L*Va7K%!2awh#>0cL zy?U0;FM{8ry))t8nSUkoH{65uza8yuPCIg7sOob7ZQhFIAFtz+;B#rKKk{ErCzry5 zbo?UtX4*5bzCA$)!_dD|>Fi6C{~R4JKz-z!$&2yxE<|~s(LUFI^)*#$d*fV>_SQCs zQ`WD!wjB5u?NgTVak&3FlJSh=(~-7L#quxE`MbbZ(cZc6a5_H`<;(YMV7^Usp|`@odDKYmdhA+t5Zgr0<~J9P{NI z+T{GWg3iA{`kU!k4)j#}AEQ0iZ>IKoEblqmnF_zHEc2l&*S`;Gm;RRaczpaf^BY~! zp1Qq|-|y6>Sbhs-sfc+i%0HA&SpVZ_Z#nXJrwu;e-ivlQ-ot2z^Y=lWpYwkTZE}0M zMCX?SWz`?6l%;(x=lhpBJ-6>W=#cZF@!qJv&+*@ncG#co=x{6g|7_ZxhxYWhG)`+S_Cw*!}_KwWfnbsGmbe zSHS1c);f&W6?C=+9!8rVzz@>ly~sb6wx_{MY2zt)jm|#>{zj)y;ooSNuCq}8copI; zXybjjEgj5)JJI>&@cFdK?cX3B?}qqIwEr~xC~Z7|{(72@9kh2LZB2n+pgp-zq2||{ zw9D=1I_*;s|AO{Mz`xPn_gG%tzG$yQH>YiGKikmew@7~y9nojd$wer?FP*PN`-add zeFtsGg_V+F7*Em}J+_xrVNisd!f z4>ovwxtp?_&yD2sXa_5o%H*P(yL z(!nS296D$G1v>i_@ppCl58y9pkMZp~|3`?|wnTdp&X?V2gXJGg+f08F9es@aXX*Sm zVgGh99kRSDXy-$uA3~d~&t0_3_B}}_j6b8(Gk-!mjIX7A*5_*-uaExyjW$^S2K%$U z^ggu3-Yeqe}N9U{=7|R-2P>>bqmt}L7Q}w z15n?*JL=O~oAaqNZTCcbFQ;7|9}c0TmymyyPCoNI#hNIUjDPb9$Wii%7qS z4tf6dD($_3_!qR#cuqSnBVKh7+GDc(UFnqdIYgWBj&#iYy=j;8|9U!Hf$$hlHmvW-h#x_x{5-0h1{Cedczx+oI&6aD-(hrgIr85_ z+uy;D)5d4;Tsq+W_7~|;F2qZ>8S2|6RsRJa!#~m)KkxRp_E{L8dU9R1=cO~-luegSRMm($KX)PE=)@qB9(oihF7v}dA!rqFf;UQ7quP~J*9 z?27h&rt=>UZ>9ZpuyL5Qx1nKNcy*hizf5K6FPG;7`)YH4+Mdp@LjLoV>&tyMKF>dp z@rcKFBWQ!`^MiCsPuKCyC~ujv)F2Ja`7r@v*qQZ7SOVWm9jjm1R7WgV6qy zXs14W32oel&{Fsh-KDmkx=uNc4 z>uX!-nAhX#9mW2p_og#$pN^)Z;h0}tX!~?5|3W(8@t#k|T>gD@NKd7WVJL4A?Tvv~ z(ZOi=E1jRmxBt*Fz01+4zpsziX{#UV*O5-2KzSF^9?viSN822qJGFT{J4WZ{@zp}w zzX0W})agSU@4io4+#YPwW`Awd`PpAJ$DsZJ_qQ$Ri2LJ1Y4brW?-XU3e_eUK@O&L- ze_TVm^ewbUkESDf8g23XWf|>UjP>I^I_CCrgR(5&@6o2%e|*QdF$ncDjzxQH58jmy z&xa47UG7hgq0J}o`P(jZ#N&$|+T5O8Nhge7uj9P_cPs7idf#~3-%X{V$hoi|tc%FWR#=9j?NBJ50xUe$k$ec|GM!9j84V=X@KgEdA?n zd>^1Y(Ua*D>BY=%^Zvn0baWH8m#gW3*E=`TA?MdNI^q0lbR5Tz+sBr4HURBCi4I1< zXX^AkU+qUH++JL-^RxW>l%;(sx1SRkHwL2rX3;+1m$69a=l#)F=$!G-=z#uNS;jBq z^{&eCSe}0k=4(UkL2wJ&Z)YU! zw!rfqkJH&!+@GDPEcH#f|410m@8tbjI=KVhLZ|XzraFGx=>#m_za4H(yXRs2PocxJ z;XZUgkDycD&l{_KH_BT~yCdMWv@sn1nf80ZJLq64T<=8GFXQt^`_Q(B_`!784gJ%O z4qk^(qy5W}zL&DhpN4$?=Ss%C`ItX9&`u2BPKVFHkLox*o3^?CTSDi|zl!#`zx{-c zX!S*)YWzLs-=Xs}UjHPvpWcHGd40V#oj;20?NPM*FnqeQw0D0#@6n5HP5a6+e?H>p zukT{K4dah1Oa1&kF+Zo!L08=Wf04Gkz#r1tH}H3K)EfE!qWx<0XS4Pw-z~#!XrKF+ zj&w?&r{fl$R~SHBmtub2M|=I@r)ZnkD-$}PKiBq<{x>@83D@s{`b8JR79E@qx1}w* z6CL+Kyf^J%2H&95_k$mzovYz_+5_Qt==?p*=S|8oo&lc+F&xy-7Xq6L*75^rYz%sKR@q%xz67d=hHr&ma+U%OmCcz=e0&No_EFj^CLQ_L;9IIKd%?Q zK>J5x{NAOrYq3B0MyKcY@ONdYpULORN++ZKnSNe?UQh2ve?;%6Trv!U&(GPk^CPye zr_$Eps84S?It;#%4rZV~9;I{6$0@YA0P$ry{mqqP`}!(v-H7$!T{^r0{)~#0q<3`sgHYbNI&Q;# z=(r_(Eu9^J{t0NWCHxTW@_2O$owNOmX@`D|jz^$AYw3*7FMXvf^EK!G@=wOyH_^Vv zr=UNg^Vohmd>P{_ANwxGKYR&3MW??Cc4*O@tTH;UGRAMtj2$Uqc6vz#DXY7W^%p zJP7|u=l8)iol*bb0eE-XJOKT5B%Pdv_I0K+F0Th|RWRTC)9ECXcb(23!6WJDRJ7+2 zI_`?{r_hyCF|BTMhMgAX@Wxo8*`TH;9$s(k0aH_;*`?i(uH`#{{ z_&jVIWyzm1|Ix}aapJErU%J!&1kAUK>0mFMj|`x#R`9KK_6z#+K05jx>-QMi+Xl~~ z?LCoxu};4;{4$+vNBU3byanQ4)8@tS7CO8DuHOai3FLzwYJJ$7j=w|uj;6D3*j{Dn zj~+aKIfuTGzKC||zVzwzwRBH#SNARX~~-J{xk{%M>}|0u?D zJ{>*;zoFw#z#FtXpuIoSKA*?0$h=d_kB-Oko71s;P)GI8!F13N$4e*DUQ^7+?zGto z=`W+h`!GLlrqewzAMT{HP3Yf9S^9S^_n-6VXmG1y`Op35g9@*t$20yu9S%VHkCmn3 zIs5N(+SnEK`(GyM!Y+8_B} zqyzb2g{t2gI;TIO{W@&lzt{0D$p0tpw1XR+j{4_6qQCZ}qaWZlwDA+%p7xhxzMM}7 zAD}(g(phWt$6Y!;8T~y$yDg3vpP@tgc{<|p(L1!y?b8O@;q`!A=clXAKzmHC-!16u zOVqzD?J#~C9q)c2AoA(!grp>d^|9{gt zpHJWQOw>Q*`0q<6^bvGKpF(Hy!9+D5&er+qOO+eS=N&F-Q^c>*=|4pMuBTHvpv{jE zzmLute?nQx%a-8t%~KgS+M@rSqdlJQyic2NV13x2^DjsKT)DnsSm)yW>JOct_m6Aj zxJNC|=l-javZRlAy=qTo)$rXgJ_pe@-HuLoMZ7C*asShYj$g!lzE0;q9QD1Mjyhw! zB4w#hzqSVy{i%-2)beAdUqxp>puEp%^BMGKPTLz%ezlAI_GZMJD@*wU+1_IqPyfdD z=Okrmzu5)-)m7)`c=e={k5S$*I$(c}qCI{dXDXdH#rnB|cAMh-b|r1Fzt+*g0qBo! zXrJe=RcE6;2Ct7ar5#?c+Lz9bLH?uZ^L!NPGJJJ?;O3`Tr!H zvwriHrN3PE*K)?Ay;1&Z?S0_&w8QuhbWR)RpnYyjq;IM$<;SODJlfFpczo5KewNoO z&r+80&3QfbQhF$_Ph6`k^C{tcy^HZGUcZ|}cjfh}rF0Mab$SfX&(k^ogtC+$aXi}7!Ex9=oI{(9 zus&X)y%ys?oc8uY`X{tMLwpYHwm>|goehYuqYbA2j!s#AT@TdHUXS#9)A>!9|A*7o z-YCB#?cR^LONYE4)`vEC#`^L<+CK%pS;tR;@2BHa;c>KA2hXLmX7F;Iekb^KI^g$T zzDGL^5dVVq8^S-)DdT_AZX?9&oyY#z1>S`=>%*;SV^{cCI&Tbjq@&L8nY8mD`tMRY zy%Y9z{2inpNe53M{uu4v56{wGh4cxXO+Y-=@f7i|XloqeztYhgi2qB=cW@W;waNKx z|Ak23f(}Et6>VIE^vBZaC2&XW(MW$L?es&uC!O?!2hiDLNFV6<3Gm~zcRte3q+Kp= zIc@U$MBmW)`y%}Zba*t5ufC+6cJNl(VE>da;QG1(`5V*5TkzhryBa=B$2lJD>99NE zXY2F>(Vo7vzY_85>4^D9(%zehKSBpR;Hk7rFQ)y;DE~D&Vf+I+J{S4FqMb9~Z93i+ z{b5|l@xKn`)u$bK(T{A#jNP;^g7>2X7x@pTb-v#k2boyb4 z57BYf?@n#5KM&E-JxD)Z=idkIdq$_<175D<&EYrcoZpYTPN!#lBOSFw`t7uT5L~$k z{pGiYccyK|ThY<}h#yD0jCY~E6A?d8=id|Vr{gw!9UZrU@1T>m@WZrqEIfgZ*!~%G zx;x?vXk$M(p_9GfcWH<9`GU^rE!te3aWVSCI0E?_(J{wkAKGO8gXr`Sq(6!d*dHBf zhy8yJ9kRZC>HJ{iAFR#g1=?R=emqRu8{wyDV-pj6 zzqGL)Zh8s&CtL>~Kt~_L$I|}$a5p;m0KS;EKZFP9^zXsL>G(7FA=>>1oWTKb+mOBiZ8QH~+TS65C>=81Uguwf_}O$^ zh4MY^4e%h^lNW=j`UN_^7Jis^KZT#7%?w^hC-m!d!1?hZ?R<&!KhVb4@OB;l7p|7; z?#1!y4tQtUdk1bsXY{c;z8&!{bhre*fKE2UeQA3YJcthV#`g0T+LsrZss4C?cImOS z*B$wvrlW(Ae-Uli@GG>>cuHrqy3e56Ytug}SIPBmeqX>pjJumqAF~(IdzWMREot)* zEbnk-$#3!d08Ub_lk=4hIG^aw^yx`Rf3eQr9=?M1=xgbuAC@hK`wk z8XfWYY`)Il7t4ED=f4boTUpijSk!j|EIc7By9xnBXrsco=nFV!1L+k zbJXW~+S?2DSxsmB{`K`by}bBN&DU?VzlOKd5x3{{JoJyV5%Jw=gXJAe$Gm=aEFIpA z<#(hL9&etZ(+@-ZQaWS${F^=MpV9ewe7k~hxzI{W{v>_(AY^&-Ok-2ZNFSDILECj_K$$jOPkEq2HlnI-|`5`G2HS#{ZPshtKeg3 z--El*7W4O_W5x&3Ha&uN>HBs5ekgA|?XbK#bjb8C&CeqP!nze+c}C z_VsX0KeRu(0d7Y77sC6{_DJ{;I=>5UM|-2-&a}}UK3k{f{OCmoT%T^DU9L|doi4$6 zj;9^Qm(e!I_f73Pu)Ggx>sI({+U5GOh0ae$`K8Obe%y=n&1nC2cwai=`f;dEKOgav zbovM3v$Wa1OX#cz;sfaP5_mXmoD1Jahv&g#X_xo6pP}P(5Pw7aZ1@8@zZCw8Hkto7 z+GV`@3ba4x@^_`fp2&Y7?RSK2+UEM*p7s_Zeg>UB3-{9L*?(8l?um%spyRy$b-Qwv zT+fd2Jo7_3J+C)Spu^oUesk!U&tJVrn;h>oI?ny^Cv>nE_BWephx^N|bhr=V)mNf_ z+|KYWbim`C{b_^uGY+QB3vfNV9i3i{>xHN4^v&QiX>TChQ@cCzUrT2!?`CDWzUuS- z^8JjP5w1VaqZ2+a`x?`SZSa1YHH=%g;d<{T+M)lTUAjqsv_Jg^_e1xlL%uKO7~0*A z`w%|?E)%9-PpXsFIx1fJr zI=dgfln(BLucmXxZ>BAI5njnKjJxUZF8C4JX8x%<|DA|0qyvuME3|(*;%jw&miHB% zEJgfhWob_je!olI0Q85+@|x1tLrA|j?Ja>1)#>HMeX9N^(ar<#nRLo{Z)I7Y%jMmm zKA85eWPNmc zd9j~rpSn+_%8Tibb$WU`ozwLOBE3cLOB-}M+T-%O(E)ui?K1t)^lXXlHo8YfxXG-&c7mofwD@(D8p!{sVOO5BwbMG(q}L=zz=Hq4Tpo zd;Sm0OXWq3s(;(liT=J!I%jz|(;1gPo_6VFI{zQ2&lhya`t6_{_Sde1u>6qydnBEF ziTqvYjNj+khqiu3{3hC_AE(V95uZy(Tj6);Ovew+5Y!(Y?Z>F__aa|XQcwWy!X^|Kuv(C5%OJ&1NsM*c@> z^ALDC9rlFZ(E0noKhVJeurV0Rx0t^GroGn4KbsD@yf^5$ zCE^?Cfa}+JO3n)i;cL_Gt51jL;QGsO+TimPqm*U&A)i-!jDD1!PLH7%DNB8FnXai*`m4&_J9klv&-rr(?PcR{>09rJkh2s*eF$7k)7rG3%hgNyA) zXWE;#d*O5Fdc1!=kT&Ss>3kNRM|qU?=fM-`M`L)pvg#jxK4c-Cx5e?>o3zs#&ws3= zy%q5HbjIhWcDf$rxx3@}hP`O#a-_HE@JhIgva~mukNRA~xVISdXD}T%#qrL)$}%6< z^7Af}84m|ye4nNBrtlkd)Exc)KAmpI@;A{zGt~E2+NlrMy8-RVYS|t--5EZF_GyRq z_`Hrw+a;v$sofkNK&N}aLurS;i_ZT*eMi&5A?Tm^v@c&`srEOo&@TOnHlK(5K|4oz z|Ii7aN2`A$+H0`CcBdmgf7pc%cSC*8qaCL2L;LhKv^yE&al5jNx54K-9%o#=7f{uI zCY>?=vvkh-y+r$$q5kV=m(Le}L3{MibVQeiqJ4pU@q=1k6J<637GnPGPG@{x+hTfy z&+8mcr}PPQ!sqc$qn%rEygi5x`M%Xhbo>Owm(u=C@G3eU24~7rKmVpfiu&gCi9_Mq zVTe2Qp32g&konut5#644kHP%uNoW6{|F5M}exBtHWm&$*_dSPnKY9YwyX)8U; zucD2Eu{~K&tM^8!{{NZw`99yen^^zph&QKGNvF~uN4p2&{H6zO-i`Q;I{gTEG#$#{ zD*s$%X;1j|;e{8{Zd;sRE@yhRo-=_1oNB+uiw8tI$~O1MLrm@73w|!FWuf)8jE-3+Q+z&Ocw) zo{ac=w8iIVzoNY#(H}eLl%E%CB>i5@KdujZ(AS(hxd7 z8ufpG_K!h-ji<9C;F&uAQSf5gu7~}{8lAraZ>Hnx(O=tX??CjoaWmTE^ZDB5bVMJm ztkw^1&pI>i{etbw*|c3B<@KTs?q9E>vo?s2P*&^vGOXYC>iDtfpUHG|7rd0V7=MS3 zzry@kuj60BKhP=T#w}=HFdgOXLPuY~t#q8v^PkY)gJ`cI^4~(Id_Mm^ z+8KoYevFPjMf!+#>%(*Dcq9BW9j-=uKBVoH@XvI_c;j2qzWjZ}Thieg_ypQm3tvnJ zj1Qt?mUlPp$ro>_?a6pLIu7-FR;O6p$sfoU2dVarVch2Rp^0=m zdK%M5&tZG8jCPO5d{|A}2Vs5NKwI<{WvQRd_x04?20L^M`gHnex+{GqeIk7Y-HyIR zxg^Kat+4!uX|px_G#$2p7ik|1uc0&gM`fw+g)F~(JKTfblXmH&luI(6_n<#J(a{%J z-_M~v9uM}V9iFcYr|o6v-v@O3Bjg`P$4d~OPba*d`YN6C_-!p6eTe)Ub=<^!`GXF5 zyjAZG)ZgRhAzISG{^+0M>6G<7o6gw2OX!gAqaR3H{5BA5r)Z!1 z|9Nya7V#Hpn|_Z@pG5piIvfZ8MhDy;)gOuWWtU)m-Iq4`zWn2qWxV_Ic;`IE!@V$` z{j|9~A4Dhgt#r!kucK*uAN2pzw840y)4z)Pyh~d>;SJjFz(45pd>+4iC)yLQMtmpQ z;r`W9R_oh}LyGnLPRq4Upx2hkDZ59#>3h)>k{pMqD?#xCfu_m$Q1 z`M!;fI{&r2ene+--BDH>qjVSA9T~T4 z@%fRSj3>KeJg%XG=BV#5+B_KNJELgtLijN{-xKMl(h>8|*ZvOeSw%bjkp4?Lq5o8t z_IYjhFWRGyYt{B6=jZ)e(xI%Us(+4Dmi4E#em+~BC|Ada|UubhA;?3_t{ViVaKa|c`UUxcX`U~iQafZZWL_r`pwRCJ|5$_FYS#+ z`;Vm43_g!e*uEjO&3H(=ydF1;_UTvXl+Wv~*6FW7`5S3<-l*#Pv$D*OgrDcwp)CDn z@_JF}UbH7am+Kep^Z0TfWyx=HejP;n{QO0GI^y-gGn8e)_IBKFyNq$0`3Etc_QLXR z)ah*;Pd!F^-2TV3)du^U*J!g2#~15#`oFQfZ|Q`~|3~L%f3&!d^*aLV`{A_5{bwiI zJr&!po^+VPSJTE!^zUujyg&LF9oNJ5VLlxki}S13=v1z|sPXw&djb3_Z4Jlr>h4E< zjOQj^ujs;f!uKnBbk6g+p>#M7^YsDR=JEej+T-!TLgj|C|KsuD zTZ}vW{)P406VadF($Ng~H`;s--su6f$6Exqrv1<0c64?K=JRQ^`3B;b(aCgpIBkrE zAEx6;@Kic`0bWe!JbrqM_Rqt3ZJ@m|NWYB^AA##Xi255(!iUnySlFS{o8WV`=fghj zFN5!)?K9!A+84re=;S>3c{)A^ewVgv)c+eg;Qs0#oqs>Xn?Hp5`%{s>6>aW`cn3N^ z6Fx_$UyJku=xiN)I~_CqSlaG@{IluwSonE5I1XN`^B)g?Ozq1uuR3+=)Tw$jzY}iP^6&Vx!gCGo{EWg^7<~Ju6do}6VQatb1`l7T>EBNHSjeBo z|KD%$F5~|nH~9Sqf5zZD4gLaQOyt`;bv`~scry5{ooD=u!6(@MZNJ68&gRpvEdJdS zl)ohnP48~okDNvr<-7N1mkPg_WpLf>C(bo^tHCce`1JUy9)GMDTw_@b4n{*tciPdqxCb6v3+^__Y!I`Urk! z1b-%izZJnhkKifq$d>Qi2won+uZ`ep1n-RC4@K~oBKQXp{B#6Q-jyxinGrlcf;%Jl zx(F^u@Eareoe{hzg71ysMw9Vhzc_+l9>G^e@cIa@Meti9 z_(Ku=F@+~OetlmAe=C9?jo|$e{EGwQ(Y6PDb!LNwml@Z((!G96K8zXpI z1n-RCcSP_9BKYqj`0pe5lM(#+2>wz8e=UOlIfB0%!T%b;KZ)R5&V(}o*%&rBY05+uZ-Ze5&YT+?vLPV1aFVv znCK(MRI6!Tle&2jL!q`#RkJ1&5=C6;h{Tm#Pmy`d1dkk(L+4;QkZtzu@q+Q1S%aPvL$B_j9;k!2LHIj&+i!;C==7KX6aO{Tl8!aKDFp7VZ$- zAK(tdB~#F!aCp8rfk{AuZFmCHjARnrF>o*&NIKvq!%cz1vwaDkdP$ChJ09)?xD(-E zo|c>pHx+Ig9G<)36Hdvga4`K(X23lk4%_L9>azf5Za!Xb&>ROjuyR0j>dev3SlHAf2rT!&@ zm0DqWX|SN+vaR((xmK!_yDKY}ELPl#LVZc4&j<{-s<5^0Lw%%XOondNP=27Wv{38y zbgQpt%C!_OmD7CImbMlKeNb1Sw^Hrv-Zq>Ptm~~73gtAxHN%Cn($mLEt<0DET-6-z zs{D{8u`a*4(B}&u)Og+CNOd^LEz7nKK{QHt#Ya&R!DZ93fI=Nnt}RsApo-EWG9_0W zSHuvfMI>hJh_!tHXq$S(&`_a_zA!i{8{&J+;=xMq#%99Rg?wM3+Klh6=Fx&_K+t=Z z*J|l41FW|U3cH4=b>>(LSLTP;^lU&%9+TEdsjkd#jHrl7sU+gnBl&V2 zrC&VK-_O=Z>erM}*Cmy~N)>q|xz!iY<$Ci~WJOP9Xb9sR{_7VI7_Js-$S{OfE{S0f zBAfCEs+=Xv4VH#V^+Mm8k^1lmGYAr0xg;BUghY;nK1#|*Pq$jg*Ihxy@9NVBrl9rB z^-N>2pOK zDwS6k$^-SH2Gs^jeT7wJG_C7krXFJ@GC1RMjPn9Y+s|Jl;8CS=fLeRiiriAPL|*~Z z44pbq%azI{wgymXU^Uk}Sjd-0IE3PW3e2~fuxt?W{g`^}#7pJcu#A33zN~zdB5B|l zMe+feA~|e9(oBow@Yy1*;`Ghs`#2}8riyB6fE10X7SU!3poCF2<^GCHOJ=n;KZwQ; zT5FXL?ah~0VyRg)I9$vJxuoH7w**lUR6SbK*+Tjx3!6q{%1T-a0Y&PlUVJMiUQRuP3AXHo?6G3HjxTd_ZT-j1y zQXDC7tTh)l3eKdK4a+8*ABF(cm+NJ+>0l5L$U^VNTyGUpoa;*qsFvy_^kR(f%h!Wp zue8K*nGl|BO|BsWg>s=vt~W*wgN~7AVw5r2<2;EQJN@BmX|rdhWR99Gmw|evH`78I zQWudkTUFw6GRK0sg6eE8$eQemCu>#QiZNGJ_@en~6&wZ?=&R)VML2i)`>?UlM~)Ds z60=c-!!kI`m=R+n1*BX((+z`_e4lPBT*+%-fhp$t!BS6di7nn^EL#%3)GzNxq5$K) zXns$rzKS9+bCP&YCLciKv_0HxuIgNu(i-Tg6USYZ9u-aw=i6%IGr1;3`kFd z#&(4m?fG6x-nrh9Y8CsATx}R)X(0!RaY(~Bxfo$MKbRXBEY*7<_@I|^`QcKof26Fj zHG86aJ(6i>5xLs7nx+frbVbp(Yj=1b)OSL+)jlc-lKgV^a<0kSnh%z7oav9N6m($5vq_Bm-B%?d%=OT#uD z@_n20;1BcH z^*mOFzFa|=L9K{Y3D}XoQboEd$@S!WH;xP|%0oRv$j(9r`jLhCYwE8RE}D-{tIjWR ze)r^Sg-cX;?_sYrTUgqt&r=-(8^(@i!h8@AlV>VBv-CTs)Km91{mblU#$$~7IM^)9}8-@)LU67 zO@pyDP+*v%YN7!l6}I-do{@STOR598dSKuJtW@f`!cb44uMZuh`$oaBBo<621|Gm3 z7%2^ACJ|9g7>om)N=lxAQ3VJIMuX-np~~?<=mp!r8c|^DN;5_Xl(9@b5X6Vx5#97u zs@T=mQP+*oNQEJVp^@GSq>Pldf|j>lNRhRTn3>=oc(5QK#pER$sOpAOg9arsa;j5! zK?;hHz@gmM3y2%aZIfS2@WEUk1~(Tt29!%fOptQ3$X}RoStKS~fnA)%hAj~$;qYkG zGWkTlDZNs;udo$k3wtNG@y{lm5}&QL8qxqii$q+HmN zB9I(8Epsw2I1);jK?oNQ2mnhCF2-;LY#6Oq{DkH2mJw_XBd3>Bi9DhiTP+NT4$O#k zAs)nni1=J3FdqGE;`E|I1C?SzV+K=rEkPI=BYY^2;*K3u<~-$=u_;lehmqPuz`A*I z%4HPy0|ci_Zn!eIZGc)+OV-Arrs=VMwn+V&D!^`*5cGi`m0I_q{8pDoT6Q9v65(i% zOG6xX*kk~j91&0dz)S&XVT&*&K-CU`bW70Y|xUjhe zPn|25A(ZG6hm*BlR#c@C7@2Zy;;Io~A+8zB^dzJWunWa@9zCLRmQu-D3z<}PG=@WAxyBmAwa|Oh)iy+;#+#wP!}5zYDh$|M z**Zk^fySr4+4<15TvXU<>2%yWlyiGo7lKxDWW@^3WO98aNTL+eltMTHSDOq1qDGpp zG6Ed}87lO?NMTg}2dQNW-8)!v<);@j#?ktHlSUPGNu4COPM(H5)QxVbtCDfkm(tWK z*i~@*QO)~m=%$%6Q&16X!%e8RJVzi2Y^Y#6PzvRoF#UB74UiDq!~ejy5cra5j&j3ic+pngqp^iJzsc)VAgZ^Vl#IbH(})B@$cJ zf@sK;BsH^*w>s#abV*AsuW%~*}BV6d&g5u9MYN#SGnsolz`V;V6 z?g*-tZP?QJIT@m&G3J6YgUloCtjBWIbbGnz_|h6KV2ds?x8Aaej%cGX>Bwchib=T~ zMY!zPa?`EN*Pufbi6z4LwL~`RO0_Ud&`>!y zcLF+$O2;Zf>{yiOndU@uwPGIIk}x0~D=aqQobP6j@zYcC6(XEdxH;yLBUQ)91(j`b zCZ-s&!YXwI(#2>~mry@WnX%Bz0t_XF>MMk(AG+W{)f-r}{$5%oIH0ctHJVZuDwMz3 z?ER4KTwUmQd|&*z8jTq0CBODiz5*YjvdqQDCIw=4kc}X4$T~vdRI(tZzf={0+9Ook zYy?|HOu%V$ttfJ{Qf;MJbfJ@raPCOh4-Uf65EZk`hgj}NGSP@g<6%|KxedSOpJGCR zq<^qd=?lb;{-F^!V5pJc{z=LSzY~5$Q&Ahv_ol*Oe?_b*j1+!s^M;^m^RbEA3?aqI z6#bYL<$8baLbnQdgl}`BSm1^S&Pn~6A^sf7?uVXYGHpV7ZCszGL#6GMVw#BDY}BL& zw=ZzDkvQ4*_oygkw{Mg-lp|klqgtWhn_^4AAo>N!)=W{Ess$)tY>!Ke5TKgLeD#zn zsGlOT6-;q)@?jOZhst9Q0Zo$VJ*>rurkvPQ$wMz1uo?*<++Qj{kEGla0*Nba6pjGZ zWrSQ-XvSE;iRX4YC5GFlNzb2O!FY5rwSEE zuNdQKGN6`?X+UF4A(|07NA&zCJ69NzN)nt*tb!lX{gvJkKQs`iYHgo8r$b>grdm*f zA$JDnsSFbgf22fxsFgCzfU43lbH@OOy&+agIpK3r46CPE&4E0(AA^w=!5%X6uNdev zf+}JaxrC~iJasZwMQB~1+>x_7F9T5%Qy74x70plXA5a7=cXBEr4dR(i(Ci);i#*24e602#46k#(8Kk^a{r){CMpaYLU=eJo(SD}QOtqr#H zkbm7^_hcNiQu~Y;*Boq3<;7pnMAHPK|Iy03SPkr>sdnzGXc zaPJW*bh7#gon;~zG!=*Inmc8I*i`axV9M_m!`0r!5Svl4^dvWhqzT0uHg01C zW7vr`#1Vp_k`RgX2*IWi%_a`E9?H6)p`8dNNtgc!Y!RGF#LL7mEJfYZWgBn=hKu^9 z5x+l&Na89^Z^aEq1!Td+4yVuckfCuR4CRTNV1^8oz7B)&l!=Xf9F_*F36`ER!j z18@$9Gw}cfw{x3Wm>%#@jXab`VL0lof`f>_&W$?`Nc+7I9uZ(rLlYE}K*bJy4|dPP z9QYZT)#o!*@e3;Ij%o!nIM~1vIt9|BUpSi)Xz5s{c`2N<`|jfO32b>LO{$h@;}uQHipiCK{pck-fG5c4mDwkV;fpXr*B(;kK)TV!AtKYDLKesZN=C%kWPU?wgz@>ZqA8ta3R1<6Diz9< zh*E~%!{OYMc2HT~m_??`c8yDnOJ7a2bke{@d@0v+N zD%Fi%{t%V|-XfQRG&L`F!2_c`y=2CgOJS$2m1||r#Fnu$hzyk!!ER#Vs7+*4yGiPR!D*VhB(*f7O0LDQH)WNwB z%XV`N-(0GdxaWgvz@;kVj`|0x2f3`H`~;o;kA6Ey4?+VBES35>Oi1WX-sqS8DCDLv zQR0GB9Ee@AS|2i=9oEsy6*epfVVk2a*lNdfcZ>yL-{L2!Y*kYOx#5vq?=~cd!wc>> zSY(fJoH)W@Bva)DY;6Q;>uo$90W5kq40IYo8!(vffofZnA#!3ZM#arxCVOiFSTZ4f zWl-o#-xx|H91}VDO?`j{HEgT74zo74Dx=~!D%&&yLuambDb~wRvi;M8b$?${Ewy^M zfKqM)kL7*}^TBIpWMSzWQCS;XE@<(PykOans?{5T#WMDA*vIMVkq>rfMgf_N4P$un z2wM1J4Y2vAU-B%gme8T=s1g55NoU0Evg|olJ)MP+b5sefgWsv(YJCxJGO=3mZ6m(3% zYNKJpP}#C~Myi9@XKxapUj0C?vOE@m<17h-u>=M(ygEPT>kPpV;qh`E!>AAKCDsn$ z?l=kQEvO2M!a<3rN@|+JyA9ycZbT~5xS$%<8%iyk^k_+9yNf>9i*O<8LkH&iA*eeo z42tQz5E`5prW0-xrjyY@x_-HplEx%74#tg`Y8lFOntl)PK+Xb2%G}d{<%M{)KGDk% zvTgFUD%Iqsjaey~7R>IwVDq7yFraZgozfldtDs5biiHEX1%w}yi$=KorSY6wE>ete zb{7ml%8Vsy>u`nA8$xt>ghIzbP_zJD8uAn}6tZb6$|de0OC9T3bKJDWh}6A zofngf${XU;u3lGTkt#h(S(^vd&e?;wog-3@Ly+OflCFu+K1En5Wf(aL5+fEtsr9Bl7MRKZnxk<5HUm!5y5~WL%)7<<8uwoo_=dgDaY7gfwn14x66Oy*HzFJ5HN&tVS zOX8zb27ANyNDx;D7z(v*F#4bz%V8tTl?zL( z^gsbS0pzBp1cmbEQkBXLz0E~Upvm#VxK*wN6H}8^Z-vk8Hu}lKx}z=2=vPLAiNsWe z>4;sc2UO@8rr2)5m=NAC494(kMF)#3ND3kSmORFRjZ&WS3qUadcC-|zyb236f`-5X z*$tcrQ`_NiO^~}<$73CuHNoWoP+5{Xa%Qed|-XM=8(BP%bv})n?QMYW;1}%rh zxF5nG)K%`hqz3|MUoUPig7>KEK5adS`+DdI2~>Qx`*0wePvnvQ8pl+BZ4(5)#rciJ z8srGTXlMP8)*j%g0A&F2=ookE6kQl}74SGrWfP`7N-GK>TW{>8cr(28i1bD%Wm#zs zTD{9I7>$ZSO}ty3BpX+vG0+&9M~EQD`IO7YOir&HWr85688I&e%HfEF*UQ81o{~pW zf=0_=7?MOFvnmmo>y(mk+h|0BwA%vUUb>y~?6UeJW{C*})Nt0GTAk20}L68WB4_3~t;5jmT*2fXy+6KGTwkZKDI{ z$xt}vdbUwkXP~@*5G0wxJQx-VsE~9%hmap{yhAKG2p<*_-H}!L-O;R-1Lki$c4S#) z{gCUonnw_nj`87zgTfqq1f|vUrnE!~gAZ9SuH2wAI@@0SU) zlr`!fC<>INiNQFWXu7m1@u7LS);9)sLx}=622~Qv5+{~ zkQfSjvae?2OVt&JZ3{Ph=sLH&Nnm|GFXZc0ex`+PkxSxUDF6@d%w~f`l_4XMX$jGb>Okzp0Gk&QAP@h@GjZ7aQ0?k65}m4t z^gzXhaia`grOyVT@pV}geWNUuq8Zh>EM5^B#b;|b_6m4%2pr8kz7@ncP#~Sag7X#BX(+hVasskEbb~RH_VhY3o5SRAB95?uEyvOXDdQo9W~A(gVoD%Ww%;5F za)u#oD=NBZNrY+@s#284QlNLzJ!8N)%pD=}dOHfV7*?oMz#7n7QLVKH(WzoqAf(s< zfhF?PS3s;b)cMKI#85ix4NzUakP0&}G{(O@b|ygpkx&{Y5~B;jh_Vn}pFPl&a~);V zi7j#U4Jh%N-X8uXkaMbdBA^PpzYvrw%~=$zx1jzu9A-UKhBmF3j64?rNflgiJGqo3 zCdiRtuu5Bv1&dJwGcY`AVN|ji!j?)Np466HBB!r>f=FWE9yCG?klpQ|n{mwBr?nKF z%vBwcmgWYkl`Wv69$H}BNOs=gfDF?sgrKfSlVFvx{uKHkIAKUwLg*fp!G}4loeKv! z){1EUjbRyJI>`HND91#QQw2eq=n6=PILkG~0usQ3WR)@> z4dOdGQjQg>b{MKbH6jFfiKtKw!_lN6$kCd@E2SC|btOf*)F%QFQWP}g0Ou7cP5>0u z(C}fo@Bk$aqrjy?PdE5sE#4bmP50vpOji>`*A)Q(1`Lb9CIp|x^byE!vP5p6T!DeJ zRre`E&0#?elSLk=l=?;E6To<(2?B>u%Mwe0&LE^^{tY8M1Qc|+Ss(?t#8z<#UKnr<1w$4q02m~$T1t}Wq#y%8cuOQC zL@U)ta5U}6X%LFW_aOPGmVY%5hQWS3XB9*YqnWL-5R8uW6JfRN6I8-M$x_gdw$;MK zxQs~d0Qpu6dOHL$;wZs|sBD=elD2zDRDl|n;<98dH0fZqocuar@Q4WyEUYqgh}r{X z>wUx7g=AeGRy!S|Y)Q*(G{4`5#(=(zGPctsczSbS$ifj#)I>X=?+KZEGMhEe#k) zXki;+$PTldK_?GG&zNb26cJEis9ULcgpGUN4#W_qiJ~hcz_?aCkP7>*jx&L9)CR|v zQf*ig`P8@gxp$?kqu8`)*Io&}2p(DKbzr?x>EX*mNMemH1Lp57@L*(Mz5{s`fTycM z*xxhX@ysoqwr5fuzH!!+t;LAYK}#P8-D{nEF+rCTO>Utm8;wBN{oNw1L-!D@HdLsX9f{k-YhPwmA`| z8#UwxN5VMUq(oZ3YjS;#fnMWxd?37rR`M?7+MuDY4Ofn9^*v8yq^SYcmk}kiYbh&~ zYQ;6mps$rOs(KnZTnoh{zqm492tQ%kY)&+%zWiQBjYfnd=3e}Ch+wEg z854|jKupxHm#XS#irk25^vqhr;U9?k1hWbF>5!8xi?tA0AdGfkfvj^=cw%oTuQzc? zL4-nsAO?B4Jewoa4%Z2xbCR3_BFt%RNF6o+;jlu4GfSbQ5VSf8GQ1o5@L(@Y2wkO_ zsUOE;Y*7WQcL6xo!~ifSPXvD&1AvPm7Ewl3!0ELy05WloeT;NfcIv*s5lUFZ1;R<0 z4Oe?+wV7j?5gN`QfWfQ*6wVre>8t?|%mP5sEC41L_k`TIhd(p!31`PWB_GpYfTL!H z72cB0j{Q1cZ=>94^FAw5Ai9m5w90N_P~A;E=y@07lai<5Or-TINSIPMuu~h+yJLR2u?3l}XTU z!_aO!6%irKBfCXMhy#Sb>D{^z@`fcuripBor|Y<}2RFlMa~~KRri!Sqy-r%YS~xf? z?eWs97&?o_5hX;0IC!z$g$Lruc9gPTleIfHDOQeY^de4*bn>UeZ^arbFPAbs4~QW# zZ2E)aL8?5XfE_-mNP&V0_h)|%gfuEf-y7A z43+9ckx=ad{M!y;20Ji5m;%2$XvhHBpv8J1K;mkzMf2bD0M`5|nIV?(7$FT`B~ot| z){Kn4i@aB2n3xAzQ5HI*V)O#VILtMMK(QqrNDKOD5g^U)ayHQC9Kf2hA<~>t0u!3W zs8P&SkZv=YMvPpZ(*lv^$i>BG%|Akj1U;XDpT-unHplrl7$3yS-Xc#RSW{Gp_bs?O z{fUIR%~~@iDz@T!T#>dY1LTa*5~PX<8u4tlCsn?XQt4*bvS9!XEO3&6^LadwE-JV%(09K}M=IuzumVy!jLBA;$*ayfpwpGY5I6!u z!j~-Y6_>j?V#nt0LW}qtZvjc-+*rG@{S6iLH*05M{n-U{#?BOFJ zV^!V=fUp1!lu$039f2Xw+*Y5kuAOvV0TM{ZV^K=1e8Z$KQLCA zgP^d~pt7u5%3^2lHvUucfQNf9R~HY8P5Fl5pU0*;8MeN{Sde1<{P zaP(!-Sm%xq0U==%1<}~Y6n~o8k`aY$&rt4E@JKcH;haZDBFYS0OL&Zd8-|S4Xk!lC zOeD6bj^wy;G;SI`MiU81h8=`yOZ|f7ISdQXI6viMBvpANww&Kw8sLxytI(xR4{b#B z$Xr{AFlq#Woja3Cz+(8sIiCyAgDy3~p}`@#lV3(434lI~3Gv8DnfR2+h!>W?5E!9G zBZH9-Hh{yVeoQ1t+=?+f1cb}xgq`6&g#vRP7!5-JH&5<@+=aOdA+|UeXI+r0dC7qm z4a8#AHV@x{BxaZgspiRDaN&iJYzfhVR(xWt3ZEPRLxYB|AMgZ-WFCOwbHQ zR0VM+giIKHVDy;}vka@%3WC(b9OOO^EHcsX&X0Wpgb(**mtxhzTm6U(nGnXa_K5UY zSPlaBh=8<=du;(M8_lxR53ihyyc)7I+9&h2AemlKRY!*;48Rvxv~)>f1L# z1jAsq(Y)6YLczjaqaQeCa}D|1(db(NO0Q4T_z?Gkj9pv9w+xXQb`X3`L2MD-(3a|` zotuwbsr!)uvj<-QF}FxB6Ii}>!$5hF;({kKT$)fNdT&^446fj{0Y+EbawRr9b8B`7 zDc?zH9V|C=ham{^YaD$42qLB9Xa))^!{<3tvsqA9hV>gQ*c9sjXCuT}eHSJ* z^m4&w$BGew#=vn`kVy%*>iWd`lv_laBQ}xPHL9_KFimI+osC9y%do5ONL`c(slv_q zzyb9Aqv5T23|)S?NQ{DcRz_15QalFlb!1C~$V z+XtC7id0t;m1nN7CKmZP5R*`e2xK%9agX~sP%IA}0G*#CA%yYObw?z4P^Nd+tC*Z= zmrE6eY52;b;pHn%;P8Cm4tcm{Ks;F4;)=l-LFAG~YAZ3LVQ%QhEC|>!qW5CWmCxNt zG#TNV2&{eam@LG}{0I&z_$fO*#r1e=)`(iHRRdz`I59pr%w_#hKz1e}3|$*alPaKS!Z3IQ zz-0pSm3lej1SyJi_K86J28PTT+Myaw7fj)5Vp}VOS!CJ-5#Cp!IjyviK^(4B+~~!5 z$O`6~qd8a%YU4QE`=n_hVHHO4dK07*A+}x*IY5Y)Ro42%#Sp%elZ%f+YV%I~S=(Kr z`W#b|=Z|fr_agzyGJeQ}N68v4#?$(K11^DQ7`(fz$`2@F3yM=MJtH8jcMFh+_q*#t z!0F2gc{~b%w+!`2gYN<|MBWzE^Aas56(REAydwEhvf7uES`H2{fpvVO7`|zR;jR|w z&78{<2HXs?Lo?xgJ%Ao7K-(p_&7(~5ND)-Tu!L+Mj9rq?R8Vn|)uhhT2;a|Kim~*< zfb{xM8jq(B=xBZA$HfVdnL_LH9#$KxCC_ug3mm(^q9I38=sIQs$ZqQivzF56hk@k% zVcpazp=_k=fdj?hZJONn3XRVhuZZ(>_B%S=^vuMP1*&K%hhju=yW@^C36o`{$(WcS z0*|d?Bnobd31||>7|B~B$wt@i1~UeS6s}L{og`huh}KK`Je`7IgVlg?5l6G!3B?f< znFm-rTTQO;3pfHPr3ZXbPK5C#Li;|JKIGL$IpFQ=aB$ zE#pz36|vgC79cr@;LTG6eL|k6+r*>dY-j5~aGa{%UaOUX6{aMw*>Kkc@pl-X1N7e9 z!Yfy9CydRMeEp-EgNYoiWx?>MJ>?pKB#ayAmco|kv@}93uVLC1eUH!^FvdJla;dbY zA`m4@m4n=}DtcT4oIL82Bb&_tYynNqJ#LoXAUZ+-Z&)5F2*uIauW7owI7V)dk8#db zOMUvOPw4QmFY||9s-KWUXbfoYIk3hp0hAP!(5GwxFv>KMQSM zY~m@D3}b7DMZTOK}5rpW0)TjD{V+E$fonQ zGCu2x{X7OAWeT1esxc7k*?b7O2u2S^C!z;<4p-pi0j%)$ep+UEKM$i%&x!b!Gln21 zDq2%5eF0-lM70rQW>>gM&`&*{`<8ST_K8PmGBp%NwVPvyfdsi^Qs)B5Xu8#mLm@cY z0Z}#<@Or#!XlzZOeq)I#!VTaQfT9Q$-@@ZCZj_K`AO3JVMS)Lj#_oU?-e?K6chOKT zTrRSxV<9EDuhU}A$qI`(k4nfYu95yIp)fMgfR6$k2>o* z<3#$|UrumvI@D4hUmU{cya_pDkHGaB%_uW>=G=8rG7j^Lan#^iV2Y$%QO&?R>mzKQ6EPSB4HrP7R$Da z#_#lLB>gHB1P++WBQ^bUYEKDYi1B>IA>Egb9lumF7JM-SitPxeW+R5gCs?3m$7^P) zyjEqjkD^ad=;uf+0@({S4EhG4Aywh!mI2J55D#sR1F5%7x9f%_V}i>h$cb*7MY|Z7 zCQ5r4Zwq5-1X7OAjcWf2zFcdY!ZZQD(wkz;r7=>*rBQULe8n0g!KVZ%2E4$1yxquw zlxqkE2GYIVqI3bet~FKL9=0`Nf9B`pM_qP3nxi-2_3g1fCM{o`QvQPBMtN&9`X4e? z6$VBgu#*`LvIfkdH>-Hp9+RR8kKMc65w-x4N+{(TOcBCN4r7cepgm5nv`J=l|}4o7QGzU)2)?utaT9ft8vna0l`xf|tMs80Kv zlK5A1Qj|&{J|SKR*ALK(;GS*ZATU!>&Vn9XER}AS-Xliq=}Jh9axl%Ca8orZy>&i{ z-V2LQi0&?`2^)U|4U;ln4bs#z#iK-TNoI(M_kxVZ3s6#imtKfhmfTFQ=NAEdja2(#XSQ4vKS2mKL%6MlL7C#Z!A9h+Xn?X$r>2-!gKuypBW9_- zW};q9w92-wOtMQM8v&U~*KpZnphPZq2U#tL4WJcVb6SBKN{yB{#W6Dl7Dd2LIL59k z)ECtuN}!i9nuHV^8&c`xy^H$#u5`;>bLbNN^kQ?s3Q3kC0QmaY!T65j5rP&Q(;qY5 ztL*#1W5qp6Nv}e!mRG8)l$AH9yasz-OAP z74TBY<@zx$X(yo;>^j;2cv@5`M!*6+i@IuLC}^9s)W8P?&){`pXtQJjw7Il7#|V(_ zO7USbt3-gd%D9P_LAr*>G+DQPtj^+H>o(919;5eku3F8)u~w*S(5j`r`4q9%f0E9U zRrESB`^=)0J!$-v`Pvu*a+U1m7>mAjBR%WnWe1J2s0B9ZH_s1<#EuXJ)=43Ad;mdgOH1B5<}SgS_U?$hN`4M~RXJ=Q-RWY@k?+fQ;bjB#363U`T+SXB$yMtpb}rXL zV=sE_h(3pHRc#|Q=|YPw6(2IipB?BLdn?%@1pGkUJoL4#EZEt`EOV##p$E1M3oa^F8tm zFD`drnC0a~L%tLVzrGhqm4ke4tOzj+k1GQ}#dvQGwUraL1d=1(1 zwi}NLQu6AHr{epb52Up)QreueJeD zvL!6nth`?^5b zD1pxg7JMS@H&%cL{(#mdvUw^{8rFa<*3L@?gPdy&M@3(pJ-I>HBg(Ij4^uV06xEYMCrO}7Tp9{CWMH~|?in2&Z&DdpKemsdejB3-V3cDP@N@GD2e)<= z;jiWb%-lpxVO~@Pgn^eW0}#Fpj^{bbY(9*tw_NdZBuvW4_T;{B4Nb(eGQB~Mby8l2 zK^u5-omFl$aq+^eu_@z@uc?p8(?VT8A;JGc=n$ypdFF<>RiwU}LK;^kYOXyB`O6J8 zX;}cY@8Gn7KBWv}KfW0RBsdTXj4r~9-8Ln8NtW+3a4OL!0*88q>8n?T4(~T&zDwe~ zB4Y?annEAnR1%ylsN(B~DISWVevw_&tIN0e2X*~bKUZ7v$>&nkrZ{N-a*rN|2j*rCn@Sl!aN4-lGiz z)Q`gxDBYD?c+6_P*XN-np}#6uRh3n7<&dX>jM>V3i3*a}SMFNBm>SDy9 z$4g}Z{Ocv+=SdwrPV#}*2?OHQ6#-s19W+4`NMNZmBu~G{0%F{h0*c)_#sRe-_R7Vz z#4_UKHAhsId|i*JU{6r38_$%QvcIVI9Ka)aqyx3ACh~|BMpC%K0B5X|vWigPOdCWP zW0)jh8Myi(+^|B`VGX7)G|QLq2=h!UJW7nd#X2Dg2ogp{SS`@f%KzlV5bv@dgR zzTc)&EaVdFC3Li+_#eGXxyD*}HKxTXE~fOXgBG$pa6M~)0gkJ?JXGL?7SS!k15+2; zL5W=oKz`p(2xJgq-~lJk?ubw49Z*Fx*FGkRF_M5FrY-_C(gdl0&nhxk?GSm=#Nf#qopg(tr4tL1eV8m%Y>7BlEDJVvX;X^-YzN(2}2~3p$ugFLi8`Bn;8a5f42Ii>5>_?}$uWW$8zNg`Qkjb=*`SB6W z2p*5sPkn%x9*?yP7s%iH^hVD@2)uk@4G~DJoq@w9!3?>o==Zuw<1l(J8wpNh-aTA|4AH)T>B9L7J3a5ub(P z@d-^rmUGlit_8_=DfHrzV&?PH==jJBS3e_KkU?Qg>760uL*IN&mEHvsMb|3Ct?6XN zqD=sMZoR_gXJ`+#M+m~N^)Tcm8UhNImRD-P3=$Y%X?OOye%0lP3Db}Yzp}B#FD?gY zhO}uDpWcl}ki8fSUlEhe&Ts)Car8efW{4G{8o5$fL6DuL>j9chJ41yg3Ls?txFzC8 ztHBf?GAlLl@+}9@P^|R4k7uZm?RmQ=<(ANUapM45G>ZE?0PY3ZN6vKFp>Y&Ao?Ml* zBTyUMxK$ym0oIV{%OZR*-m4#$t|;}dqd>hBN)~57MPv%Emb(^N+$z4mo#d8*aEV1z zGGbm$yRl__-@FD19CZ)L*2s4W6t`GxU<-W?w+`%c$&L5YQ!nAB|`!(1gpwRV4{lvC>-j|4L^cKa8S%m7xm?b zE*04W(vI7aq4sOxAek(dkB2$p)z>dri8r5ZC~LiWIgISU%`4h0)hM!|R-&Qr#>mO7 zrJlhZLPhAcXtqHdQ$iTiq^R1%k^NSk<}&nTN#zK}@Wi7f8~k~w=z&qbg8L`~q@DEE zjeXfr6*I0+R8xgM7L^&wO#xm_{6x{~?#HP$xeM~OR)(YW9;x@N9jzu~61P&SAtVj{ zpjD<4R9Zj#N(0oUraj_p&4$Sw4cls9fIxYK}>ZL2dqQAx!ojvs!7FW#e!y%*h3wKJ4jqWwbh3a$0;IpkR1sgX}}2 z@{|i@;HrFt0Al2rWU`CGic<9^8Cf#S0Cp7nthvrs7}8*6i906S{E*tkZY!I-t%|;| zx(>KKTQt71V+lH&A)J-wipo#)hNZ71yB%XpcOE#1bFb>?YdrYsgnmv~H_lcjdE*)! zs0Kca%EJCpxOQwKIuHAkzIm`RiHgTL@yEl!i;kM|f}@7w6Cqlv zVAe(@Y6@vCjZW++o@Wo7q!=d31pWvSXVV`cL2?m=PKu)#F=IOXucP?d{^_}(L$aft z6NRlHPmK7I{81WY-At36a7RgOEW$rI#WAZeR*D#2e_9za(wYf{Nrx=vDE0B??>fbg zKzTIA^1qJK)NFq|m*z<+T+A0C;srsVA8>vG1%XFRwt1=tG5t&*D_IhbdK}px+s39JCsY@@JnNS* zmwc_agew&CLl`nBx*1A;{kj%)3F;e0x=_e1yJ|)E%EgP;VLzb$W!H6gElP4rSFP(_ zbk&k&8ss1gT(Ww}>Lj;l>7pwy%`Lso`Br(~(m(S!_#i?AN88VH-Y(zEqy(Jke@>1hGsMxD`!BSs+)&ce>v2F-la*KzT zgxP`EEB0`A@f?!i4w5mT?h7xZph&tUfXa><+9QXH*fu5s_WlsYjuc%&j~p4w9BmLN zmA11^uC6uOLr|}P=VG>Ds5`v8X*3oddi4w;?}|X9%A;&ao1r+3*izcQohl*BU@_yZ zZ45F+Tc~`R<`27X!xyArXDIexCTCU@zBIaFjE}dHhcpSzt_KZ;LZ0eCQF| zetr%eVlZ#x=oJC`KCdc<3_#Hy)|yu#G%-cpUh)qnCFw*f=Nwb)tyrKSHWo15_T%G+HZ-GBDVm zrme-panMFgZ9dop9w=X~Vt zWWl6RpV(FC@uusVtuErwHu$#Wv3B!5Brf=Ixn}8g;ik`#I`ywH8&KiKxg{tHn9vVx zF8A$HIMvRiLpDIlln!9zq5UHg45kw*;@XwHBJGN9=0+THg5LKMq+4n+jOHf?zG6U7je++d_UfsSx;ztcjb&ub7|Bq!Z6%S(V%c;l*y+GS(-J3h@_5Qeo53A=^P z$%m|Z__&A8P(nQObr8-Uu}qPNVI0B&Zj0wP{Yp+XSH7yFU z-X63Uu*&j|fV?s0F~S+x@b-Lxf5wY~7M1cSPYtII12F4j=esJ|;25a%mo0?CS^6lS z`GDb-S*%y-6oW<=g9t{NmZCoW;nnlV*q}MNfsG2f#StT}hL2d-%HaqwJ@^Fn01Q~gYb`?VGcW=fUXZ$$a+Sstk!rUj zc&w~gnp9aRhC{|cfyW~QWX9&h^JVg09888uF1$^7t)v5GG7L;{EG6rW+}ajSd7-S) zLdzurGt%l+{M=GNYrV)ir-PoEFm^a)aJ} z={5-uK9DR=H1N$C$T-}R3FqkdFC0+aAo3nL`oW1` z7Le9w1S28O4ngp4zN3k?5>Eo~U>+|$%_|Izhy?{A^TB#4lRGQ${7{bpu}C0C-q5So zc}0)Xh4-_QRStq7I;w#wtJIW3@PY_mRUG2^1Ofz>=qZ2@PnCLsMSV6@dK?2&NFPpB z!#cM#_K)B~2-Ml+n^F?WZfF7TNA=UY#E6vw$V8U_8F=h%s|rOr94O24O}sE$Psabo zTVT8e##>;#1;$%oyamQvV7vv!TVT8e##>;#1;$%oyamQvV7vv!TVT8e##>;#1;$%o zyamQvV7vv!TVT8e##>;#1;$%oyamQvV7vv!TVT8e##>;#1;$%oyamQvV7vv!TVT8e z##>;#1;$%oyamQvV7vv!TVT8e##>;#1;$%oyamQvV7vv!TVT8e{y%GhZ~g8Ue>gTt zT9{!g+;q6L?Md=i$t?Jiv-xz z+D&QYzooZ>72+S@uw0y{-ZozIup0P~OC$a37!cKKgVIr*})-#X!pH?&L}dU8H+v*0vIlxpH};+OGv z%xfl`hcM1F_csUiXF3=ByTj-&^X-IV7^;GFoYv(VL5Rfzeb#Oku_*#C#+$X?n3;g<>kV0OxpHnf4*-%Z^1nD0$%U4Kh`sh*Sd8PmQj?) z^%-cj%JUY7G0#Oj_QSsN)a1bPl4P#I99R51!{AxJo|bHVagtzpm2oQlq90}AlahQt zy?Fk-c|ki$^znb=Eim2!<1H}W0^=<(-U8z-Fx~>=Eim2!<1H}W0^=<(-U8z-Fx~>= zEim2!|37Jg2Ro9x+w<)Ws3kA%_`$l-hmvH$-sdL|&)wbDxb-)0?b?vsS-re;-aW|= zP9D9tE%&`W2x~`Jd%p8vdkfr&od=VS&Vvm5&8z=u@6&5q_8xj&>)t~*CyoDUOYZs{ z=)d>Dw#LqXy0vR1(t2=1@t%$^+}gDY{)aY{?wQ$=Y?^i2qV2nrr2E0IzsJ!mJTT#c zOWS|1aUMdPxh*GO@z91j_uTM@mQ91LN%yp5M_2m^aKO);m~5K*)jMX~ds64Y-qvYT z_9Nd`gyR^m>nCl~?wSO;7sCII6Wexuc2aWU9j((g?*7B!Zs@M3P6eLvTJZaL+tj;$ zbo`F4AHz)qeBqZ`cg;%f>^k(i#i-Y!y}x<&1AEpjYnd9ttoPGvzJxlX-b<3kXHef= ztnVQ$`%cyu^wIcz<=9@jrVMPqUFSuE$vfgwoKW$bHm(wuAG>3--31` z?Jc04jCOjJ#M^MsS|&|j7`FduK{d~Dw|wQ-;=Ie24x^5pE>PjBp>HDQvL#qvdn?b?l$sn0(*##*`bUHICght?~2olf6@RPj9^S#+JqtpP#b#c{fgP z9G9QoIDXOe#_jo*#!nxZytiZa^u`G-(;Fx5pVqi>QA^`zZ|>MT`Mzn5_T7MIw={n7 z=Jvg}wX`&T`H5rp-nKt!{P!m&?Y-^3r18WjChom$chY$B6BG8{a%0kX>Z5IYZ^aDapazt{y=j-wRyw6zYL~arJ25bXum}-r?c} zW8hPa_hh#I?fbLw{>sG*#>j^m@4pf6%pkv~vhlXKc)=KY7jT`e$;InuB#rN)e|Pn? zH+Fu#v(f&^_DorepxZf({B=&FSEPG>D$@oFX8Of-$$)h?x&%$`Vfn_== zSs?giri}mA)*W5jh(FozOBGN08u3#NKdAVdfFB}$n&Iy>Jkl8;e!AhGR{Z_I=YgMf zis9GJl6>z+IKvFCqSP z!>?6*56bfj;?FSrohklO;?FevlZt2gFC>1Z;a8s}`Su{+7ZE?p@UK@q>-7TSXB++= z!y}!U#GhsOsb@<%i-A9l__GbaUh%EKpG^EYhW~Jie;)BKF#G|A)#>%y{ZYKx*?7}jykO2RV7z^Z7xw9*Y`kM!ynrX1 z%Xp6=9@cZ;o>ynv^Wd2_PXeBCD&zeJ;$a;4c)PRh@-r7N;3<`gfz<04XdR^Pz zLl5ZwD4EcCa3^HE_6uK-j{9fNX?)|13A=hHbspS-uw>;68nfGWbe#p>{a?VZ2mW7B zp3hQ_fP7Gde6R=m49{ooenI1lVf=kBXzZS#@xO2Ju}`^M_9<@zKZG3X<8D2-@v$)O zXU=WhXmKC3xH~1z%hNb3U)Z=ajI;BFjoIy*-#=QMJ!dW(^?BSrr?D%f-#4eRyF=+e z5#mohuW_H@_que>3exF*QRAkNe$R^<`=6)j{B4LYzNB#@)q`&C?6kA@Mq!QuK-T*2Wsq`37CS59%Saky%VyVl`0r?{&fZhMMb?Qm~MaVs3| zrWCi>;og+uUg2=JrnrR;_qG&wk;A<`#m#fLccr+w4)-@H?i`2vK#H5`a34%@GaT+C zDQ=p>-Id}_aJY}BxG4_zsT4QK;Xaq*S{&{RDel?Rb)M|`Qi}U6aDGnx!%G^AFdjH2 zPC|T-zXxMwlH!kb>ArS(I(FYOukn*Goo~!*+-GAwarD~*`UB@Teh|{X_=3i6?6H~e z)2@tf3+T_8-}vW{e*Ju3o&%1)9MCVgsBxdeR|EXciyHqJrt_7Hu%FU=zvt-R5YRum zpz(>2{@9BfyN^}+uRHpi0{RbM()dtF|MVq|`;7ieM!)m$&CR^&_JxgihVhb@Hf}WD zc6W%c18?QM%hKEPks$w_mo;t<>A!nfqs8by;OOrP=pTJqV@pUs=jEQSz1`9G1oU5g zd1GTp|IEu9`D3&_-sI@}1NsB6Xyiirb6(llZMcH6is zJNj1z^ryBoR)qAgZ)q%=qUGsv^j!h{f!4;$fZwwLWyC(xkMHZ+8jG+`;P~qf)BA8+ zqs8*S%B8nFNUu1d@xqY)(Fu*bwfEu>e_&$cK5M6!yL4U|r1RrRjcFnM(qkI4tsWOR z`o#hLKeRVGLi!0EjYYN|ofG132j0ffnIZn!jz){&PYvYbNkG5nd5!Oc^v^u6k+=5$Wr%<9 zxJJul?XLqaom+!(ckBs``$GD`6B>D=|F;nT#SQyU)wUS*vnkZTr0Ke}iyR_F>_?s^)!+Iy!!#@PX#(cL?`W5c!eusPYVhi5}~^?eIlnGJh#cIWiQ!xmPI!}_K-9BJsrSTpM+ljF0XtV3jP8zQ}CV6VdoTR(64QC!n=Sye4H`$Z`o_R3YbngrC z`&7%O9sK=lvgs?6uik!RThe`aO)~mh=y3P9op#qIr1{uulTF1_lI{a-)6aVm#_+}) zFKgTaQ|}F>;=;KdlW&{VGV^Hyl)Tkg2ths~PSSdXxKTayJI zcfqvAYk=!)3vjEaHLfLHh}$}?aW!zWCIoZ`rZrXrw|+u$@g*q7>Bw&m+#Z`BVIG{< z$)Up+dm7B2FN4n0AkUYAX2-Ju&9xKLaO8g>^SAIlZ)!c{yy(O|2+fkguVU`{&4sd;gM@PNB6v8(&#nl0}odxjb06yV|M?{ z&V%cJ*}7{f_?f`Z?>zYDfI9(u`WX{Pmw}$+Y~LxJ2Oqy-N7ql055paw6aEKY_p&gb znf)WO@o;Bh>SI00ru`jBcl*PC<>bI;iXF*kng4E{5fx8s9B=76nmaeldFGrj z?K3Bi&I;kTO&UEtgv*mgPYvO>Pa2&Xz_yMLV@KDgUETrx zo{vl#odEa%+H+>hgiRf@(2t+IWk&m7?wRa#@l5Mh@cma|zrPB4`X>$@Ucfe53H|)9 zgZ}7vP<8jD|L+k0P>O#dz~2(!e+2wv{mG`?IO}ZxcG`Y(TDARTohhEu`0{DmKaPg& z_g%!@hw;;bI#v)abq4(1=@WK+1$BF@iZj=ir2DaQvS~ekHzb?x`|aUwp*sfscX&tF zsI}FdXPwY^eCCd>&lW?xMkOy;O@k@N*=tl@ssmfcD4Ub<8kgW-g=yIc7LvQ*ZSq12fOfF zI~M8Re_W$@6V9+Fb{^z@a53D6;64oZ6S(hwxpkKd-wl}IOW<7iHxLdP=#iIUERl~q za911Plc)4w+`8+>@27vqBQ2o+=KI=qIr(B{p>=c*+G6GtE&BV5meHLUD@D|i^}gez ziKAbAsCCy4w9SL~y&vx0!-p?E^t$xiHEdVcPQ@QWuDNe^W9C!I!Q{tDC22YCV@b>N z;Esix0yi111FjwJ7`RDr6X7PnwZXN*wZJ7G+qp#Bw&R4i%KSMG>s99yD-JC{UDj`y z^X$&kG`xZ1+42?fSLw z;-qoeXxpxLqV4uUf3qLq@BRn0{mp;z%q>W7F4CKe^e%5{|5+Y$3;8wT^Zc=BTQE;t zdU2c^{-JGZ{nQD&4nL6KEIhS;aP`;^89?-SuRo=6Ip*UXlaftWKt7;cd&il{CR`Zn z?!Y*~Rl=zqka6c8TJ)XsCMJz5o_fREO9yZG&LCvpU$jlR>y8^|ZoT6^xRzww9UaNG zx8SVwV<#q0EjoO-JJ&MhXLll<8@A8gI=3Tfuznu`-qj6dlljQ=9y;GQBa=ouAaiy6 zC4O;+gLV9P@P=Cwld+$tJxEeI@7b9+ujt6bT|IGh73SQm zmU~~3Tz%s!ZXx}jO%z*^!%HT9``OBg;14H(Pn-<7f9l>tZ4(>Wem(seX`3IP()i8G zlU-=5yP%uAow~_s`JG+YAio{0({3Zbo{cuX1nIv6W3e{l)CTbnqTg`|aRJumgZm(- zajvz_f(--u{aDZwx6jgb=^PLI_h9?**hh}vwExiI?majEdDGa~kG4GYx^9$v9m?MY zzIOFq)JNLzAY?G=bF;c!-OIdd8qRQ0zV^4C+JGGJRC~*gzxkgJC3_)H=oq-})W(;P z|Do6Ep2_W(o;dpp*ekVwkG3MeHsm`2?KKfLB`uA^OD_2KuQ4Ymf1vGdPv^vpXFlDL zJWRbb=RwQdon3jf*RN2%Oa8NE*A1H|jkcq2i;xS7pVGd?+&o?4O_6Dqh#U8k>iKBB+mjr#gzU#(U>?Hm56Gzcs4<~n?+Svc`)?ND!AHF+z z^0LM!za{>MliOb?{$0-puSXwp&PbmmZ|mwo`qT1lyMBjwMd)UVkpK3zO~)Lac31t` z!|(2#nB1K_e0F2uU$*U%JidrL&Ysoy=-;=YA8}^3hX1C+FHrnn8~#Cu?^gURhQHt8A+NAJHyi$o4!=wBe`)y70sro4$?d=W;GD*R zNsuFMOg3!<|2Qxi{=ZB%J&(L((&D+Vxub1Y`#$BDSPK^xVS_adJOFL}aPo^4hxRQ_ zo+aJY5gqQBFQ5)S!Cn@;@Zs6yg=e48ARm0==Zy~neg^)3;ra?%+N!uVU59eE?|ZZG zY37@z2c1}y-f)oKk2C4LT+>6FUyk%-4rATjkNL*>GtcSBll{96<6U?&!uA7x9Q}PY zaF9JN{tf3R+^YcZnUrA8wEqlt58d}+ZfhN1-1x{;%&Gr(*S3ebwq1jqgJ)*m)OZ zbo2+-Hu8dplb@f~_(#muUvq53-T9xbyLMcUuqDZ7u+|++S~?HTJUtoZ{2BNH+W57} z!JXIZde{Pa<#L3*6Z7-4U%wRXJngP;{43)31TXI5Ank^xNOt zd9dSox*nd_()rRCb-=YGFZH+%^CPdOaN=Az@@Wbu&V?h7rf}k1IBW>R@OFgJu5dEK zrJag18sGg`>#lZ_k%}faCMWIaYB_O7*O{0z?U0?>7bS+7pLCbQHgFL0jpyy>;WvRT zU<+I;WR|vBJGxH%Tl5*`&4J~~D4uzkIvM!OXJcRX$y;YI?p)Xv&dQ&*ZYFT;z|q#Q z9k>?YTp9_|*x94~!ajTO!vTzTdI!S8e1G|Q^uePnFN=GOxOrLJ z4~d(Pem}SK;La%B?=Wn7mj0W>&B)>&BJRvA?kmKdmBoFTxaC>g7l3PDtnClk@EKRH z{6)Z@_}9<}U=0uOuK^zRn~$`gl!i?|`LDY!0bPRjZ-IWd3p6{y1Cr7u&wTc*r19m} z_NQh;p5Yvw1veXx?f*WOX9LQ^cyPqMi?}lMc~~2#?Qa>q=2*-T$oZ6s?`%yzc4un~ zTq|4~+yuCZaFgJU`Pi3lN)CP%eC|&CUVdxKu6r?G-TtG5Jjn}aH~Mv~SCs7+Nm*bc z`xWDPuxGiq6}m&r@Ajuw9BSW_94g{m;XR<6c_PQqd;Az`A31Yf`*kg&Gm9-eGxlk{ z7-`)*DLLrk{;BcKWW34GJ>Ch7cieN2*UESpZ_l-yPd|Wo7?aO6-hVP4#_e;B_bB6G zY(Lj{UuQgw|K}R-i;Rc4{9NOGobfQYv z*>jIqWV~1YY4ILx#hUgXZxZ`x*g`+^80P7n*x&DbJ7l2Qr#GtSB)iB%I=^zO@R0m= z$V+AD5_E08c;|BEV^}*D9>BhW@*ZXD+Rq{1!vDZUiRkxeyH#wRFq#~bWa6v@?Dz%c z1kCHM^?lGqnEgBVQ{*8l@mu^jWNelgFA<&iguEMD4BTG-ywao$SE zdqtdWBskkB;;f?uXB|5(OLjTE3De~Md(X|+b02eixX0a(H4pm->~WW2Pq7qxizV1& zEXICj5%e@)8{}RPvYE;wvt~5jjr|MDJO#gBhTP?4l{e04+z#9X8zq zlpU7+^F5viS+|e9%C|$-7V>#P_yXQ9@t&xv$CeQ%{}TTIVHVZ{XM*R!>?q~Zbk+IB zK>mHplt2{kBUVRUG;b?UJWn5B=Yp-8NhS!CZ&F0@sj$iXIus2 zpSE3k&(nP_UG#LH-dRuEdSA%*kj1ZV%;Ntl;`4~NKh@__+f)1#pHKW%#Jx}48^p~c zu9UddXI4Bj|9-w#^SyD!#`zxu-vRvA z6=j7ZcZN2B#6ct?mWS>jtKG~=D4TFXj%moJ< zmT#E9g74*gKe_zL`Q?-~hca!c%5&M+W4I#9o~A0BODW5(I^IZU{LV{k%tQuMHvOqp zNq+1{+|kOhIq*i!R$JYvMHe&Abs6m8;ggs@xi=pjpMyNsqRB2gwtsV8owz9mn$QE< zU?Z)aImQ`ng(dI{!*<7{XHD?a_RYFHP;7TrZPD$6c9xXrc06{^LJ!ZJGnGP9_SN(Y z=+?3Rfp?hGGFRDO6#BR7a@nqPwm)rqk$EZaKSaz~`Ik8>HW-m}b|-nuoSpvM0Bz1n zU&x%5{`pVl?PIO?eq-ML>J)RCId&0q?EB{JE6mMjBIfNYq^l?0D?f7H{>_+USu6iA z|6aaj-u|6=`)j^s-u{DmdoABGZ{K6yUd#NEdHeo%%-cHPg%)fkb=<*OBWIjG=*MPw7fJi-jh^-d?9U3> zTfJ8Dvj*1SO{xD#5?PV=Ok{%}@&02I=L-g`z{s3cnX^{*QYOqRz`TGRmw%r=cf}?z zP4+LTN}S`QZl~5%lCJHypJ9&6+{`BrCvjr$hL5=fp;PRq3a8WdjU63hZE;FmQ_1j# z6PzWP_G_9=;1_CHDYE%hL)bIzv6ea5cRN(awETanal_*RUT55Mx8*N>W^Mkd8}}aW zRo?ea+A#IZ*yOxaXR>X-I>SBi^g8*eLmqY50grUsbJk!Hd%9UqB2Q60<4!HghvrR% z_T@nXFXjxZ8`_DkittG`BcE-wUGQb*`zrs#VwJc_eU!LpaP~v<9JtAnkY_9Jo2J+t zB3IZ3-t5r1L+A%OV?FJqcNe!!U!1*nUh%xldBy3O`J4^Rj#i$NeK5F0#&0<$wtH^! za4UAlL}VPo?;Vl!l8-gEZZ+w9lGn3$&uiONT$)*bcS+l`#lth16M-e9m%OHv@2amm zwxlHL>4nxxddWx9>S;=~G|v`~$XpHl66U9*rA~p_0#6v_>v^zNlSlep1N%<2TgvF8!r23{O(Z|TNjN{dkzaA! zr{wqCvBi6L6_?Srd6}P(uaqVKyCcewe06-O$3)(r5*^NeDfz<_zSCI->3fpr>f)Q* zeqLOh`2aY3pxB)mOSm33JX7)le|vHr_dJ3d-h;USz{D+PqdV6v*~%af(yaP zaMkvPiPLBA_JN0z%r%r%Uwms@Jvtz7(Z_=C`Gh@JJil#J$-GR7d#*T53%^VYzm;(M zk@)9mqt-vb{FXiyJWAipre6C`n)RZe_#VdmlXiYrT_k_KE~Vd5m*HBOQt#&|cNF`T zZ`LL4JL_VeL7jGn$=RHoW0>clBD<5bVe_m|(#+d{tnMe4xJu((-G_WOGG1&^Pu^l@ z4m+63PUdthb31IC>XY+GB(<5g$x>ztG}+$giKMz+k7~BJB_$=9 zvk8lWukr12SJ_h4KtE)>S3pnZl-$wgb}50hIRE2`{Y^!N?1iW z>;PehBy43w*x@SghlHhglrr|ah3KoiGk|q-AY*wJW7)@goum#9peq%aQ*w9PfnGmx z3f})p8jU_WmA>{fb|g(ymD{FT*FIk7@U-Wv{i^bzTlqab52oK;(vV*^ux}ONrG%G2 zvrM|U4jMV2hZ6U$#S%!dTFO-DXLc}OZ&6o2z6*Y97yrAc-zRs^Z`eis9suqr z;hz+b%&doAZk2URUmxOZswI%mGf}ma&7qFx2+f=~sBg+Pr7X3Fjx*Vd3}{qlBrygA zSA$wsd9ML~?e|(|nrAbf^d``|FzKYNxVQmXR>q+9 zI{mB_JqY4gK}Soddm8>7?j&&U0*=tbc}nj`Wr3 zzW~`)gYYzGKsSXa5!qBR^fyvAHHSVmZBf6xaym478ninf+0@id+f;LGfKyGr)isZ7 z@|H8^@5<-tQyu+d`-pyq%KD&EhJ~`MtPfGF51g?tLatPy%aj_x&49Vs-~WAPD5a-T zR!;tMb~Fb*LFU7$MN>#KnY5G0BbU5%SsHl+$)DJ|q7hkuXx=iA%M$*bYV)N?}FcXqBm> zH8PH_ra#gi;_N;9?0~%cXO9cKOc^r2Pa@}y%y$y{{nBs$;+evkS#YQlcU2E1VB7al zXv5p{%g@gWgN2i{D669_I(EZDsTc*O<&5`)8-9yRLV}H zzl85n{+!#sB1V}JS&uUqYi2#z6KUgC(k_LT>G~o4>)f|mf-UI3nEmcLmZRn4Yws8n znO9_+V#we( z<6`m_eVp>ImG&Elc-%Tp`gM+}C~z9hbFPB!3iukkk+FQ1$L(Nkv7J(9$XRj}b3BcI zH~(pj-)R2z_J+r%_-pCGGnjmYK36iI#je3UM<4$gALh1?;f%TROJ^Xx_&zUZ+;}#H44(IC$Yv4xUM*XP%4#7o*_4 z_hcxUTN%sySu>z_@C3+?PO$HwzK_v{mj;SW3N|x~2PE4U>pX+dT+8BUXl`O%Ds4;L z%-ZukFtNZ0-Tyu~3vgl^@_le^FIa+U2WMy67AGa!7CUCzvafKa9Zbng`z#_X^-5>j zXM|ZjSsGkgo-=KnlF6PbkWzvEZ@byf7`>gWGpb#gk@hWZ{X1pWd=Jb!z-aCK9=Imp zw03?E+#miAwNrTgi9u`7M?VP<Oi zQhO>htkBNab1WLqEHD!P9`QluqvX3~nfQpal~zG3WbIbTLwLoC#B%RnM0Zv4ArFZ& z!}mxyX)Q*$q!IWxBwTPq_)sHG!cQ%l1h0_`&yfS~koOyqt>{(i5AN-7xVU3^6j(G z*Cu(d6FN;@o2@AoN)8n=)_Gz|6=0wk?B>UoWuZy<{E4l_JZ?Vt^R{A1}K8dDp!ny`CDaUu5a*&U2 zqn!MRyp?DrWK#`WyyHsfQTVd~?6>02_O!nU@A$6BG*g#rx*hvU(lW+-g*ps(P+Jy+`gHvVNVtZIAh?(_bL zyt|hB0cFa0$i9fUq41MZC(XwqaetLK;AFnkU`w;(cJ`nP&=a1k1P;tp0$)6B4Yu^x z^ky^s`G!r3*d~;wHTb86ag%a`sjaouwk*7#{5jVVhA}#CLz@li*jzkl^Z->rd}r+4HClrSKPJ zmS6#}$Z0Yn$A_d<*z>u-RVq)2d$$g}A^{H&6P=ys7_o3FF}-SJ3dIWjKaWSrOx zT?wt;8J4nV#GW!@zRQ?ktuKshuOB~|f(Oath{#vv+~Zhw$RCZanoFlWGA5ePD{Dfp z%%1A0U3KLCcMk2UKfdbYw~nW;K5~4b>NsqFZS_0u5%tF_>)$+H8QXkZQKz1eacnd8 z^7a??`Qm^c&8DoWoMpS&!_KxVqeg(=Lst8=(#s$APP=@Iab7!jZx#JC^-O27n+;zH zarwlhFRtS(*NA(HIOH^3D3;K*9HDy?DaZX(Ws*Bio#}qq8mG)EZi~eC_4LIJJoiz~ zN}g!Or_fSUKbf=JHdF4?wQnZTH+!+!i^P%4n-cK*7U4DncXIY^gP(M;rZ_p5-uT#K z-qnwVZYy29ac$|T>-WwcY%M#qy(*~+c$t%Lh_6>wnPyX+(`>-lfLQ`e{x*M7&71eX zlQw-8EgWyxC6wU zP~(IqRuK0(@0^JIm(v~@BUbh+lJ{9WmE>)XFQqcKeLrRR7pBaN-loQx<6{zVAJKm7 zxDurN$g)>=Q?~fcm9mF*DO+$9S$0We+4px}_LInX&!WEnqWr>VEWwd7{tUiB#-H#r zqR())j90@h!ld)77_X^a!fmrGGh{5+)4xKe21~p7Cw? z%C`-^@~E{>UCP($F%{hcjki3dX0`lp@|Mc?@Rp`siQq2{nkZxH-zPdAi3}H7DmuRw z>Yhd)+b@6@*LZ;9O!Lgcq)(FudKRWa|91A996H4Mumc*;dI7D~{aZuJGt;7#ak6gQ z^QIbnn&DHbzm-J`+R~qf7b4s@RM~@{=0M6e*Wqd4#J^M56PCJaYX^0GW~i#I zDMHV;;ge>fVks*X9)mdFR~?U-I)PtaIT`+T5`1nhXDm7RYSHyt1gJ%HSr&6BgZnEJ#AZ)j z=MI?hqr&lHz7U;np6RsThJ3h|^vE%z?)gn@K6(s`&ektA!RCJ#{?&HBI+V`4q}5R`DwWI3=Vt<&Z`w=vsunk@|7`>c7JDGGt(^RjnjBj z&Z6yi>GsE*RcEHiIDmedY1dJo&jw~E(*EjqCEV1DSCc?MB_^aB_`0uRqKOYJ?I71tbeOYN>c)&F> zeJ%Bhv;Q+br1@V^lzQ%atxs_&?c)3S5pWVeNeM;jEPdPAQxLi#zA~P8KR)DVzmOp| zY@F}Om>UUh#3l?s+nk?wBS(TBZN+X$w|7(PZ88>nUWg5FJ_nI84k+BFanoL}z>iuD-FWhr3!ggD&Po+PQ zsnkzZ;3p;{M*@Ba@Yu1m?*xA;xJ!*z>z&vVmd>~^Pz1ayTB&z3XNLoycX`d)9S$X~ z5*%Tl+D_iP-4D~xq;Ua@Y^vUE*gnMxWdKW}?wk`fhFAbp=2O`nfhr+p8#(??_07bpX=3)G%! zFC{It*ZL3D-mXE{ol_K}oN`eon^VVc*Lshq1}(r?&d4Tu5DwSeOun8CNyv_prQi$HC->%E|?qDp!qwUuG2p*al(&SLy5rG=k;jM?_Lus+# z6WT8GOT!c6TAOE2T@*0qZ!2ZX{FU(3FD^c{?i2f|l*zy^T`@sfdLPfq30j&~8O!wf zQt0dbN@(i=@+YnTH%iv?$(Eog!;$$>%lH;wVNvWQTs*9$(E9K_G{SR6>YGXbT0W}s z9(j+w1a>ytm|NY&i=3-lpcg_|R2fcRUhVzeu>1z(uZ$jpQl3 z)`tVJBVfN{{{Nc)6!s#QARlGT+-+FOdiFor9bF_7PN<&A7;;xQY z_6R?IAf9t#^b5h|8hhoGP|fz)Vhb{gHK(wIIhViAie9CyRK{f`FvIVk5^8mNLQ7P8 zshmMn5mp+Q5<1dD!eUER{H9M2X)4-WJ|}#=lr~tTM)=Eq8zexd-bJ?$o-I`VF8zAA9$H@7;Vq z&YpfD@3oVbdl&JZz!()?xu#@c19WkeO;!5Zp7LK+Q*uE=O_C*8e6Nb#%$*HQuclSm zi?cH2Tj*y~$+(8!QEoHx-BA+v z)Uu__b%pxBccv2jGkftG=$P-{9T`$b*`LNDGboNxXOy6`II$R+@u-KACZ1Bu?AFSp zi8olviaE=En{$%r-pDgY|MLU zzyAQTd-flG=y#C;^EoiG)=Hd1&XV4r8OrOqBgs~4PhO?8jTN0m2mg8N?8%Z&a3pzu zL^|mwm+^mq|FNt&@51Zf&Y0Q4m|>o#x6r5l13J%Uo8?|>pX>>xt5Idsz_<90ly$_J z=ug_ndtzb~cwL=TYq3|Y+P_*mt4hb#B!95tEm0jM<;aNNXkM+&lXUDx{2%Fi48OFE z@#$j>vIlQ?g1-01=<6i^Z8hjzD|^!Lvkf29s01vG;V+}bCLH@}&e^sxXH6bR_Gsx# zl^L2}%ecxUz8PEeH{T8yb)@d%W5q!p@DpY3ZL5-mzWJcD`u#`3Z+>^#f1&J6*!Pzk zxO)iPx!}92jsFMuuZ~!cs`!^Xh@>61J+1)f#-gLxuC*)9-Px{X)TxoYBk^qm-*)OO zYgQfkr+{Pks8!#f{G=adZOiwW2| z!9%$BUl8CtyU%dZzqUK8JZj3j!tZw5Kbrqxd=~#SC)8?9Nw=vf>ArX+V>Ny9ZE0kz z)G)VMNAX>JdRl*+lCfB55B?IA?6U*%R?#6HbhozdcEU?L>9^!3c#0W@J%X{1kTGg0=ifLFlYjGkyN2=S zqwi&2anjf63v!21m&mr8W!G@tdJ$zmn~1ETo4VE5@NrALHb%=_0qIk_dO9A>yu=U0 zaA2)>c8|Bb7$rk&vi#&Rz|7OQ_iGirMG0eL6?WB5SGjjK{6vY0KO)|u8!q>Ni5&W9 zl{NUOoEvsi*F0opPGB_t61;r`+!N59?qJ!|;af7yQ}iBaNqGAjOE8bR`AO@9kLxZS zcBa^8h0_U7>NC=G2Ve7bN5)6c;O|;T?RCq%x3UKJiSe{6mWl6n^ziKI$W0Xa$P_Z9{P&5&|7M+57t;Kb z|3>=PW}TF!$sjpH$da>w+*`Bq@Q*9`?EwZk?q<;|lePLSBYzv`Q22K`+z8E_%Gt;& zkp-)cQe+33ZRI}VE&={*@}J0g1nV8}-NW4u zTx9>;uJw=f*Lhn1l<`l#pQbkHV?_FFo*t(4SJ!?D(odT2X#?jy!1-qAnAB-0Wwl^S z;VW_7C1YLuD%?YuIR~1de~Hu?AJ^>{whJ0 z`gL2EGU@_fH%4rCrgpL2f#)h@ZsMCV@f*HnB6+H2qa90S{NelC93LJz*8%U-sXwy& zx;xMVl{V(_Z&4E8(DmRG>MrIVzMl3c)O|`_MHg%!_3x;#;vXgo{}$2shl#;IOb`5L z+ThRaoO3uhi*cgE6^kxE_Mf@dfTmXky)f5~7S;zpa{I&R{VA_2V-i?Xeg@6e^yO*u zhlG1xV|?%y{;UPNcsYky%9t#;3tI&FM;7bhU&7}w-etc31Ne7&gf~7)T?IzQuCy(9 zwUG{ZvCoyTzO1W~*Fj)S*|pRy4LA53L1iqosoiFSt$!w5%-a!8`=d?V3Od#oAO(;Lo)yKp7Lvcx7|+U z^-FsOT&XtnqszUs2IJe5Jc=Y=sV8r<9v#d9Wd56!E@Pz4I;id% z@^-zTjG4__=nQ;l-wM8qij@qlO>(Z$uAghz*|#>a@2Q3NOSu7^GwS>`yv*ipYgZ(7&$dgzmmM_kPNdE|{QrKY=N`@OD{BzPCS#9CnG>`%s< zf)4if8EP=qf)DnyfTyfs$W8{!e~wbNnl*DeZ4@8G;sada-BL2IA>|8e*+yumwB7M> za-fAX#a4W&3_pb~GVA6v&gc)9Y-~WUrw;wL!_yhpk@#ePm(`E`gyaQ$TuaG_2KN66 zLCPznynRDC+odl1xWgH~ys#X(>o}uLvUiaG(Z;{@t;`GCMamcnA4&Ks^2wLJ5q~q_ zLGobCXlLE6_?~EydbQJr3kXNAP3jLX@Wx>YPgRa>$Yic!@A>LT-ABP<6?`x*mk!bQ ztTMJT!8NwAo#UjLaWV{gBQmvB%ym2cw0wWZBXYiBwq0P7444w?gnf;-2{;=*sifRx zQcu<^3I848Qit^hoP`tU^ah<_^aRTaaNz!S$KeyXy`|G-?e{;m)2tsj7onw*rE3XT^7(=@@LRQD#R~;j;HT=$6;BncS-Gj;FZic=ZpCw&uc|+; z{7pfrss>EIR33a#t;gR~1^Mh>{t`Z_*5RLOL&0@~SK~{j9KTct_}-2`s#M~{Ka_%x zD$_TV6W=yFqm|9G8DlbrtjGdnd^qq;CF4cp)hf>%{8CkIHSQh9Cg`xmS+yEl>D8+3 zjqC7Hm4lC}9DG#e;-e}DA61hEomr5BU#exx*U!J6Z}C@Efxjy8Z<9?OR;Qlsqe|+* z+}JF0Z58Fn9Ob;Zs+F;uj;|MO|MK+Oq-mBg@V-y>2PLB$T-4{kjQVWrqtj5S&%cgzJR<9O z9`&IOGmz76a!WrV>oxDv$ornM+(uci8D-6^7N}a0=$Md!46iF>JP+BhH*P8!ooT~XZ{NnF*|{pNFZVxhB5Kx49V;bS(n65+yAVM|FbrBw>H|MZO-_+Q)af5 z+|Io#@y>}Kt7UJjh0f(-x5J(<0bPS%!kfxIOMI?qFs*7?{o}w`6G}b2TTAY4IK%;#)f60DHsrFjVP=iu`xwlOAMC^IuWY062 zJ&$%?GmCrD@}Lj+ns5&sugk*k_TAMf3uiqPnk9QZ-_JSU;p_qb?K=FPZ^8>rlKNyH z?s&wMo1CMB)$ zLK`FMv*hP$8GD{WITI_AvzcevuE6`MlJE!O zMBC&k-e!Jseky)oh8Fu8n%UP%Uhk3@KB=@j?)(|b81_Q%JVyIuZ`@fg>MZ+WIj4+g z|17*oGW+JMdCPvbZL}xEcnApX|5JyRbFqGh-J^x)xm(*~u9iI}akk<+GDQYEoV}*3 zb%(g)W;%OK@V{psd(9&yA;uP=n1l(p>CqDzn^Pe-Oa4cT%&GUlo14CLWI{bFR#Q;euc zn~_NeUVhw?VA5CiTWd<8uf@<;S!)krKZ5V920LeS4-qH+4vS1Wy)h+lu+uC zc;vNzV2d$C>GWy;8Fi>RPuH83HOuc%GFs3XRuW?Zf@?KyEN28i9EWu$tZc)@mivdN zxoEJGAnVOrQ&_){3;dY0jZ>@%wzqV<8gordEB3YJMJbyV@fX?6`YUVYZ7=BS?px@` zh>ZMM%I;iuTU>#=!1-2mG9z`oelP!<26y(Sze|6L4ur^;&2cF_&W~yfXRxMy{5#mF ziOxkUHYz^s(rxQF|9Du}ePEA=T{2^mI3>Grf-_O{uGpi=|7!f6r_Jf5)ZBVbtR~xW zq`OsTI{W2xf2Bkl` zv!UUPVU02&m2n-u`&#U4F7BnCrW+ZdkEii&GCq#CTZ36$#zltc?*3SPJneqH)9==k z@><~2r=qXqX6(ALKdI&J!~?yRT6|dQXVfmaAJ0}d>7-TknmX$xHurB(x4vEK*6Rn> zO>8S7%N71uhh!r>z^mVP9A++-t7iVfhR2tNDO%>2}wDfkwY1^-IHFH*(Hc{BdS|HRk*gEG46J5#2nizxR6ew!{LI?kGH#{hhL{sf-9sN}A;Nz9Qk_=pQ~4^sIu zPrHYIpWNNSeMQyS)Lp^-WYy?g6v~@9ePkWBM&!HT7pYLhENZw;T?GxmEfv5cfd0*sd&*a^Y`4b4khA zHlOGn#l>oPSax{1cPQbu$<&pz&Ht{uO%L@@w7X5Sz&&ej=iR1vL!0fKkqa$);RY36 z;XZBOxrF~aIS>De^}8eD9=LYG|LbyWHo>cc&WE=D;=YqF+pNL!@W)V8lG%0+?{e;z zVtwnp?`adZRMp%W#n~cu`ud$wEkE+ks3#;38Fxngm~1ts2`IqUecZO zOIHK^^Fezq=Un%d>zU_&)M>TwUY8y~zZ7~YbV=@yI$&3z$*13?B>FCLm(sr5Phb1t zxzJ^W=Xy%~!6;=I0~YFhZP=HQ$kaw-+qdAlD9!;q?PG^4L3ytkuLQfoew(eJN$-8= zbKB0q?xu&XTUyMXYbP|V3K}-?m{L}Z4xyaEv^?!k@}d8!>8+$9^D^$N6u-s78@>8r zmG`P$s-}mekoM*e&}Tshshqq@`1W_``y<((n7+_&FS(;lVcoipc<$Lizf1QKYH6wR zMq$Tp#$VM<{K+@M@!oFYKaYsd?H`1>N_|IsD>I^yp&>hfnPA3Nr*Wxm}djfFld zi^%i8y2KA9zBnR&YnS*O;^#!f|E^2?b;QpiUhwdY=m_4c#&_-06V?HBin796L)t{8 zPuv|^A20Pj$$x((5jD!C-gSI`Wl^Rn<>lUA^Zh~Re9-T{J!tJ;w{ee*dB#Wi3h%?f zXyb$L2PLhH71BO%TG~YJ&FxnwX@5mp{48j`zRj_wG_LSg0I%uNNxrUf?-DaF4}K<2 z%PU-u1LP%RPul}^LkA9`cb5Q8gto}pa^&7f_#$)PkL)3{h4IvtU)B8DiC(ZF5Ab!$ z1HNguyzxuxX?rJ=u9; zBGwtDnsvs|gSYv@e%S54upf38crxjt>hrZ7fX+9Ij}e3B+5d)4|A#Z_XIpwPHg;}o z1JZBE2~ERq-jXg+H*1U_XK>Bwb^}S^k{@?yMB{UTscQ^X+ z?s`wif&ad=R7bLAC&(C3;H4*CZwWqaXYDrd-b6q8WV~`dA!kM6GlzSDX6&FZJ?P^q zYf|;SmQwD$2Hb1q>k8FStI)Sk$F{OFDhp=JH)R&?L7mV%ysy=k#sU%)(u0? zJg8jDa$wlY-<1eg1 zE!|~9HJFD|mHm*F3lO}BY zn%T2!={_AASWJJsRvDH%AUkeol>Z1>UrQHRUn?-PXp@YIM}J}oZtSOM^jrFJ>K&Hg z?L8=ixNQ21a(1WshjsSzZ>XQ}jxAF>frQ$A+L*b9Itcs=g_hs~@)erch|hm>++7x{ z1k2-<&7zkpV=gmZ2{zGhExTeukz?JKK>N54wF!Ny_ibUiWcIP?r>+vdO8Q*0*NK>S zP4J4$vE54Bu+BMF!FbzBUU}%qN_m%2zdYub?w?8 z*e6G6r;L4tu`hNErThz>SdM=SncGF|p)w3SFQAXa_d^)prVrC)UaN+0^B;Q}@~NfX z#@ybW${4;6oW12geQxiN|L>XG(sqr8;X9`@ziZA2+(v$(F8OWwq4|NYb=b0Y=J)6s zfosX{sV@1g`=R-P_jMmf)}1N?PQ!7Jd5y2#Uis7y*Bs|*<&f_wF!?=%RHW_x=Nbk{rKz+@0}ydxqV89eK(5nr+E4uTR!Y#e+W*{76{x+u>uk%rfB1fmeX<3OB=ucM;#VsB64h@9V4Q zbFl$e4csT)z)dvbJ;ZXM6h5^?I+&{X38)?KB5&x%e#9Qlq=j-_lGvJzm z+u03VvJtN^KVSVud{q6n;WrOjWm|D(U=DLB6(3tlw5Q(0u`5ccH|>6l@O>h_PDGZe z8oo~C+Y;gHMEsnr!_SH3Bc-=z(42Ezo0OA9tfd=2<1A>UHJE^`Tx@ZQ&|N&rf8;#t z?)=jyb^_~q&+q|n*1zuKj{Y51bx&8HY(F#XxcxbkL+02t{VI#R#DP6a31xHdo5AO0 zFZ96ctwv7YJX-fXb^u=oZwIWw6TiWB2Y&?~_)Kgvce_=wTfxTxyiDY|5cSYx_KCo3 zLD#d!qJ%=Ut0u-1s-zx{>Awo|vk_-e+TH;k2%e@;lZ&V7a`Agu$7=;I zu|Ww`f|t#Lm*Jie^*#+R&2nxRfrGog1qbz_6CFVpgobv-!FX`si@?E%KCFA#BuDn; zD%L^KMK}A>1wEO>eN^kf=Pc5)@6r5#q_O5SGGAm}+ibH0?;yO9x|?D12opahA5;G( zM~-Hvw8LT1{DC_On_}c;`Y_2LAI*;faSvlZD|WXr=xAp-kS`g&OA_&2VxwGv72oU` zK){-)?c0giYLr zy--znEFjBk@ZT{dv=AC})duX=;cdQP?)f9e3VXgW8jrykTJF{T+{n6;_MsXohvp?S zHf6q!1m~jb;Tfl%l6ptN^aZAx_KMuFH{Yhdy-DK)Cp*5y=gU;+q#K_v`MmQDpD#^@ z&zGMaw+4TIAM+OaCT%UJjlYxs@A3KaXZrLG^r@x(ho7SU>D{lHJ8ZI!g8obkMx_kBEKKPm0~E#L5oV;X7iM!u!J`@6PxkhIsT z`I8Vo6BCyzqgr3k{Ym_HwAn(Nr*>)cPR=!%3R(_dZ8KlasDJ{^#k4~@M~Z7 zTvbx(g?(nu<8F%S+)Yusc!Y89+Kt-1Ypd~DJdd*PFPYa+lHo|sUtH&?f_9V=R)r1B zNTu4lMDkScPf9talr?p1?Q6r2$!ylqJp9J`u_3IKIi2k(%SDb*p!Q)Q+sp57qW(I)s zuDBFknXQ%qrOlRE3zY$$g@@uRll+F?WtsOx+I)8vfakhlQqcuUyIw zWNC&Sr}GSG-(aP0B|fdw>`h6v{dE39Yz$Zb+!B<3H+e?ZueP5W(&~67x7R@zg-^|;Vr0h_sHO+B2Ne%h$n-XfF{gO^AKNX$@J7b~6Li_#5$)K^D-1wnS zp}$>!^DIQhR(OOpQQ`znY^ILmciC5RS3}B3&Q|crKw0p0nGNt%3HyOH?YCt-N*Y1u() z-Yp~LZe-4+vx8R$Pde)nbGX0MpL&-KM}8@Fe~|Jc^L3JMKJ!lV6=KXyX;1o>9T|3> zlnbHhUvL(bvs|<5F6S)h>l-<@;cfQi3I3m=tgZOJaiBjge2!0e)}LC+TKnRcgfYa} zm?5}M+lKxZ_OX}2gLI&;+0kEVkL1}zFA#q4Q}Nr?g6{T2d`>meE{&JvJ(ak0@z-^( z=#1(9y7CFj$6wcB_&mAaLZz*PY3HG{Cu{z?9QfgqIu%nVH~zYcDZgtz*!6e%;VOX^ z^6}SI0$mV&@oChf6n|Yl{B@P!ugjEu2tJ#jt^SR= zd{P@Pj0*>2@lqLc5j+a}!7-8JLi*LmJ%`2c=h!qleKAVt6ZH1a>ZzZD2tT@!_6pyy z_RSTV&n`dyv7Sc0{{(Mso;?nK#(1#d)5}M_*FtwA%dDZyu61L7TBwlco@jjdDS2i0 z)9%~gJ>RD69#XcbC#>Rb zlG*%gx_%M5eWJTuEIxdo^CI(4Ywj`5&)pif=8iF6%l%&mmU~T_Q}vII!Vd{+q<+G~ zWyWgftYf}y&AGP+=dFx~7g*=g8Fwa)()c^*itu+rGiu#&E0Shd+)8>-3w(n8@uKx30J5Q*9^pK@Nz|P+bmaKN|EZ*x&hg zp;xf&{f9fJQ&b~cd&J*Cv#EUkTX`_l9Ewa9T?xxY!MaBs9vd{(3 zG+V|6Jd@DFf8}$|O4wCKm_nV(;jymZAN`{-jjZo8jkr{y*{rd7GENPjU?xAo9%hsH zUvyJPJNp>fzjUR)OR?9r8TY10eQlDD(U-^w8rEjh&qloD>(8I8`Ic?w?#lCxI#g3< z5C7+wb)vqqpHR3v(H#*cem7+Abe8d!_|%9zipXQI@h^C|99S1H10rC`fk}vfxg8h} zFufySs)2Dvz&s305il_kFpa=iB4D-vBRD>_Uh_pZrie5B6MRdbZ0X1RB<@T88yRcm z#C^th9%&>#QGHm8|HMdJP5faaZK9&b{mV$(NZbc}`@5vwXT&!X{|~-vBI1iE`!9qw zqpw{f{`QdtqPtz#+JkkvY{EBukVWp_-tCKi3VgZj0g#PvN{u>8c$ox&aTT*xnc*#G z1x6A65&CnTVH3^{i0oaVE;7yo*Fo>jV9YXqI$^5M4!jAB?Du316FH#&4&>aFWxK>3 zV4t%((H_vi>lNf8Snwna+Q&JJeBl68*QC%!x+wmHBC> z-jQIK3UiUJ^qOGnXx)X^mpanfSCbn@UB}ppJXqf z$>(?LcwJ|WDM>%O+ik}!O=C81mWg4{lPG@M817qt9W)bnY5(6{|a zz0`#d`ia#_RyB4Vq9-r9G79&6@5$1AZizgo*{alY7i;~CoF9qZ{*$zSKXB;e1n_sp zc`&p|x@U<2x-!<>>_z5`a4hN!pE^QNiBJF-*>SUqJ-_gb= zFGscxZ_&TV@1<|w*-u;K{>#~~p_5WFCX@Rw15a4`A5O*A@^N6x*_*F2aPuy0{em`0 z`=zau79)p(XP8O;;wMeQXMrnlM7cW5Plk#<68b}w#r)r-3|2$7>Xn*obR_(R*cJ5? zI!igXQjYY8;N#-Xd=e-tv2F_abWJ}()L11@)mw57(KG{j0l3$bd z2ImoSaubhoMsR8ocYZT}P9HldZRU7LQ#@HIThPa0znaEMwlXD(+InS`hB6p6|o<0y_B#So-Df&*7!MLGYPw#`hBj$xg_jL z!e&vw&-AeJ&j`Dku%A*tBdqy2VY3OFL;a5Ha2^SpOV|z6@0cD|eT=Z12rH(3MwlXD zrG(u~{XW&C)HrHQq=0*J(n0o#gorzQ|nc2hb;2qg<2Dy(H!Ap>;ine*)_Q<_hQneC3+d z#&l?CLfs7JwFkNl9axhvn7a(Qt4)dS6SoX_p&L(#E-rJjKeR^tTMBKs3)*l6dA$2x zdf+O`5E{%qN`ZE0h0r+{Yw!3ao`Jouc@!+6i}InbJy zO42gZdUJm}IMV9n`*Fo5gp3kaF^6N z{aZ!{H0oXnHSCYxqp4vva4az^^1fXg)TTQ|PGM7Hhf!D~crH?gUL&{lB z8#}gJ_MEsW2ACee+DK!kza8|qCGe%O#t7b_nY%mB5i62)npvUNH&-a!9ka%pM7e?+ zZ7lGgsI^aDFGZjAQpSSpJq4H7nr$}5#FrgP&_jJ{Dz5$p%~D-Lv+}9eRO**UJujv$ zQ)q`pYsVu)J>sixlalH=)of8-v0n`y`YKr+{gkY>T-I_PDO2#3bRp|`Zza?|TE>Rb zu8o-?BLdC9$XHm$SioOFs3nQ?z$w-x&kLNyEi&VVm~r=Z#{JBU8*0S$2&cQ*j62Ir zx41Lijb>cB9+$`1RT#5onb(@}=a~71%e>NzJKu@_KjJT?BoWqQ})`)v39A`D-t~27+hT~4cZ)4YPb4%qCR(IGPy zdk3LS($1g1C3LD^-8^t7^YZF(I=$*{?tAbr@F+aB;O1Rpo%$2+u6K5rHkgUjvmbQ1 zqU3h*PX*r_58s(q&zcqq`yQ}!2p6~m4qoN1v z?EvW6K7VdC0RSa?q{YWwK++0)f8bk(z!zB)8tQ;aL+()XjN7fj#fRZ~ z3fxfOa^oZ5(sa1wFq~E3&H`?G-!RAE2F#Kxv8FQ6D%V_+{mhwKgM{U{y-nslQQUZsD*=y4(ltAkSM{Qaa;d2Rp zh<7RPwY(Q#Cz|fbYPlFa3u#+L-v+bof29sB=SW>IZ>Y`f+d!T=jJ2;;CxL6WCTaVm zw*>Zl19p2{L(4=Rwq+l8et=UQHd%vxRba>Jur1>axU&apIMCq+X>bh!cYy&n&V=h9 zhPzVsBZ+m-3fx5o9OqHej+Unr!f?}cxF-cJ$ACN6go_KqP1NBY7q}@pT56+FxPpqLISf_2_;9uEYM*t2Bs!=W<%|EZ-bl()mjUY-P_Ys1}nFHb)zTi z3+A7U^Axpzsmprx!gA|X3tL|Bgjz54gt#AkVGDPnx6U-aEBLm|-)tu+|NQ`g_=w#(S3buGv1Lp>>}QTRZG}J#s4&*yf8pue9cRLaxEqg4T)hjxJ~&FYg`&t>ffvFKFdF z)HT>yAZMSh!95FFIq!50?p@G&w!GsCT8GIyzMz%6>0N^p3tE%q-M^rfGdI`Zfd#GG z<(*v6x>w$V3z~xS38vmbAx1M%LSPfxv&L-b!d^fQM7;?rK?+)wxll!Tk&nQpudaqd@UB-D@ z*&-L%NV-Tl;ymuaZr0>*N?pPLPw0uEp0b_DE@Y1)>+?ut6}}|aD|9SM;bBB>^aTDA zHp)2~ZMCxoI|wUf?JC80Eu@p&ZL|{v`NZW8rOKYjWPCEd@lgc1Hg@x zkqRy?d>^DP_rkLYA0&Gm%^*ev)aB#TNgxT*T3%KBi7(S_BxS#Qo<`bpY*On zc%=b{Wj`$WAE#W4G4}Ma^-a5I+NF)FjtUDrO%&rTnsFDy`0K$qw87J`ugtZ`8Pb|m z-@rgTZ7iaVg2RKW^)`xp&_`L)ZWrG-@GUlyf@5jptLO~LK6o;1tbzX!Kjxpmt=4{p zPrK=isTTB7QeLr^Wn*tp6GQyR7EOn&#=-X~OW9K7ddcL|vBX;2!8-FIe9#5_k2c!& z7;o{_+sqsizpQfZs^vr2I>NrB9!=+XGJTxM)bxT^NyKi2dYJ!ywwb@k2SrC< z5cx_z=m}(Kbs;~I-$@=)&Njxnq?5Wazr8Q^g?HfHLLDo4`{bKC3w_Y)Lz-sneInZ; z?U4Gpd5`A#!pVI{mVVPj&ntoZs6=jZ7@J?4#98g>?al|hU%`iGGCl_UJv|`4h`zEU zRv{Zc)(HL{Qk1dq{oeO@#}n5|J7w=7x&|jyW!#|@?mI>o>JaUkO}IPyiKOuo4zA7r zL(ozUhIX1^$VJEeZD-nDHueUCuy<>;48k96d6q7Z8Bn*DaqV|1ftUW>V_YM=cS}q- zE+}#FO5pD&j5tR)?tY20_N!8`nQQ444qqwZ!_dJ()&b3KZ^iHB#0>O|ktOaxCIf#P z_bPFM7rB#tFLm=U_Wn2;xw|&@WWEfjdwe~*Tpdq%Q@DRb{7==t1TDc&;c&)iGk&Pt z@&@if%8M^`-St_#r(O06lJ?Vo>2WR%MriX?=0qNI<6`E>6z0lgX!9g!vo6yx$5|Tt z3>g1aMrEwYc#(0ofcWmt8agV@ z+aqTUGFQ{O*mcU;gY0j9M;kTz#huVXBX;p$ZB@2>G1nFNa&Di%SMb97`98q+LB55q zT)EAnr+JOFhp=s=8N+xCzBhvVGnFk`e#%HK?j_>Vh_fY*l=J6fT>0?$m;01jXa&5k z>@5@OV!^#}zH-{Sq@Ax+oY(F7igL&r>`L$LvCF*Y(azKECW3C8@=u}1r{iI88~d-U zCOcKzHtS#%etF zXIferKa@8L*haCX#nxK%Z8sCws|wUzhX78@6z>u*c5YU_~eS0Zoq~t<=|Mi^lI0 zd`&(2Zn8EnJzrm^lfcVW+j|A_D)cjN;o~mAjn>@>uMy7cP?{L#-*9>ME+Aeo@4l;E7aQEHZst9LecJP5*|V7bPaV9IxX{J z8UJ_kFL|9u+W*DdyT?~mo%#QJ=YZ~W!X<%(OF)tXV$Vs?ih>X?O#)s*qF4fLr}h#k zGyNvSOHr#LDhb$5La^m%)Cw~NbnGOtbg+d=+UXCXZ6`?E5v}w#Q$cMTh_>PdNJpCA z`?L1m$44d-*^}2d#v`(2f2=N_f9S}XLsCtZ`+NZr2O*9mn>XOPV?pWexEur zuC*q+-&*(n`;EJ%xbJp-`TIA1YGujx>r5LNqbsJkbyR#=b!3d@oRVu-Q}-VxU%c=- z>iWaI-@EZn>i)6U){jkF8P^{4zB|ZwtEfxoo7^(R{pOZ0fA7YNx#t{{Yd2HZwezkf8qI~3+IiTzy0#;lI^;m$8$Z4fm(i}< zR#{S8Woqlb)NNJLmh6l7wXMY8u&oCNwl$S`@W(Yx^TxS8%QtMharuP#3zts_E&TiJ z`P)B#R>^jkXZ$O$6whG(H%#S!IlsJx^O>g=z;Rx2+KuzLF6Y|7@sZ;0&yAe7{qM7j z4bEsT{I<^4e1Svj-mkX)d0<jQ&f`@pt7Fc|*mZ`jtpfo*+YF#PGjwmvWz9{3x! z_2R&`J}?;mYG7L*7!3dWZ`ju1fo*+YF#O%XwmvWz9{C%#_4>fJJ}?*_8`#zd2E%v$ zhHXVFTaxv|7JYD{Dsw`*f(t6=b~SmW9;s~ z!}c`y#-~nF_2E#{mNe^FG}N?7?aF3-k!SL`PCSGDaJIDST*6+Q zrbjd6M}BVktK=Nuz5HeJBVVTaxc?(@{;Ky^_@iq>?z)`m?{gO<{=hrd6f4GE|4_w5 z))}={RIHiuV)>_LSM-G7uIsP&b@*C1qX&F z=+ph#w$)vKhWmbm-gDjiUhh~7*0;m;j_ZE!$a}AMe|d~|T=#oNE_}T^p?6&Odq;kJ zy?aCNxbF9kocVfpMDMun_l`XJdiS#4aoz9TRQKI)^p5L(@6K`G{ao+3?)NU=efLwn zu@2~ z6t&_LKjdoC@^|-9498^kpgdYiQaTlXwW)+j^>Jr^^?{B<$PkD$e}xo`?0#mNC}K z*K*uAcg{3_-nrtzidE294*Q3{NZp2}SsNM$%yd3m&s$cD8>7`n+lJno#w0FhjH2;TaaDKEU$ElvQxNN4I6X3OH>T~}1!j|h+JX5*5lJdk=F3Hqf(ytNx zMzR0YeYl8c%9!yn7uFOGUn~WX@fR9>F2-k&7Wwqhc^F2n}0HGj;778nl{_P(Qm2E zcHokxHouzlt>?E~muruxsl^wpu@v(!7;4-zD7(S*VMNVqd>iLJPW?sHAE*A@>~PIq z_K*mMD!)MQpS&Wzg3nzWY4i_2MV-5zO)PEj&Mpywtu6#fz3f!#ew%^`Ird`FYWG z%_1wY#*Q4bpyjLW^v3%NfwOWpbAR7u?sXUIU=5d9ZST-VFP&tKP5cD>Mb7Ljrky-u zb6+a(;(VZ`iH8)sYiMdmbjC*#+1|b6&L+Myv~|bW#HZetOwVd9nh|O;{m-{n{)BVR zl+VL~2OXjR1=C%eEPHW%P62QiTy?$0`!BeH_ryAs4d?wQ1J^eMuImEV4+gGV0@ptX zTptKr|1NOd9k?D@(${V@a6LP4y&!P?nZWhR!1b2`*N+6Qw+F7<1J^GGt~sl?ckHJE z*O~MBo=*>47Y44c30yA=Tz@fe-4M9`=fL%oeb;gD3j8|O&i<*RFZ9e7?)f-(%cCyN z<-O3OJS_(2;^177hjS}9qrAKXm_lp9xpHtWoqgezC05&U@GUt8K)R#WA|37R4ZCsu z&780FRyr|r=yN)w8Qj_-eeNCUWBg8#$AK7y9Y&vf!HrFT*Y9xkIo88pHu~I-s23w4 zeeMHH_KSyGJGIX7 z<#jF%K~EJ0(393vC1(^jM$Fib6Q3P#V#dhbW7dqF$;ETS?QWi#yon3$tOADaUXAgs zJE>RuBbrytolCyDxsJ-Q7lFL6OC(ovrxhRD27eX(NiWWLdthwdIOtOG4WFPdiZ$zt z%Nw{x>c^TT&za`S$X4RZR&!pta&U=Kx2QnI%|rt+ujK#5caP>HUjuoXDK1Kg-Z#_h4K2@r^BB zd}BT1OEnhL_azq^y}$FfX06-wJs6)b=6KI|^l4%t2f`v5&Wa<@c#~;E>vUR^+esUO zxAp#5Z8C4_;zpL+ogQ#_xT^`b8aJs*SFYr{5E^=-oai~9OOm7@*w++ zI&`)|$(e~x#)({*-ONEe&t2vI*LEJKBtVn6ot8NU!Sv{ zye!Jyw2z!k`^Y7=&*0Jc)_lgh6&p}(t|4wvYsvok6TdX)V92f;Z}yZwyVJGnv`(xz z3)y;WzilhlC{s4#Eqw3Bk&bUY3;Y%A20J@Ka2o90kZ~>W>f@o|949%f^?!ib31H^i z`2BE{Jv4`~htZ37EU$td=DRUi!kN{~gO8WZ$~WCkTnF#B1LLJ>)-LI?Ej*9&T>MFK zgZbITb1RS8E4RYuT9GBW=m|H#x0h1(OOy%L!=9pwD%vPy4i#q;d)S||v8|o|jlJaM z$l1qy#j%k@10AfRE4HPU7@RdB^cC=n4gFc;*Saw;Y;yJtHrgZVDsH5HmD@lc z@Q-Az;k=Li#C-nGr|kHjS^J*MxgVcqzVS&scM!h^$8UmLlUk!ScLA4)%-#6bk9+gU zJTb?b&z#m#%;#^`B1Zz{uI^WEk|{Tga_qa!d>#ZmI>R9cal_S~0n*XfM^kVX(WTnS}Z-jA6uN0msUVJ^UX}rf-ye4d~lx%9m z4^a@^pR)nq#E8&{#`~&Q%zeU6&u^^GpZgZ_zL(a4^JBn&uZiED01mt7D_nf6=iyP* zZ_0UbVUMIJ_nkL-9#%gTSEO&Je8r8C()}{#2|dB=WwJOoNb&l}`R9W1`cd(Wb;|uP zP|o?WK)*oV3?7$h_;BAoG0xhU&3?pP@Cj#`%X6D`W(&B2zOvC;ItyJTFY%LG&^tVz zk?!9Dcd)y5e#ecG*l2xWR^ltiEOWlVEj&|PWpdx`(Iy6BqjkrH#JdfQue|3NG~l&y z9sJy)p0Vj(KR!J>aU1o23fP%`{nxC-$GJ|`PJ6o7&Y=rU+(xRl3V+oz-f!zT<9Rzp z%<1=$)o)i?EqU428y2~(;R73&zdGBCrCVEZCvb*e&1#n4$)0TF<=26WWZfa^bbVQ4 zTmOk?Rp>>;sH}ACEt?Kvmv<;0{RiZZfLH2y)frnh9pRe`iK}w!Q;cF(>w3QR^%37U zR?jnHwHx)_!EyDQ*bA2EOlSWWV>mv|YPpd9diyjsF3-5g$VcCQcMW|Oub2ib9Uqn( zW+${)#2=?(U5@=y@s9)NPn&H&U(IB$=S6$JH&fk zp9g$|JE~7-v*~%9XYghB8GcwjJDX?7_gVM-#WKFwZI9UpzCb*>jv*2hMqUL*<7lszsLXXvir7 zcP?zN&oO<qq-&A3tK;x_j)TD8Dq~$L80%`tq=> zVn8cB-Q|PYzkCM2`S+$Z)!_e<{ZxQIrV1aG^tS!LM)p=j`W-cF7N!Tw{6Mb9o-L;NUkIYdseRP!qTO)7nDHFc-txAUj= z#=-ZefypNi0cSE+B<$MSiVb}Ki%-*s#a4^qF}Gf3@YB#NzJ{f|@10k2adv=@ho+4& z@pHG+=MKJAtlN9x<^`4|eR_;xisK(s3vfK66$oPLU* zjpy7`{b$1`FNBZYvT05N{O#5_Ug2BQ4`4B!x=#GYYB@A5jr<|*9&2OwGEY-@C;6>+ z&)ox!6MGj0hu{+f>KSYLGzNZfC zez|})Z~9@g`1&*Ssgp70M(sA;>wM$mpGc#B^lkO9mQx{M$op`#u1$H4L?=PL z+&`Px*Rk`bldll|T~qSm#O!nPH$(rKVd~!c4J$G8H?Dk=-9M82pz_s;{~Tg0!k5|F zSp@`wlinKRTE9tS4#CvB$(O1$)U+#gBgNUX|CLyFOpP z`ugY$-;6#6z%dYN^2a`^oR9~jKeR%?ZtNNncH;17| zzfU;AHtzcIjKo8<<@Rq}>oWR>4``O;r=CUd7r1>2@`L0>x@<~r+fzdiQk@lCDwjmq!w@{7rj%}?RSdM|>o|TZUq4db{N(;$%rliMMPB%N(yPEh`j4;g z==n=L6P}u9o}Tn;p7~>xEeqb_&-mF?8=bi@_?X<>NPaG)HH;~l2f&x!5MOG3x~#CCx!U@4B=IUb9X^;H^1=A)kR9~R zKZ|4^`8U^-`&K@cXUT^RjE@lmac3UCVt$9fdBI>Sz7>?FjZOH##{KL|6}M5omUDGq zyeHK30Ou3`2eJ1?raoV2X!n)p-MNl3zN`~g)1Idzg~>d{z~uVEL=>2$djB2zZ{&t^ zv8nU-ze29VL(O-wixc*r*;Dvp&%>#{HQ#xAtbWONhtLNEj}zLb{69TAHKrGcH&}W` zaa_9O4%YF-n;m=|PTjeQG~3ZSAAj`6S5E62)kXJr@i z!N9QAE&DKK#Un+VH{R&#qm}27`y|DjiT|zg$}}tfg8OgqpQ@}cr-L$Da0fUPINvrCT#Mi)gUk>`Rd@vtm&-}cg&b!0u zT??6H_B_hw^>rZ4?>_3T@@(Nlz$OD&bdrm@D$QC2zje>az7KwjZYCH#NqK$uZ-MWY z!FQ_ISKN%Rpl4b};TN&Bn^{*-TYHhSS4e}o)b ztU=EzQhDlX!M2VMFD^WYJS${9Vga_sOA*V&7`!CejXjgw=HlUa`m5`0&}y^xkaJza zHRo)uEEi6Oto$(kwjz6cR|9w(uBn=R@6;2>`WFOos zoyf>q_pIL#&pu|JWh9I)!~JLcd&)`w{G@k(Cvb}8_Q4_spL_@3oyN}C%-9#4?3vwx z4JF#@V*Kil@@5v<)Gr4AEtkri|eS{ld(IJeN=i6F7(r%B&+>% zf6t?T!MqQ`&HnQ}Iq~z!?CrgO7;T}iF{Tgk4eMnaoqcn(o_1`k{Q$YEI0ut{;O}c> z|NQ~A`$_rVc^=Hs(DRIiyhop2hpzuD|D+BtXTjh(8N|nwJN9#DyM7yEH*o(M?zP8H{gQ60eNPV^#cvMY89MWF+ZDYg z8KpIqf&M+|5Sz~qp(1^~BA@yMGe>)zPhFC*?7f#+R_$fhlY1|ffa9jFu7khYB$Iq#wKd|c#t;#Oxwldt+}zW)}l}H-a5+~`&FJ7hpfVb zX%ib?Vr?}ylwA{nrpWR5JiNABd?!o}#|ZqblpG+=NNY?we&#)C={385{I#6&>Q!@V zc(#V~WJ=&WMd>!aIctgNy}+K>xW>-zQhY(tXyRGOODdahu01hb_oduBnG^G!5^ItA zR!EA^g8`h74AUA8G;VAo$AX8V=UY~N z#r@Mfza#u)9&;?b{eND+Ug4SUwRZCn-eFg4Y{C~;kI&yib_>Vm@na3+<}K8t=eCjQ z@GtV6eUdXGgj1coy9(XqJFGoR2H+!|rTNFVw^6>m6FvWEa@goyDgHst`*)ak(O9)? zjjUmd;h&kg z(d3RTUb&wChEdj-2>9~^eXl{6r~#jg9dEx7JK7SHl2v4T09p3Mpy8Hzv8~eJnzT$|z z_2#&3mrG~)Dc{2{27GJ7yrPHBPP}}fYpX$rTI(?KGr65A)|HQpu5AnUOK=e_^voYd zjNC|U)=~Hg@B^>Tz)vs?pHAOe+qezIt9tg6yK1iT72>}RF{g8_ZYydf9{Dx)Au+q6 z8}ZB9w4#HZq2lhUi>>b4zGAI9w7;114L?fV*V4v9Y(V_1^Ibn{l-zc|EkiC_b{970 z62a0rFm*q?vb%B^JP25dXDztvt`{P_E5qkr!2k6nR$>Nat_D}HCl<6UT->I!W1w^5 zLL8IRPV=TcnaUMl*IC`Vr=R2y;8{blxhEgWM(g~^W{zXX&+sJ=SA_qv$LNZ$0C)8# z%sj_w$DbqHw$qgx!_=SrzQj6UF^_r|9e#3-BOKw|*rI5o`lc}mC(_`5T_HO^o|)bl z=Xts5cY0U6u5nXWD8IG9PH#LCinOk2w~mE?OEq;CfX~+-x##``nIjs@wpoeSLnB%% z?J2t}?Oc9VTVpqi?U}C6VvRkbOF9y3!fpA~ulm&XI{3Tbt3ER3%rJe59f&ph z&(!B4VE=?*uW{3Nm3bCem6c2;{wv(&%v`@opOiD;+=Bgx^wQr$FFZH?*zB7or~>S+!n6O-K}^2x6>Fy3|RYpj!?Fg za_Osb#&pn6hkma4q_uJ>K7=yfmB)(7R_iZs}qh8lUUb(4C~+}UC@I+{({qt ze`JdBidSj8b?BXDKQQCfdW}CujY0U?LAiYT6#;jV!)^E?+B6?W;d$jFD^JpPcL6b+ z1w8lXt&}nA`&8czHvU@1G}QS2i}40^yO+UhS66{%fbW^`lqz@!a6eELvATnLn&2cF z?ZcC)De;8drpm|J9e4W18N`#yUOY*wX&20)PxH;lVJCy%xG3UW8m-cb^2joT4vy4*F-h9z*PO-2i)Qwf3tZ%B|x{qca~_Iu~_J&s$1giWG3r*iwD#(jRtxbK~56J=KT*5Oh|N3cq|hs|(Os5Z^^- z(EyzV-!1j%OylFXNV@!?54m_e2+f&3q@X$Td@!0jjEvOW1?lUF_ds8{XW1)>#5q24D#txvPk};e0WzG`dvCanKK}}N@mt?5)DP* zml0%8x#5@THIhN-mNilQViEXdiO1)q&z2yAqz6#e$eQ?~sf~IL&+D2>eMOejb$LeV zpM?W+lIpIs(v6N-W~bFe(TT&Vc_^{`0MrjX@I&L>Jgd`j$C- zUbs}in63xT8{mK2;6svyTj0xwIG?0O@8HMRz<+BNo!eLg|E;t~APXBe{ii2K3;4E% zZ;k%wjj4cdt~T;>hLNAZswS@+V;XH89 z;C-Dv;Jmi_G;CRZl4s)Ksm{NlOdDkk90n`XKpj>5q*oBwbD`iv8s zGoE{L4tA$KE}#B{)@}4_`!cI(>AO89t~@t1z6)Q{lJRF+JC(n>_HzD98skAH>PElpS_Z7e6QlgTb+9jXBvn0{$5hWXPpO^< z^=IkMS;GCRUEg_qTII?5H1;a4t=wH7f%h`5tP(46YedgJYtH^G0j7Gdb3nx_>eD{E zdu>|fZa4p;ga6lJ{dEfKWUPU$<$n-;eC=B6z`A+XfwLzNcVTStwAKYf=*@K1e{<`<+55lN{WoLL z`to3Tdyf-${5EmN{+V2gn=S>XPvRTVeBl#b(kp+#(Pn6@SN7t2d*xQ>2ORE9FKz?Q zd}k%&=K_5E6*M3 zIYgYVd@w#ey$ZeE0zF{|%o@rU8T@YP6;{*xAuA65A7uqj@_uqCC@T&F>r}Ghe7;GR z6-(*I8rFD#-;y=RDPXbW8O~V^%8wH2yPxwX6x%(N49Po<3{fsx*<1e`8FHAqeL72C zv-ahOI2v@7t;8A#m=C{9gE+mDtJ8 z5oRv0nZy|MJ+@%ZYFQ<(I)V#o6+X_3^etoEMf0%x&7}&%gWk z&E>8ApY5WKgQktKt>2*^xfZ$Es3+GN*OkW@oMBet7S=+D(cQ1JJXjam@ArE%<%|E) zGwXTgLohwGW?=t$J|@+;T$$vK>06gu1L6lxHy7>6bMYU8&&9H&xi~z;Tzp=00c-`& zLn-Drc|QK0`M8z&(DPd8zY4s;-#1G>^%DA6rE^7k2b3yxiNIO)zjOTOc=PLoOMV?IY?M~4ubkiqOkOd2G zK_3AAo!E1o>6|HnoVf+Rw$_NMkp~ufk`G_seiO{e0lky8*a7d7Y>el8yS?@_cKgqP zcRw55<4fC+YZkZ_w1s_MvrKRc*r&3ia~RK7)-AR^Q_1>EpZ)CON#FekH6JC&hoR=f z=Uvv_AAR6L_6sG$)}JfM?&P_8<>o%y+kF3*o}Dq~LUwp^J&gDH3&|Pa4Dx=kdD@HI zC<8~zu~Aa_xPPX3O7bVXU%33->gfC-(Un&I+Rkz$*_U$J)_*4#5KtPOzGE zj_hHswdTDgjrCA$F9)B#W9MAZ5wY6TC(dN;Ms^*00(eJ0Q&Lz)oQ=xg%X#Px8o1rYV0wJ8%fv27dhO`Og#oO8j^*E-i>F&FiL|^mS3;w||a6 z6yC4-xH)M)E@3{9<-PM!#e4|AgK?_KeG^UiYx4eDe1v|9Ux%4H?Aux6#sK^2B`wLY z7v1=_;rl_u?cmyAa>B@fvs@daD4TUhXh(kIc27@$&bxhkRCH!#_T3||yJh2B;I3ar zxaD6DM*GF5@d5rC+7HhyZrcZpM26F?5pxaEBZ; zV@A@?Z_&q}(Z@6RW;FeJgZ1pud{@JGZepxej9q?0tsCD&Uo*VE9t(Xnrw1MQ*yD-o zHb$Szc_Vaweg=Jwj(RTV{2yja%E&+0^fiONX3*D6^>vin*G%;_ZM5m@?|}6ip;4`` z@P7!H3HMlcU-=B@tw=T%*iL%Q-S*<^>BrTqL2qCVw$QF)H|A8^4LQ6oUxPl)zThPv zW(?PJzlHDDp_?R+F~WNT`-<}$1slP-i+UXUt2sCET@Ur_16Nnl=7;aG7r&vgGiS@G z`whl!Gxnm3b8kN8%~R$#64%v5+j9Omj z^n1qje(;ZFLyW`l59Zs%YrsdulMSEP=B`7%*RgCp%~*t|@5fk--8aab6h&=!4fH+2 zf9Yv-7{z3yT0hqs!xPYbjajpebVX)14$w&ygQB$yaHn_uJmTpj4&O&uyO2(zHG>u4 z)79XUujgpZ0Nt#2&0r*S<$PC@ZH=i3TZ`5lfTp4OZ_=*~+tU*F zSyskZ*aNveJgRZ4oqMp@gGqn=%8jq_+m)|h@ioc%l|L5x-#Zr3g!C(o#qq`>{VGPE z6br+8Pp>_vvFKevinR=fwG7$y$#{4;2@i#niY*S(mD*-)uFb)(?Ko~+k)B~UwN=9h z6x(9@m-Ie_4 zi|vW2bvDsNR3C&G~TL+)om?JwGZrj#80O_3ohtCs@!TF zYbMTiH+reFxVUYiJ+`dsFIT*fYme<(OP`N~Vy)|md+(ypGioL+-Vpv|`ZeIw276@s zBlg6y8e(SGAiEWhp2Hbf<2eJd6B#|po*4P~Z&shYjhrYB=OOB>$Ie@FFE}){^v;p! z&UX=o`swm$>9#hr#?syw;O+;>kq4Zj#xkTWOkf`PCeYJ z2rn)vWL>oaJ#xjek=BxqbF9K@>a4nv7?Xdnj>S34Oke;j0G1V$`I5V^ZopaoUR`(0c)vrcbZ7*>q_lsss{u$=LmT~P_apByH>HA^MrC0mk z#4jP3Iz_c@-`D&QvmOU-lkM<&jiqXke)(gmVk{lR!un%*hOrFxO)YV~rK2Y|Rx_SB zTyM9x(3+FNW7+V8y*~i$z(BeLg4cr`RZ14Q1J2v3~W5{$a(c1sG zlyU2RUJCWOj&{CO@=Hk_-t zI>J7Pw8RPeE1uR#o>$p);=`REvbtYB(}Ew{t=rho{Y&O~>p1spNyTPoY46N8W+d9q zw00D(3nlL4**KmZynjYw6921jpOMhsy-v=!3rC3$r7lx%h&t!H`w!C26rGN1ZT%U! zyRc7gXAV2(xqMGKbTltNBA3mffL+&#T{j`!%6y7=Zmlb+Z%@)UtzGQRBz~OSsdtHg z+LQOQ@8{Szkuj>Lg#P^oeABx})5hS5was#+lDJk1|f=V4Gx54!rzD<~#R6)|kgw zOKzW9(sG3HseE`5`lW4El#?5>I=mn~{-BjP&5o3XC!#lyW3CK+pv(?M@_x1ABzoJf zUK|Cc_&>XA@wc)@)wae88=fjzCclGtYIrF+IBmA0`-F)z6c2S48U9s){9jQ=ZprZ3 zRw22E#wX2BTjzYM@b+^`T8`4s74$QoewNeE>*?qEa9Mhp9ZR2YroQ;_jo+Ss8RD zyPy(%>@c!e{*zOy-959%KT!&uUIo2gNjy7yhM#fs!*+t7>_^%W{ieGI?w!l5rr-Wl z`-uC;bNRlK!Ffqm>!Fc@^O9z0qZ2%S)X<>Izy8D+eZE3_CZ;`AEQ)xxcu5*OTI<@C zS+izF8K1_Vg)G^3MlJhXk>UP5vh+&sZ->u!^2-G$8l{_jwxqDd)2DXPSG^bSJ7VA% zCbn^U;s}1Q&U5UR<{Kw3o=|6HjzfNSrnx%6)6AWCi*$h9^raTu?4-_m*0?k$M*fdr ze|L)Vtm*DlUmSZ}W9KNVyR*WT{ldWx_>Gfi6?T&Q*s)$n_OG*WQA3asgir4qP8*PXY1QD<)cPipd7g51{WIAh*eE!A1Ju zz7ei&Yw!jhs#NS1yZTu3z^J}$(rpS*ZHFnWjnjYD_s=r`_c z1E;4vICTK0D%NEsBL$~#0;g2vi^==cVc?YA*a4h6QoyOhgVSE%G!{6eig8gp8bcjp zaKy*Ry`uAC#Y5vfA56!`2IyWe#CxMxhrRF5W`6*1bR4TY_9f|`mWg?it&uE`eH<43 zI8k_fA-b#lC9+qL&Dqp55nK$P3$Mc07Qs)nAi6K-NGP5kC#H>k+!f{FeL2-F;Yktv zN3)}?o3WL4XzfeBsa^Pc$UnZbMgAVGwZpSp0HgU-gryt1JkKHroAZm?&PzQuT8NIdHA#h3u71I z!;$~4Xs&g0SBQOk_>$5eZ@f;vqK3dYujhQ=hV9`=>5MTiUa*-sA960ZW3>1l`0tFc zN4nA*BXzdn3p740wdMP=dY-Y-Pi**I8h9N7zlVY6eR%?u&rrPNIJ`w`3gX#u2YZJ8 zOfZN;v^KU(4>q+7$=cHx)Jg08S5OHNipOZB29`jbz8(&F&d`9ter&hZ;5RQN1a^`A2b2bkd#X9OU?7g|i z%31*ahvV2r$owkdCjEeSu^u`2cftkPiN9cen&oo@UzQ>R{B_+D{Ef}L_hX;l@#2;q zt1&+RS-fjILO!7Q-Sv@JNqu@YKFTNfz9%iatD66VpCc{`*!uSRexAvWIBMieR_j^t zw=i(hTFV;xDxEEr&Ct#{*Mf<3n~pE^UvKyizDYwi&$~3wtPd#`@u7>|SSR^o8fi1e zy!(4I@W<@%*YveFLwrwkD|)?@x`OLD^3CM)z5Gnu^bfsipGNST59=H1(4LLp^El7Z zM|<~g5VP95e`6^=e)A4`NJo!L-oFv7XFT-`j(0`-w}rugvT!WxXW83 z+&Tn2cCkh%A9R0vkA2tTliqr!>>JH*^4R5X8!Bc)K4^{I_d#py^0&z^t7{v)U>(Hh zkYVV`>|2Abv~SI~D@8*Q%9r-}<~I7V7VpIeojkYVAF*uqCy@tK@=!EsF-PKOhxxA; z-(u_$_*6RbLb9QeyqRToK}7Ok@$@Go56qqy&F3x1Jp2edS0M8$J-#KqNNYplTaze5 zokkuW>G`)YVLO~2xy%}~pX)rk{LbQd@tycFmMG6bCB75snEu@P^^?a-_Fr3rcnGp> z8TBqhe#%F$SfeM&jkA}yEy+e-mz7Ku?B0UMrF#Ay#&8Sxk?LLe?u^CgZi^zwQtiP( z=QXrBmc2Kr$~%{3j0t@^rYl4F93ggFLzvPY`Z~g=^>$`RGR4?EMV+wJUya- zvE!FCdW3W(?O{~E^666qosjisv**$D)zkTgqK~cJL$A^3%33#yaPq{q6>Siv@I1Rt(wGrGHIp0Pbj3-#9S<5-Zm{Z#meX$+Jj(~6Z zHru{ln=PxgG-5S9#5>t+`^3-iCHpp82R2&=_QzAmQ5)KPl>ZR<4P~n_&epBiYO+CG zTg|mW8pC}yNOF1d0C{$Zo#+VIAu;T=IoN8lL1LEG-F^YKTyAYeEX!I|beG+Ne%pp# zzENw`vAndFdhuHDr-i=A=Fq(ZT#ocz@#3S-~%xHOLp0nz(nPfVTfFGbxCNp9(dFT?6Pd&QSaGg zwH`bi;E@YFas%*ifJZWq6pxXeHlF?ul~?V4S@5D<_TfCs`jzr* zS31_r`^H;Kz6Xv>c>S&yy0Mw>;<_Hc_hE8Jzs&l4ci;PK6iYgr#3UsDF{bz%=k>=FBqXumsq+h1Xh z%ip=@{%U(fTO%t3%>!_`g`HEx9Jc#5y=QQmPN5K z?ePA};r4F)SjXCtK~G(5wLJx%o%r1J#6#HF9g1_Xhpl{uw!*;kD7IcaYGsz*?JO=w zrs$sBr?c4~oh4gG>wr&i5xaco8 ztpb)YZw(=h?|olL?pw(5uND8fj<#dK6Ws2F=eHfJDb+Vi!|dasj+puq{bf!*FfGG3 zk}r7DFZK5cOHSfkE2pajU!~~5-48LY_2f-flX4>YG_tVJYBKgzj2x+y zi*T?1QP55*o$;@g%k~g)zR2PGi?BbJf|H6DY8OnAA>w8F??j%ey%@Z%8D5vX_L;}L zNM0JbKN7x;&8qLJ{?fAxUCO*0RIZ#RZs?c5==~V~wn5?@)KA%YlKs*f`1SI0Ju@(H z+;wDsy@+`?u^fYqY3XTXrQ&ju`S}OrLozzO^rHW*59yA5{q3k5IP*T)j;ccL$rcUO z_4$#Y5o3QiJgY(;Cd-DQ& znK+D0isMUZ2wAf);NI|{fL}*`9AnGTub>}iL9ZXDuV3gIr}5*^7GqyPeA-}sn`QWI z4r?Fk`O0xSw)KrUE}!Z1+hny4hh_)kkDFJ?XOnAuHo4Zsu5IuP)#IMik=^?AjYh{X zzHam(VlAw;9@e<)r;;PeKL4V6;Ny_90v+(?JmA%NPH|zUm2r{a;;cGrOebr~u`A#? zIac?aD~9INtT(>l`cKsUxYjE#8n`Yzn6F_y-}=4=`BR4SHAFpoTRs%glJH%A6NC5Q zcL>}U49Y!yyAS94)_sFMggS2@uwumy!7I$WL3}EINXaXP_M-&Hb~-!d@GU*sqGDNSfM*UOkF3i!{uw~0!L$# zXP&PGTfb}E%!h}Zb9}f4E{YlV=X@MzOg{G!^15hl%AkvUa<@dF zi~NaJcNn_R_kDOaaGfUz*N1>bZ(KY3GX}#q6W5*s--7W5{=QcB<2+nXz4965vZsD4 zFiz(2t`6kJ>IC1l-GE;Y+a<2GX2urB?g}%u_ynulW^B?WPUqv##)qQV_;l<8$q418 zJfS(iGAnVC{|QA|iMRQ0dUGsmFRtHzGxzfQkAQ|d;TK2b_r~@wV!a|9dU#VOdF?f) zEB+(Yq#T|v;SaW;5A^Q?)fcOrQ`5jWjU35z8d<2$>i9^;;_CB?3s<18zI1W_^$+>t z{WTtc?IRw)*vJ|AIgXIib}%1}`u8j5;&guSo{;ua^w0S&c)S9s>3N+a4>Fmv(&OQ|FHN02agXgjNi;*{Y`MzdSpFtjs$##5#uW)j|FgUp#Oe8Ai-JfRRQNCz!@FO z!1+hlvn~$KRRcTe&-k;ApUJ0r-?yaw8z)obqxbRE=Tn36?ChBj4au{k9?wo*6OeDL zRJcKZ6*IJxe#$>4T3<-6ZSCQe9^>PT?8l87lZQ8*?*VUG{%XAGpNrn#PZGqPpgcT; z&v7u^(OQGnlag%;AFlp-Lr@0(H9A5R9-B%>@aSlF7#~v>GOStp9=4>`GL7$Fwj}(s z8Q9>2=!PHftViG5#=Z1E_V6x=Ap<(j=+pmV$O7qqF=Rm$S#TaWYI6Gr>Q-JVzs@E2 z@>HklTk5qHMs|jWWn8or-sR^+>qLjsyykz@Y7*TTJ$$6om=(6Wbw4QFPYwWB0D`z-5@=}^}*i0+p-`v~?Eh|1p13 z#%PPTPQ3uR*b>I~bg}$!W4qc#Ta2lSwe1s5?U)Jp0hHU;LGJ4PHui?p1Mjfn#y(k6 zm{060_VUV!q4hbP?8W}`m@U_7Pyd6&_F_L(e4ja6ai&#KNqpH-+2;R{vpCnDw4zRP zi>;6wCC&kw^mVMWzN&cDoQPvj%x}g<(EJl;VEj62KM#FTa$V20j_iLo@+%gxeq&qJ zcenfln^b-)dQb;BK|9vkC#>l@{MZX8LtEBTNho3_Z zKX7?v6=T=gO7~ogoyok1!75cprC`SyW$jQP%kA38kC z{ZeSwoMFvOrIS~or$&ae zKFC}`dtGVLtA-Est6vzQ0|Lo+!mdx(C^X7T&2eFA=8kIkm9|I=godICR#Y&Luk z&qcpE&FE$aE_8hl?eN1fwxy}Md ztG?pGql&!0!FBIsxc&#<)Dlal?|(`^mng0-0N26l36ACKfwBCC>r{HVj~nagpWwO% z+caIg4?J}iO*3%-(CKr&UqW;`&Ev6}ucO)%cObtJ-KG0W!>nD3%?jo&RjlmO;8ENT z)g0zuGTYyiV`${Sv_|bO3i>Ufi|71xe~Y;*qc7$7B2w+$ub!g%!o(@|@5?`c-_^h? z4$R5v-KKKWtT16S#Eu*qoAC9jSK+hsk%hv|L&%HZnwPITe-XGmKE>+(mkZo_;?&cE z@4xyS;yb6>h1DM+7HTSZ`4N24>s_AQydHbnooho=ns1+`WWV`%GL>r|H_L>Z9vyv@ zITwuw=h@V~YSI|hjXW~#so%?x8_6{EH2lP+p@FtQ5J$2DI8wp&U}s^xSpW3m3vVA| zb>DH0UAPLq^Az)cG&zpy>XE`-1xYzhT1-x!!&L!9VJ=lI;bpLFKpe)o` z4dNeB3*R)d*%^e7Fy>zTcv|pE;<yi8Y+(lV-2m)N`iQeRvvqyU6>s1iI09_IfeSJ`8-jp`N)?ym%PeMFy`t z%z9G;^dFBRvx&K=^x{!X%mwQ@(s}c}cnigrtO&$cloOA7eK;6n@x*4IFG+Wl??P)O z17a)!@u-Tiz>ZWd^lt5EEJvRzU>?d@=gS8Vk9N_#)V_@xKrr^!k6T7(`s42ueVz8+q?dyb!ph5XAnDjCb6RqYuD^=nV*(0G6#B- z%yH_iRj;HEZ|V6kKI}lF*r;RmG6SHpCC%yAny!A<91<+$3+H{05YkjhF6nM_u_po02&RBfmAFgd1 z*S+S2zvlaQ*eljqRNLkZcN)hXyZf*Eb{gMa`@j1(NFOe(E&#rz!1*fTKd&U0t-Cit zdG3NaK=uXlK(vs{LFTy~%%kTg zS_1Dplv~`U_#oM5I@2rICwza#N8s!4eqM_8?e3Xy!Lf829nfwKey=edO1D~Gq0g_r zPksK7*XQ@z*Gl?oVK>Td$i+r+tTb{NyY!H(#}>^XCn)?-^pK5R0_^hz+xU+{1M)Ir zpI7YptX=5NcYpsr@5T)ByrPBuP2hWD^F4M;OfVm$4$-sC`-k9xYAaQJ&Fn!^U0J8f zUP$?#czMOoQzkuYx|Om|&DUXj!6%my7tuVG)<}M-T7v5+oNx452NH# z|FQ4GZDXtO5^D&dXho){3p$A^VtCgk^OzAp9L zsJ>EsH>OO*@H_TgXSMBo)IBR%zLKeY`-`hBa@}QhEyYgQiu~P)y)1b6@BcIS9(($W z@G$j7XBKr#?a0YpIqBv@@bAIqO?7>k{+oXDo&QZS?Ol((P|7~P7T_VDW-D{t6>8X2 z6?YUHc0hY(lxGFK5WoG{R`d`92d%}r^EPl!ymKE+e2+8CZV@e{T1WENN zvUQFfF?hPi*Q0f)GW;A`e_FxZF8G)y&p&2$m(SF-)xBUQvYm3*qc6{(+|?f|Dck}b zy@D^N#&#lQ_=L*wSrqV2XXi*KjZjZ3>mOmSJ>BPXUrs$Wv{z2q8p^HUxj9#b_O7SB zt7&fq?Ojc|`)KbP%H2SFd%X5G;3KJ_J#w2|c(vDFhey{XZ}u#?gF1!p&L`}`+)r6; z*^l}7?4GSP$>4Lg!FQ|3Vx6!5`?10Im-OMg<}{Cehr+|vN%QQ_ZxA<1{^XYZf>+i7 zXL7+A(V1Ufb(Z|GXUT2AESW!xFPr#3e{9Ie2jN){5_?te;h2wipP&u@necAQ$L+#; zaH{n$^IoXg{q^V5zx2eLU5kGC<`YwX_h#AM`!|=Jn)gEE@!GbsyVExd&(PDmj;wod z(_|#Po#7>nqqDv)?fS38< z7dNHfoxNH0-S%Vydoahgo=@Knrdj*dznAWr{$wMxqH$~OL3n7c@kiA&w!z!E(zMe6 z{vV~C@{t{zoV&xD*I!CpH-#sHcl2vL?fAUQFIPGe8yeWgz<1f_ z`QUp#_#Oe@W8ixPd@l#z)4}Ni@O=&V{tU26hknZJ^oaJq;&Z()!h5ybfp7Qytgn>Z z-0x?79r*3v&-##Ky}YY|@$Vz9rU9HP0+)#AS@M4Iu4EaXOqbG?jGSig%_00LqSGSs z{mK>>@ArB9&ExfdMlo@Qi)YF)9u<)gRfgUizC^RWT-%-}g^ zDmj#ou{Xu|8?a5Qi5IKJpTjyqWq z5^UuiK_A{wdwKjd_GDjs7WHY3{ZVqLs~^(0HvK(00f|M9pc6S(xLh_Way217m;d7W zO(R&Fy|1J=bHrVDJ)mbtf!9}<>z@&u{IiMpKq$YR_Zxt54d4Bdy)E0*fV=QuZSHRI zc89WxTWchyVFu5&M+e?nt~07&luH`$&qeMoexQb5=|1)+Vq4CDXWqvgj~k=}QaksV;*rUn+KeOyoh3k157CvcZHSG2$$$ zz=vddNb+Is@O_wCV;{nKEFiGOq*E8uF{#`>&+d*X?wUPH!zNySX9+fEH8EoO@J;p=tYi&iiQd(vTT7OO zIDY{@V0$Q-Q*>S<1poAWwpHt(W#Y}o2`8xEuj`@F)=vCVOBz_$j0>*W)=r&0 zx+R@`ukh!3#cO!EOx3RT?rqDmmejGoPVGLH)b8~u=CPi-;p5Qvxc#}%$+#9&aB&7++im`Ps3HOs=M^ zo5)*qyVZRI^RL*2rNByhr(})BrFh;W?7tQb8=Zx?0e@fi5kG#{F6kG)8}{ON)6tWo z?9Y=ftG(gNhKS)^KHoYJbKrr*7t8;ym|8vSRO|!KsuV-$#aH-!jEY|Iar-gH+Dn%= zasHiKS?l;DbNm_jU2>lr{>nZR_j8)K+9iM?(6ZD?|GE`V26l3 z@N$LiV;`&9Qyw(@@@?N8kT1;56(aud5_n}zDE{*{=0Z3L{m&8~iPCRk{0vTFV|aPS z`o3cg%*z=zu3yfuPT~aW@lke8#YcA`zBl;$_zUp`!$&&Lq(9^hQ%v=7_Ngm(mUIL0 zt0|20r4_U1{+vC_%B{;7o-_20E+PMAJ38p8)ur&qtKgGY!Y{9YZ(h#6m-(E5>iT63 z&%V`-4X>Wz`rO_6L#?-X_todR&+8c9R-P^R_km|}4-tRZs~e@ACjRiSaGNv^0(sB`>+vQcq2rO>3IJMm@c zN<3mOd{aDP8NRqu(VzG#Hdj9N9u4QsNyiST*+!m-%;N4Fh{-vRwU*Jykv~R%mb2YH zFER?gux;kIHgBMB8@!kt!ykx|I+vKoJzh-CxyY(L=u)zWXG0gJE%?y_a=+K{ttnp}E+6OEDp04e%Wqf_X zx%KrPz4!H<8gMR{oAFWTSFt=p=_Ar@h&?j6Xh}El_Jam>8*8ibHTCH?seF#gNmkTs zJ(&hh`FiO^eD@SI(8;>dN$5>{T|6asl)mL7sFmo*K$2maNKNze#z? z{Pj(EZQBBL!7$I_@T4&C^YfD?*()1;dnNBQu}JMn{AjSfaLI6%t`dw5@$In15bk;}ZfD`W1&o6DKI*C@AvxvOOE9`mBXYh7V?yH<#m0V`< z_3A!21m`%cw%NBLJR^Q{qvAJ-ljw?*UwAOTLOyd`2M-ayXTD9mr@={NXFl^(1}#-G zKNj;)2~CyoFZ-n2nE@ zrBhcmeVaj^U|-fK=W#9ZHZ{CUbxxwrC;tib;p1;|orB@>-qX-ray_YZnc#fLpY3?_ zkt$z}awOLc!rRnV1elhApNaQIn^1`FI|q@OA*_wxfai> zV!lQ&U-k4+{LIW3upMl^9OmnX%-0OQZQ$E;19QEHx!%iMZ{Xd1@bVjpW8ARlyv7aC z_ZoX-O}uWyCimI@VssRzpp#avMI07 z&*fEFiO!I9>K*J_*|x~YiZpD`2irnT=)N1HwOQu*zVD&aa^LjrtVA9%*1Y?g`|fGp z869L_7JHwpV_A07Ce<0N?-g|NTI$rZf2BO-R(Ae^9CgfbKEAUj(jtx3c5z{scxAhL zc2yT;tML`F)`=`5CWP|wW0iC9sU53Nq^@Fki~NZ?CqePjUFe6e6C+eZ z|F*N1DtmSfnps6V ze=_|U(fTL)(?i>TB%h%Ar8P9&m(VZSrRP!q>$IgdULX6F9ObZYuxl&Ue8yUNY5SI( z+s?HXsc*z#?$o{$gEy~%H_Xe_uAYZa{N?f&g8sD{+79ZQXLJv)Z<@N^b?ZvQK8&Cz zOUJaJ=`cQ^U_S5(@Z>upR`-k3PtNI_ZzU!iwi4O&-`8XFy?mIF>F(OOsk=Bk@hIba zyL0e*eP7)>*qtvlKJi9(S z(Qy?0S9!*1S9?EY6G5MSW$w*R?4eA*_LAn|UuZ9=_oswcQ+8r4@M?Y!@ai0E_)=jh z_E0DOr+)pZy*RO1ea^*qfF2+0S0lJ9IN(4vK81Ve*Ldbp^zFbua!1-Lm2)e17diR7 z{d&GFQ!v{7w#@U(+{CxH^6j1A%-GZ6LNj9n$5sw8wj6NmPH;@|u=J(7RC!ateTSIO ziT3#NBK(WUn||}!h>SAhAr?V2QAVFWL|>E>zV3A|M~3(?eq-5Hi)g=?xpO=pXKA{d zv(m@IN^ru@A>6^4J{Is>#rR_Qj(neH9WadHNBg+oMoxO+!^vsd>&d!`+Isck#8&DV zls4GI|9Nbx%PA9_n3V0{q2Kc7;3|+zac_}0LgMMAnPRx1>a=(;V@I3B4z1#fvfM4(4lt!B& z+8#z9hSQfbkln0@AmfkYFVQ(`TDy!{@Q!ZcEOIPz>ACsvq2~keWJA-X>Cj0gdr>AL z11DNbCQ_z3jlFskty%k~y7}3E`LdPxcgo)mKAkuoO3b1^+7qT&uKMxCbL%Hqvz)W6 zvCd3;QSRfM@5~s;FPU+4Mb+GRIMSGB=N^0nIT@QqUmih^K}R<9_(n#eeGL5i4`<%A z_vy5EjjlC3GokpC)s(MlWbfOV)*RMk#&qOcZIZ#i@t)UP=g+B12iF>k3l})noDTXX zyZ)s|t(M*6o6-uT|k(r4o{sN85nq7QK z<8rKXrsSeWnDL#Pshsy4;}bIzI%A<@l;qWf*0tok|F=(AP2Z&6st|n;9ihL+vUN>< z#9Z_(?pdSVe{{{#Z!cIyoXe@D4>+r;cMCRO=R47!@n!IzM_Jhj($5^?d~D_M{MEAE zF>J!fL~Btc^Hjwes@A)10CwB|d067LcX~3Os9rI519|L?|KqaEgmk!C<}U^u<}xo+ zXP>e772=$KG@bo7(6RMK&#rB>-NAdEgWSo#_HsJ#DCul5{`2`S-j&M z|7QND^54OK9{-*EPvPG|Cds!E<3ET0QvS(xnN`I<{@|>7{T1)i!s#z0N z`8sk^-|LkR(o4H!E8pkxjV})mQOBv(S3&nzLjPC52QG&n%!dcfYk@x)9whu62mY8i z5d4Ix^6JSKxfQ!dIpjJxvrN1%${2RNL!6Z7Ta>Qo=iyWNTKwPj#=qDmW|ImBK8^Ze7}60d*P;N@)Oz)JZErDt~fb=@(})K#ducpf_gyV$FznrF4hrVh;` zdsyPY={Dw3`OthlY#H@+uof(OmX2g2x7*XCBiRQctlhdgl5KRP7k;PwGJR{?9mI?P8ww zaRzP5K^NqcKgX8zVL6X+&#iX%fvSw+!1PY*(zpGWhX-}SLldJjAhzhc!%xnU{wcW` zTXYd?{Z`_7>e+%1C5`pJ)~{UtLOheRRe8RipYg}mt>1JsG@~^izl_NZ*=`*Rp?faC z7RqOBy8OsJ_cvswzvujrdx0--Zp){B?WNM%+B#1Ml%AX%4<+5uz~jKIl<`tMp%D9R zIKO9gI=WzQT+BvbX>$vG?1(h?f`U!#{EPP1n3lU-Zx(NWd-#M{eRd*>&( zUkCnl&UblsBRJiF-Y6UF2sW6(v0KNRa=!-uRjwu7dMJ8}pdtP^xsK3N+LmfON%R+7 zC-nF7rdn&2on!XVLK~Vxo4V5A)BZY&;`7x1IM3BqvOW|Xe;MPKAHyH7KaasOH6Dz7 zoH_4wIJ3ir`&!z+U$iu*jtfEoNnGW z#U;EBeaWAQEFTkW``kaK&M)Wh;s5{Hd-M3X$}7+NUX_8eyR5a^kn_w)XtkE-fE_dMHq&VJ65&PS*E^mVMe z-$yr|A67oPUiLz|g?w~6tJ=FbK04*-N8mlR@HzRz;FtTvFXdl>j*RPHkv}ZKJ7tO? zghy+yD~VOHIcss?Eo!rjFK`i`ABL95=NI9bvEShHQ~x7)L+*rIe?T!-q8a`(?!^M6 z`ud&~uDNs5IUHSoz?qx)cnRawouJ75`#fK`=2phDa{NE@k-y8ho4Bk|{54V+gujM( z2VHkmty)_(Gk8a5PXA-X&zLg+&bGU?YW?@9sh*$qd+9LFIP%vLaE3b^hjEtrlWESG z?l#Hjta53xhmS%85HoD8e z6WP@K`(2+At}A1naeHQ+aIDGQZ*NWXp4LI~VH0qI`!8(qKdTn*u@2JLwRiBUt}<|< z5zLob1>~zb-9=4405zHM?}HP5II5v3nNTrWL1e8C+{h^P+Y1)~K9$8NBnY(c{b~pSc+S1ibB(ldYF> zn$oP74P2f7bnBI`KFOU&cQSO`>qq=^mGlt!c{lN@wA(Jd_*dBJRB!r@zvC`O_-^-| zUpXdyw~G1=282cdH=JvI1= z4(hGx7T$l6ee-y>Xm{#78{Bi_-ox<`9+O@3>C%DFuVefFQ*9}}0Cj@HFL zVP*DDC$AH~Gjj=7M#{Vo|XU5Q5`~$?($&Tak6K}p6YdLM|py&0_bDbNHw=;HgZlKl6N|upB z1U>h|kBXinj|p~CXNb9_&Pj9Cx)cCcebuoa9najr{6mRS_5+z=K=fF);V^R#GxsZ* z`&Qc2+f(XR@}54EJ6RW{ohOHR}CE>a}JhnnbZ0| zn2*l2{|tCM*qfjBJj8m(;l1nFn^c)QH7-taisaG+a!Mn(+U&~QvcpNfi6fUtZmz^8 z*+aX0a;8%8*~rwyf9w4ieOuMU4q-caY=yOdDm5kH9SgUxAF1z+C&xFyFYACaUR>Kh z!yo@YOW%)NIEKD|=Ec$U{c`ZY+wT$nHd+>tjd?tLE^T!p00uHvMoM>+uJ;yFKLsB`;KPSV>xOYvygP-~4L?hz zb-yNO?9ZTe!|?pH?*H~&h%x!l<}%j)NNxQs$&Lg%MWt;I+z4HfA3aWeHsZWn3i!RA z->+HFyr~_3vK1{pejhd}>G~o3Wy+~mK7@Ri=&cK-12+GD=n=&v+>Y+voe^yD+abj} zu!~?L#NR~B=3(wI55*O;>DVx(`@c%O51FZIA;NJkM<6HaFo|4x;6Wh;Mz#Y}=_hJqjl&`6LcFtTcu?C0Euv%aHgA;4e%V+J;PUdpR z7i-X$5^JEm814B=b6#h5ev35{|CJq9_l_I`&x4bf9?P@m4D`A*H{F>vW8+SN9M1DB z^auZY-Mpv!2KulIY5aZodHOPL;CtS&zO^^(G-G0J(tG+d$dyK4>05jHP7l|AMI49j zKoYK>nu6=iob?*sJsfD*Fkm-qC}Nzo#G-L$uJK`GpB|V;|I%w>)MJSO+pEVC2RHRx zXJ7Q8hO?vC4{WTXa*HKn`tu5O*SD8fQ2YcjB~z@ySOYd$%NoSyzs-91=}Yq)8ZHri z8}FHS*UV;kljNmTf2-#|3kI?EIJS7hk1C;64U8v(&#N9=X%g8s2OB^RHh>oHQq)~7 z^>$9(%7=z6jp}J>TtF0N? zb=AaMdv=2`&sVZG-~_b=NBc@Vn@9-XyleuhpL#oMpgVb_gX()f_Pqo(Jfwp*vepT5 zdCSO)mA$Z^eU*(P41JfKKz_Jd_A|!bXg`K^SH=bWE^nWTij%7{n7ihyc`^5jQuWWg zw5Kud)A%^>JsqHzvmzYubX(cHK6xcE)x;t9PfvQjO@jl1eHr@AqI+h{bm*LugZ>(_ zjrSeiwER=}O0bJ%YduRDyX(&~`y_u>!`n{1mMgK7+-iJ2=Ng}nY&3CvKHK5t!d-7p z-dvu=hCI9<>{kc-A>CcHO+Keg`V6w(vZbr<68d)iP21j|zlpq4d}#1ib2nnX{$mHI z=D*}6&f%bZ?&dT5DB5Z9`_Fz$EJMIbX#b>l47x`|;6Q~H&m+{T8_hD=v)#L|A{?NK8el3+}$cCc#3m7-{u)SrR zg%$S9h~RBykA)MSF9^HUHh(^^@YnEFY$)CuU?Vd7t7nSu=>xY@<9j^ZR&0-Cj4*v9 zz;Dqt#r7DO;CB=F?a(-fkN=doFg@#VV-bwseVq2fKmS~J{LZ<{UGyy#7xKwH)7dNl z53e+Ky7|UVC)-`Hv3ZkXeouBk$IxY&`~C6N?LOYre&5*KD8*WTdg$_l3%P3)o`G-4 z*n+o3FPUq2(rn}fx_I=F}L+ctnbNq`5*AFkH^am z?0l!Mr&*`B|L6GpoU>=>40GD%#A~sqjOA^`_wd)d!o)dmJVdNZ-zg1U#7<`R6LZ;z zEL%$4F7izwJfrJ*=9zaZ^o_IgBKa_83^f`RGwc=+dkq9&tQH0yno9}_Wsw8xN(Mj)_Lq=-Y4Vz@{f!6GZtj^ znVtWYHH`pQcgso!Fmt$VZtJytPRH|WT-v3x5vayysG9isxx=whFGJh^NIu9>Z?)?4NEO4#7`<*GYWZWs;XN zSO@$_cTJ!cmOUz7_!qRXh($XNZVC51-Xwi;_OG!=Od!Vfe-6jSJ{WD1|9ocW5yelk z&ypv$GS>IH*Yd@r#=>mIE}sBK+|D+3`P4lK@J#&MoS~FGct7jp_hEbf>+$yP5VlM0 zTRHodE(XQFR{`4oFZjY}KenTff*)Phgydir>zjvYFq{ zBl}NtXk-Jv#7S=ZZs{$rWUOjr-BR1vl9Mf(s`kg(M+09t`KOFkHfyH#2Cmy~GySOT zYqYK6bKZJrFmUzTVZ9%t2HBkAizRpJH{nl=bEdYcU*Y#rBg>5Ydum(%x;Q>p?y#~9 zJvT8XP3SuH^ij2RbZwL>#?ZnT@Odw^z(;@oYI_sUiPu`5(LfC|+BExy%;;c;I{jZw7M*Ho@t_$}CxqjY);WITHk2Q*ZrrLe|bv;z`!IOU_dpYL@p9wTd zzD3EgRq#gDMD1b!&Dn+C=|6hsn7ApuPmEJ*HMICPr=*VQMd)g)53yhGg=FD*&z~jR zr0P{|Y4OT=Uvv~2J}kFuJkX|bYq&nnm@VLWHCyNL85~Pnr?vW&kvgrPKW+Rvty){Z zoNsKVj4K^)u6h^T+6!(Oxx=k58=LFYaOt6s&+&O|jL!IXt&ZRf_iPbMY2t}e;xOcw zRvbpJ_L8%sT4%B~XdPASO#DxKo8Sy9Htt5`DX*591@4(=@T!Q>SqhBKLhOE>YMBYg zg$F;UzMf<*@OYHHpqf5;ze~2~5@JU4&}(hzLX7_WHh^nNtc^+JU(W`RkIoMtG z@z>kofyd!-eSw^WYQi$dfv0C8xADIGj*{7ud=IitUL4>f%*&Jaz|jkKx$%k#&Q1^X zOK|`NthWcF9vI@EpX9w})~jIuBE^as_*0Or#!O&hbu##E>)EKMK z*p(OV$VJZBHP#?Dqz>Tfc^&ge_q;&k)tu?Wi<{X(T~O)eiW8_rUPQN&A9ML9Xxrqc z$J|9==`=<{okBrECuVy}Xfm-Ot%e9d8-!cOj$q^4}Y; zwe*oLBsL6LTJbs$M!%YiyiCj=cA({qFPz4QW7^&3w7Zc# zE%MDn@rqjCbTlmg&6D%TzY%}*y<4K3JkE&XutYP;cve1+d@EUjc>jg?saA4*elKF8**Fy_*Vy9;h*Cd$?p6|GS8IZ~HS_SM7xh>iF@d;jsz+vt25=zaloAM~EPCL#ll)_t%g7+EIR zjNYkSv;_|RXd};k_RpG@zfBBa^KvJS@OJ3Y%3Q~O?vEps4^Q>ZJ)W!h!TyZw^7xVI z@MdBMXHh?QXy|o+?BJeX5IdMN5=Mh&ylWS3WCJp(~6J9klUpH?jVM^&3!H%{OfAJwi29|Z;Lz1)gG8T zkjsg2+hJnGI3Kfn7Vg#f`gkXiIlD!6b~85c>)pnte!iSCu3hf9Bu{R%$j{T<_b=S5 zn701F!i02EgY$|HXU?8Y1X-{`@qk)~b^H}Ui)B~-Kas2F$a`aL5#HTVO$RPpHv2ns zmL0>d@M-X{kh|$6e|dYPb+|BP9qw`0q3`XX?OI#4U&&gCN0hVo*hEYXLan`j@2jxm zN={7Bu9P+f(87M|ni!fuY+@Okv77tAMy7nezk|+pFy|O@Nf~4Ga-Wb}l>4+ZuKL!}d+0Nryx7heY37W1JOMnZdxo|h ztQj)W@Huy6>zq#Lkn+}+Uxq!ToqkjEr1YEcP;f=>JpcAo_D^!ZCpUTbKc}w;I#O#Z z7?f;iajylsKlbhr-&qmNLde=>J}>Szp@xI45ssHD}2k`!J4(9&BN}VQ|Fw!N8GxWJAqOeR%u4$F+~A z?z1Q&Uw9YelYHB)2XLW7jqjI>T zzX}bu!c1j_q^scIu+Us6Scr!wH4Re9LP#Sa;O_XhPvpXwUNx zOg(n{JGvXO`#}9;fe!0s>pxeW-f(F!-?Up(|4t}gwf1Y5+_u^p{L&lNpw{VJaEdWM z7<}^F){u3|^6-f}4wi*VBV{?E2>!CN#61}+A}4ANme~cPek-dk8TCDQPsza&I~ED@ z9x`s3k(1FO5(b{y1|ubQuq+I`f?;?gzm-+1&ynwO;Fa3(NSxoe^QEkx*n$rWR_!}? z9E^ubhGB;o)5>>h4#w@osNdq%D@J`^d2h+6HZ=*mt7hJ$)|z>_9rZt%P*^|D?yCPS zHtHAo`#pb0`CDrZ+U!Hmw1!LDwO>z7DD0UOc%o<0geQ6u4VM}k^fymmTDA6pORR~L zrdR!&bt1^UUo{7S^$mNl=CMetJ<)!Gx=T+W|Llu)Ck!t`mN?M!Ea$`J*>kbEjMO|H zp|R3+WZx2A-2`6tLN7n@od7=lUHEvc)_?uB{5rCkyZDJtl&TB0Q@0E|3G@!RozFXv z9aJy%?~wCn1=H7TiE{qrOO@SN^h|YIMAN=W-9nvl|j0YL>cxSxHcgBO9@xFjHXn4%e9iP<0%y|oA|0@68*rZYCzZV+CnjmwH$l{(1 zp36Jl+Q|kl9ikNaD0xeM#d3Ix;;zqJP=34$xuA>~oic3c%B!vdZYAf~|tnkFJx4tmnP! zZ)@O?FC#dE#G|FNOKLvaW9U_@>J>}YVLto3`G|ItzmyeV{X=p22&}9rjB_*XzRG;D z8&?FGuk2~M>p=C{Yr#*+(Y^Rv8N)u!MRJnHK}^mgTPCC5A~UPsV9$si_859tGqA-^ zLc~-2pVGg)u@z$9ch+yTFGhH0Vsyy6YWC#~cQCj3)P*Kb1zdCUhi7&^2@mu93!3vL z*4{kd=d8mUd^hWIhx5IdHm&^T_xXtaYi~lVQIs_?xMl?h&|CINZ#nb)vf~!(HLuZX zt>pL1`JT^r#fQb&r%LP#Z4OQ!2>!y6X*CCnzObKk#rdCFH^Z6xNR4qbM)1d5pBiu6 z?r$3RO(z+5jB#g!Q+dRzdgGq3pzL^(GZJTy2{XXp3Ah36yuZKY)>8NX1}pF zcdZ1z;Hkg+cqaMXV*KC4ex~(E^Z-Qh z!n!9ir?kXbchzw&V%>{acj`2Dfs8-<*9S@^VvhtjF4zIa})h*ZaJLrREpTzS6x`3$dXoL~Y*Nh8;EnLhlRrk*Cp|5Ry+>NodvG)@ zc@`bflfMif{po4)F+6zF7f)0DXVv1|SY^gGzP{zuq}N?Qj?ExS`|qLOdp2RwWX+|D z7&`QreexI9v-Y+4Tt9vEhiHNP<9 zRt&mgq|2C><}Dl>o@dCh4|{d0ym@ZK{)6u~Z4Ik*V^jPFbjO^Tbk99{Q}P~h;{ z-D~QIBbCgg`v|UNoi_8%S81EXhdV6eYn}PN61gJ*f4GIV^I2>4F`sv)1g*g-$Z_V* z3Kz!r7c_0scg3!u-#|04Q}+*bqVCZ51w{e`K&$ld$I)KjKX)3k2ExsP7SoV>fj>Uckb-S<}L$}Tr& z;8t=5c44=U!k;v^0cgZZ#)7|Pa3wZ>_=a<@4Py;6_9AdYvRI5~=yt1P%+H$Gl$%Ni z($NM(_mG{XJLvO!-RoZHuwRyV7X5M5`G46x{|yDEKKXbK~azIOR{GHc#iF1uLV8z@YXwToR_Wy`4-r%$$_DcJ#CgiFS8E*ex9PAL-^BlmIioU3w-H>3EqC9fn90O zG`TJ@@LRkynC{HE^;A4P<`2LVjk?#j7n<6rYXqD>b#fy{6(32gy@y zuK9-zxx`tn3O?DKt2)|GupSK=LGCw6(Q`hb^>%dB^L+T`&CA0b;fy!03D8{84e=7q z;cECvz7G#Q`B%^90&}cy3LQ_ih@!~k&;j`Hs{4cs&;j))KWXTF)J*lpCERmj@W>5A zsr0O^k0Q@)lisSa=^gfTdjWK*-lazU$*hUj`?(V@GZu@uO^ue$&~v zrL6HUe~E1&Yz_NS+SB?`vO8D0dXOg+;-4E& zuH^h|i?%ysdJ$Nij7hi*Z5b7_kajM+o%du1{^om}%aWA2IQZwtU!LDE^}O1QYb|}8 zhMmI9JwG@+chv%RV2qrPQ2rHhQyYmqqN_N!oYO(!C~*e+!_<&3r!IWGtE-n=cH}DR zynp}tvd9DQ&t1f=?cQH}XM#1<=PhmJcm4t#FUb$B2-;Q4f^%)k9G-r`Y}?BI!imYI z{S!|%=58j&X77{hbIU$$WtCl@mDPD#?uB*s)bg_HBZ=^u_)h68u{jxu;PruoT{s~z znfFuYnSDO=4%`f$Z*?_JcyM{|(BG~;fvmWB67`VK!@Zd38uTd5=Wx;V3toXwi6@4B zbIZ=F3QHsF?WvLVng{tMU!7ZgvH0dn>O>)fCt5Nh1-D$&a@}U|b}jR(y&~(vfy=Tk zh})4!Xib7TFC%Lxf06%t75HUn?UsqHCFHPZE_Puc@jU0l<8_s)+a#L~@z9m@Z}Hh% z`vEi7Fymag^H#=L#yF`RWX5^9JI;0PI4Qh0JkF(Q$LYw;^N2_Hc&P5F^Tr4N-{|gF zruM6uGi}?UM5pLXj5VI`#DHs0ys_(d)n<}yCxhq2OfRs|)d*x{r+YWa~cO*x=p6W7C)#q!YSl zulCg36~b51*H^%~se7U=KR`aAor#-&4SUh+zo^`qIV-tgL8rC9DA#(jhI99NU|Of1 zWzHhj;k(GLtYPN8vscvrDd5=LG6HqtX)|uf%9@c8N~kvaYk_FuHG4vVKF^rP@41+oggSw_L@*L?lDytTcUXzf|su;t{kilIdoG2Xm{E)Zm!Y`B7wO-2slixlQ_J9`^bzjIS?jbgETJ z)_oTEpmpq}z3wAlbGc>W7lJ{jjb!4Zle*W$bZ^c6#Vv~AB0jcD>(~pdJ@+ObvWa1{ zkV6$W5cvmmqL8)dMdBDfb>-J~KD9X6b=0+s_l249eY4Qoh#g}vac#0|H}K=MQ_NQxxLyWtDYxhBh3}gh_P4xs?}q#BIW6a9&S`nB zjrs}j&=;_qzJT5I1)Y0r2hU+Qea*F-9)kwSb}Cv^z&mwOtF=t zv)St!&N(?mUF5uW6{AD;;_G~oKkez4z%@T?&*u6ta$!5R?j~f`-Y+@6(Y3%i4P9tU zhEI-VznW+(8JV#_w*dcy?5Ug^Bg0K-=!(B} z@4;{_a@^%vE3g@4*4;C0#mZ>bh2h#bGK?b|sC@_-DM9-(+85NW+*zInv+VL2b=NW!!6&wDW$YG1PF5{IXolB<>^N_vrP(!~)UvaQB)% zE4d^T1ox1c*E3(yD)4rh=uyq-;3~eZDEm;8n=JI&HKnxc1E%yW|GZaD8ku*^*;d>? z4sZUoYUA!{>ikp3F4(n5BawmoQ9Gh>7%7#VLpbY-(X6D!@xnDE;VzKV?T zd+1j=I>6r+mZJkqH#)!&?K~ae=g_}b1M?GcduqYC*EC+&+UZI~`_as{Q-Pn+R&{MhdmpRD|uXR}ahvr&O zmauk`>7GNsdf_|HxqX7~_ZMC@M&9oscDKld@6AIx!j*gCE&Oia-w*sB0RK7Qzu>~Z zA9zmyf0y91{@5kEZb7b!+fyRwcbS`kc_#XV;8QO;YYu}C0D*Zk?d+e&+7Whf684^V>K=B%?Kj1@-*;L=aRv=wVqEg?xz@cnZJ9xJzonNAoVD}X zS2O;b-Sr4T(~7Wp-NbKs_zt?+fBY(|_2&AA{QPydEXZ#_6KaxR;Z ziHc4HR;?%ACXcgT49p>9ktT93kY&vs2Ysg?(_ZGtwBjj-P6w>6X7FGU@=GnaBH2YX zIcmsNGi_uY#jt&i8$xV)|g9`+c|9hqLXpAlWG0^Dgw1_;4p%lH%QPuk77 zUfVkMxE-F{5l*hzog2i)CBAIoqVaTu?9Obp0e%SGEr#3?2aaqqf^j)C;Qfr#KQ`g| z$=2p5c-($nGQKBcj=A?UKa{*v`bQ0G@B+C<;`jbF(C0nuXU9A%zEZqDWM$U6ygv__ zu$lIiy@6G0!C9Sgt=kUYy2Y61?s?b>=jJ4Wtbsl8bfbetKHwas8$kce*{=asI@#tc z;FoA$D3db_u1|yR!Np*faUNes~eG@cG^Ui19geU|CO`K z8BBXtQ+@}}yRdVP8e_V%IyucA#3oSZZH`r_`mf)G76WUI*$;SfAL|^z%g2evzp!F@~{xn=#R00gni5C|nJ7^#GVxadw7_T0y_csX-kk`cPn%Gm( z#YTN*Zu*>@?ZxzEcb>~wUox@`xnbmOT;Su|FEUTTk}W{E)J}||>GO%Pebz9?&-&h- z?StFHox{p$_hg0{zGubsshoE2S;+USn)h_)t@kX$_pFU)(xbd*e+2)%dGzv3cEy*G z&%R-7q9Zzm7avi=c+cm3_J}-5=;wRji%sa=;)`G6y_3=20`^uTud^DFZ^j>^6$XLhIld;=X zOmTH?$pVVO`vJ0mU$3v>_Xn7>p8XR3GV~qz3v&D~;VI8Wv$CF>J3aB79ZviJ+V*eo zG!NgZ&}l{Q#e36@1s)p#uZ+$<0sedFjiHM9dtxo%r;$rOl(A@S1Htkp*2=F}dN?qi z{Ni8J#0gt%%ORZ|=gq)`&bQ4STO;=M63aP@iXo|S&!X}xL}zps zC7boR=e1Fv-8NBucH8u@2fOdg%X*RdvM6f!>0qZyE;HSvTTjUL0j2eYiL^&NG{GdXH0NscYYDLvO#$L z+~W50D!v`>U5#7sicgQ%&-)ou@Z(u4g4ZKU+q1y`oX(3}{I5a3YZtC_?{`On^NUQI z-IF(bUx}B~DIKAEv9+w4F+JJ?T~5IT&&DvCr>dT})me0Kl53~#lv_#vopqb zk2h|CcGq$4>N%T-s1?)U(y;fUKRA5MIfF9=(>==;e3Sc}49o`NYu^vdbUMjW#Ll-KhMLbCSM`zukuOl`CojGsK_v^g6bmhI!hED0-@CB_=s?9xv zaf`2tR*mQi&Uz?-hKz#dEJVuIPkv7UQhF?61yQozr<1--7{%o@(B~$qr2%@2sXHN66D#nYk{v1eqaNh&{&6fp%th_7gAlu&e7y zU)67(uJryP-6Z-7{=DB_DV*|jg)s}e^RPHXdR@a;_jdl8fm z5LzFKIket})~C1sIPnrC)RgOg{K4h5mv*iW-V=W`bfW%X@WjmzNe@%)>RMvD6iZOg zT>AsfxzDayzr2#W7k>`!#|v{33E~BU$Td-$HDtWJmxwEdz_nX_gY{}MF$G%NnVlQV zcVZd9%~U)a&0CyYIptSi3p6pl1g^a9)sziWSIxxuM(tI-obzJZVQ<~;#qc_QrkS1B zAlD*K4CYfyd(Tgud;Sv8!7y@|7e6of;QwHr6{_oCKRM5t`rO866NiD1yMVb7YdR{& zF2sAayr(?N1a%t{Q}d2dA8;o|J$(4Vfg1eXwe)Rb9;vS{|GsJqCh6bfZ`zywKz<^` z9dlXqky@+8@CM~Ae44va!I8+m%a+x(%~?h+SthZ|gI7_zrEFP&shv)~Se37!WTUySGev8`3!>K%F5aGf~X z&%Q8zzL)AZcyTx{Vyj+4jC`EC7-K>H+rhn`BwzT2tmc7r*j!cH{xG)eQ06RZ?S}@I zf=~U_L26DU3;Vezx7lBR1zT|5J$Jux2>w~0kv*^l-lTB{GiUA9zHuH`4VXBph6DYa zmyUbyK8TJ^E<~`Uh5xs(PwQ!SCG)(6d6qHHmCRH7u6=4FrpS{W6dP1cJ(9ejwJN|k zm$4_!sr8;d?%fxeQ*Lkte)$UHulDLbo#EKn%l{rZYC1I-IivEkqk9}FhsP=IbY;Y; z(GnzH^LqMl`gdyS7kmA)e>V+3bLya9tY^f7)yQtm-2Ce_i*(nd-sNQ?z+OK&AQ(5F6+9G z@oSu%mHqhg2F-b3-IcErCil(Y9e63ci_vyWZ7ttgOD-9;&eReRULN@o>rDN-YbG6A zqQ3gSG;44CMAbu@-wI%+s~^!OJ8^{*8}k^vaK}&Kzr1UKA0c9f;&$!@US5z#A4cwY zNS|+K`i?YoIe4wRK|=#K^$%5W_cDBT1PAuA#=?QaK?eu^io82Bo>wNd>i)m}z@mie zA?jR~xOJ`YX%B7&SIMFHzgE{u_~4(1YBd^MCN@UkW;Ne(+`gzd9 zwDnuf+`l^6?B$K@#kWq@jx~CS=c&0svh{dz{i4fW&LMU7U*AYx$e9Z&Odh|JuRvbA zbUn_2#(kc61nceb8sR9oM(xIpn^I|`=H}7;JZq-OqY(`X1)-s)U*Yv=dYW(Oy(9N| zId(cv;_pExZ{xvuuVwD7Zk8@^mXm*OWGr)kHTQr1kJ0%v$Ny!lj$z^-iCt<3*U*`d zv_L;PZYVD7aBEAvO1{;Xd8T+N{7}p{#2u_>wf1wjRQuU>M|(z+T1)V5jg9|-QLIX=G!*=(ODn+1{0Lh#rk zWHZ$f)wyb#${i5oEOj%E5Hd>#_e;VLjsE4QDO>T|h^9R2;#m?LyGS$zT=IBm0q0h2 z%G?^%OK2mzX~@oK4U>l=y1NBB>3^rrg}cs$o8TSkw*EE|c&gwgxcA1$JG422HtG0> z*{7d6a?y+I$vNtu{H$Ox@{S$c8)mOP*pD)Z0OfTe4oV~E80iZ#$rqdUfAWtIE&V+Khd4;3~NVX*zfep+-W4xWbcI@)##Tu_82cGg9Zw<%7Pd$&?iwt6XPxJO7f9mjF z>?BVubuUCq49&2t#lh2mUZOvImtWw0*#x>mxS!w1N8(Pfr3cs3 zc0GN*icX_`*VAtq{WfrpAE4hCh;vBjGyUqb`h5ae>bHr0gY+v|C`_$+Z_Zo6E%jYy zhjiD{L*?j0_;?2fz=QLt!3!r@%@Pw@d#{9qiTDKCu#nnpz`>G=6+%Ce}5pO zJWTrt<1XR9@zeAc!=u8w&{q1 z=x(X&-oRL$bm19yrb zXPMtB^jl8nIsDegy@!XeNgSm{t$FrEhqp2|^Q`Y$yW`EzxX&(fV9()Mst-VRf1R(; zA@=K|2i_>nIP?ZKt$k&slUlb9ZQihVXxAIB;157{H+Ar@!j3bIGx!{I=r!gdI`kat z_L}G)XKx>LC@*7*(TVqQ4)s~*(4#{)(_Xa(Hwzy2dg=@um<}DE%9_D1vO+wc5hk{$ z=OY9A+csa9myuBy?QYF|4xMDPJ#F9+d-mj-FYG*ne6#ZxPg-&F3~Slu?-Nf?-&edd zG~;8nH(&If;G~u+q7!QUo7oID<# zabK=z&%VNCE##iHxWm~IsL%bbN_|sqsBL*HTT#2R)jrLF+Sh_ zP4&(Pa;(+8@X@vRTzhc+Js&$*Y0a;D27jdP>3ozq>i-^aqX>I{Ulue=Yd$!swS_!@ zzpSmjs4g_UrOM9xRr85!557R$UK>0|d(eXHD*H~DJt%Yek8oW4XA5?ma@N0|{MRe> znf2Fatv~M=K2QQ5$OebkN46~yuiNeNg&OwcVQ_iJPcjXTrP@K8?z#G)&U0c}tfdS& z+PkMw=SFi8UZ%bigO{|2f-S*`N#d9$tw{HN6yAiNHxcCg#%gN}j~X6JI4kW~g6J5{ zCsrJcNAKPctgTIZHiuzwHq(vmmC4(dto`(~6^e8I3*u-F1*xlP>H^rS_*{V=lC6H? zj7xolShIE7BWQrme}&z==@xqg2K5>qK~5Wn!Dn#Wk^5eG=f5qMOwoMJv=w1&C;s)5 z-01ZYqz}o8(CmFd`Wc?X8=0;D2%R(M{M56VPj=_ot$~e(wm+Xqo|m;M$9{NIx_PGi zt@*^&2aSxA88`V|an++HHn@keG+%S|!FL(Yz8yErO1q}%>>usK(DqHH)*%0<;=?8O z*2t6K9{TUh&KcBI8_pks?uXp5C=ROFYTSg(zinx3Uh8V&LDR+B`13D-ZPw;1JLN;S zjx=UGd1k!Tg5kT1DMo+DBpYgVe{3(d4r)DttAl0yPJYIQxauGBU3M4kQ(wT6 zk7-+U+q~AFvEO~?82Y*`y6}uv^2mng5xhw9j6+ zwyy^^+IzU0D{7hAiB~)r*r+oi-LAaYYQ-*&-d1@GSc5TmH8HIw56l7{G>Y}efR|1r zo_OKBQ=zfbz|_&k_pyg&ki1gM@s*dJQl_;a~Rx;!{;J=C#QVx zKz-E@Yu8Yx9((0A#3lyM0tRht@beJ%&9##omY;jRljFwOUv8cc4ejXTcjCX-V4HE) zN%ch7;|clLvLe=lIY-E=yYKpAX1$rCcz6+VxbW`8T_0y2AERE_6&=jW$j6^#ea6d! zl#W&uv=-bCol`vZZP>%_SlZAv>$STNF1h>eht{B*#{$U?M{iL+!|YD2`3~%Y@Y5Z! z%HqPl@QB^$vFC`(Pt(4e`w!Zo|HNJ%=?{EkQ-XRW{TZRX<_`4f-1T+3MXq8_T>{-c zL|!51$mA&|$WtV5v1Q7PIW6nkB(qD-IDO}4JC8r?MC2*1_tkehMtmzdmILtgiV*L_ z!HKZo`SKLMyp;W)0ge{i`)hI?8&%NG-W#-n=8nP|>{mhdNjm>Z)`Pq3_Uc|r^h2}X z_*QmE&x|pDf2_Jc2N8eEU~Fh;yKLT(c(S7m7zsPvQpbPQ0*l10jxhN2>^qYeOP11e ztp#)w`a}+3CZUr+xc7=B0h> z!`|19okn?-QQ$9R-_*vdaVL7N_O#u;i#_WLY~0ijF4SaDM~AiOo2DGbvAV0^X}r@J z@5yj3SmNAqF(=v3l@|!s%}0i*MfVo|X}x7bi(4UT`@*B|%3Fb+Sy%RCQ!e(Ox@&uy zbBBmse+8T!3WK}w@*ME>=)I}V1Uu?}u9&bdx5zfZUojQ)+>n-v(M{suJ z9V=pO?;FP1hYil|8H2O4|9x;a5cF{N$!Cx|zViPF&i1hP4}zC=G>|DAev!`xUvGBm zl9uvazh4D@=)Z8~tNdp8C^Qy(_V&bgk{z-Wl~8x9gR>Swevlpz0w-d`q$HyFM|U*m z2B)rzJo~Yx<%hZRg!Xm8C)ed3#;2t3&;aAdw&PZ2Fp0gAe5W#K!cT}Lk}f=SS%A8h zA?RcndKrQ4PodUwAcgLqdMsyta`3GQ)^=mdIulzo_QTsa`?3?QJo_?i>Y=^FgbaR# z|H>!ke(kO|FS7NdvC)X*5J@101b;Qk{ zA-+4aQ}x7StV<2g$vwqBHM<3UjWw8M=#zP8&FNWsr~SUqj^P8nh7VlHyvmth8Ts#} z)Qt=nUU2aK@p*wqGc;H6bnJB7WT#UO;ap-V6>F;Tqs0KN!h-I55odSU84@%vMp z4aMKb=c21+HqTVvR5NmX5LrYyGgXXBF}acf+KHEGwPBRXCL-u^f$IN|u#*f~Q{*}Ow9!5UUoe^Q=1KnX=#B)(-infYrfz;UA;UT-fnJi66=T z)R#9RM?Cm*pa03%w)=F~_f%{f-;)EMvvIfGQI%y4W+#a`H)m#6%S!GSDdVh#Vpd09 z6EY-oD?-03;2sm>W0>ajcRKX{Hs2Bj3~^->i4*Fi5ts;9(sZbITR~QNsRKvY+}a-Lw&$*SH25 zhj6Fl_d|=k{oScCyL+ttxSjpjJU%qz(`=5wl&x*~Bv=Cd>(j1CJUJHcEJ9w6^{zly0_q>d$1Nn@r zADe}L-`VqJ`p&wo!Uu2mKK~?Z6>@Q|JuBR@F(X{Qb)N0w+-cyOi+2+z>=eFL15fzY zfc;hHA0Ct`x}iRmU)Roa*S<`>(y@Cm-hLVX(-y~{Bzf}}CT`J@1saK`PW69eBfmC{ zgQrcxQzOSZvfSFeCSPL=jY+~Inp`|>O2JcqOqB3OGD#)lkj|F?4`Sd=ocV=j;OnNZ z2zc`fG4;P^-KU~w#;r(8kv(-_9{YSQ?f=q_w7d%5@J?4hc!SMtS)C7WN_id%T7%fe zGbM|JeV>IxdM+Fq0LNbU;m}9Gp(nwU{=l@vdEij#+-WW7nJw!=(;}}2!sVSj8)6TK zpdCZdjv;8rYtW7|k9L4VvX6(^#{u|TEn})@eE2?=>3gM%L%)HKNk011f1XTDl_2uN zSUE{D!YtP3)CRltGZE|cPxJRD?6`_^BNtY(%HBTi!496n+2(BN`%&`X^_$Lna58HN zoet*lxy7mD6Kt^x@8E0-7PJOF$=XA+rAzfc9_aWd@tH>KATzDOqvu%EF|@MPR(s~% zk)s&spR#|?U21LYo|Uoi=sC$jy|-IDA=7HzgPxfS53HS8+!dQ%+!ZF4v03-d|INp` zq+2|}8C$t7xdvNB-Q~X_SC;Sc%h&$O>XO{oyso>jBlGxTWSp#KVuwJO9rFSCaAGi~`4M?KpuAH&ec4t{FM#}2-km1vnytkU{IM_y=IQ+tOeFTj5? zW56sKT5&LleNO9kIrFUyRIPd(`sn@M8FA< zxMxFuo-?)}@}O`+_|c3E%IB^U3W$~rjcsSsZnfs(t|PS~TE4*dzO9#a1gFkv5iGSa zbIFXg^koHGDg*HHC!02v3|)P&gx^X(bM?Xg<#B!wuRgk>~NAFY2g6=~rV(21G)CSdl82n7x zlX>o*=OV)YZWsF(8q@ zr+($gx%%_qx7|4c-}b>r*DZe>_`=CQYurA#)wAu2ZpPfk-;D3r8yh&!_kRG`J!?kB z+%szgcEp8!`v-ts?1LTk!A`iaD?b42o;yay-Iy~n?s6A)39vute%ii1+OkLCOBjFT z2Zmq$m6190%p3(jp?a(zbo@QHkHGKE8U?>>2zvKH;YWS&ZQy%&`IGNDc=^9Rgg&aj zJTix9=13n;xqUqMA@tF9+ejb9Ge-Kj%k4w@-v?c*-Y<>xQ9XU6k59OLeDg!-BkJp; zaoR{9Nw<&t-ldO4&`^(VR^R?=29X#5BV>S zUQ{a`g}b`B)6dwk|0ng0b|X(ksC^mE%x)<`_N+n1D*;9gYcg!Vz^6U+A#xpokr&9W zD_hXAX(g~6dxpJGvg2Cf_-;X7o%3~TVf6*c!JY@Op#VDw>>OfCZ)1*A*dtGF%V16c zmZ(5IkLvm99xd}Owc&p`2#Ag%#x;$28;&)ai ziT#MT7k89SwFVR4=6@!-D(_3zO-yn0)_6WS8|bC$7+=D|4|xG?frqVWbu~I<%XQ>Q zVgqPE7imF;t7qS9&;iQU%*`sJK6v6xt1$k@C5vrfY8=RqtG5tGC7=68xkKdu@|kS3 zhmK)KVGJ?G65qmq#$t39YJO5{Cfv-}W2*THJbcAQ=SY=_qT|pZ$%T>~OZk&N*LJ;Q zFWvT}@oSsBLFqwxflytNXJ>@c)1-ytz?ZDpqb6cEnAO*XVTxKBT09wx)tfo90n#gfWmq7Fn0YdNHp2wz4~~`U2xz zJG5ASoPxDO70SOXE4(hUm-(%v2II5n@#ubC(y{8GJ>{IiX7V{(F1ETl8ip2!t!>Nk z*_Lbl_ufiqbX6{s3rC?>B6%!=U0xr3=1@-ZJ$ZYUzH%Uf6dNx(EH# z&__G}o4C(R^wIx*^~1c6jl=)`iL6(|>myafyy^RYQNFYTW0~I9zIc1&w-Lx@Qi9#$&8%39 z)}ZOjLkpXkv-EF`=L+WWDQp2dfm>tjJ^0h{am>NCR6^go`P~oC*c^yudYHMFD$le! zbjqwf*0Of)Q&U~CsbORV>@6YX%v7I6tWap6JIHV6p)a!+XGC}BUMAeeCZPBW>G7pQ z+$e*7$D`cKf<3z7MyukgBb67CV_10WJ3|X!$(qvQZ@)!$y6M*7@3CpU zhP|tA)oCkEX|ytLuTKugPyCiKOZR@7|DI1;y7y;Vtc8nOoH&ZzjVIT?OV*xT|L)B? zx&Hkd|ML|6drLicUWo>~m=E zQ~1bV$Z8sBaeY6s2iW8*_rsr-%uNoy$+>IFn$>a?8>7ztVV+mACx@3=6}f*zPnUmC zaZ}Yp(y>RKqXN#6RXt?RVIMXJ(Z0c(>{gw@L*E)X!#$Nl6)!S=4_4#z$X6+_<^Zev zAMufKrc+^U@xjXfrd9Fiq!C#5KaPbp5m?EC>0wp*U>$nYs`$DOR^x%Ou--U}aqUkJ zE9ryP4Xpcou+pe6Sk-$5>d` zX*E^NPt(Kd_Q6U5Yqk$o<1=GnE!4Q4P7iB~4^}>~ zB0gC5(?&NLMJJ*fSI-En-99=YJn-gd0SkVR?S1d*9y_jSz_PkWVEJiIH}8AzCjSOs zy$@FLuCe3#zK3I*X8y$Ys+CL4f?$hjrgV0rIu91)Mw++MSId$wi zJJkQF$VY*>WAsaWI{T#C^upgm@Jmldul@(!kBD5o_+tl4&vA4o`y5Yq3bo8~btn0S zzJdtHK z^Y^rP*2tc|L_EfSbY1wa4`EMLlgq!SHs8nF(_7io?uqt7)tTr+FV((!I%EE0R>hal zlT!EfX7=??_Eo=EH4%%1K3%iL(IM?E=xLU-uYK&R2djHCH8+9ve)P8ftf3|GHP&+J zZ1-hxNA^5dZ$cM(@EG+4&?O`{Zq3A3h%DWK+<7<Qj! z|MhHFuVZ|*z-eZD(qZun8CvG)ihZg*h|a1tiBZ>YH#+MLz(=1PlrFaiADrxI!?q)I zjdj?LI*?<%^HvJ{Jwv-z#|y8C1gTR$W5AX3?Ya&7M=-v9fp5ftA@mc%$>JfyVUog-z_kC3aJ8 z`^61iKf*q+lQWxVpIUbeT|CiYRcww}3(m!c-^Tc7lZSL){oN0FxZnGAtK&sCr{UDc zS?9;B9YNy5YoL+TG8>c}@keZ(G1jK3@E)HE3+U^l_YXC|t81u_}HHJ<$GN=kC97 zDaM@hz`djo$JD-&S}b2g4p1A#zJ~ZOJDJuz#(IDBBslyT7l)H6_~_xGABQbyj{5U( z_`;NT#>3(GzY`9}pkwLmE5c#xZSvPe*N9t=v0t$jPQ8+LaQ8>xZtOxQmU+>I)SCjg z51*18?4D6vw++a+mU8K^?dREZ2Z$-C_!Bm#VsIviO`bEf zyp*-z952Tfzp@y56vWQ1HPg5i+gIYQ>r&2O06&C$5Y%JZQNkH1dBs|I7yZ-_FVe?d z6gnd{(4`t;MvewfabiY@gVgz`A!ei=`_1jcF(b3g`B-T1f0j8PRm6{l?~Dr^D= zSR-(O=g(xc&dmpA9ly=6i1oGxlXceMpSCXT(0&U?i6J$)M@8U!%kyEPUViKUrH?7}D*OOR(%V8jJuv8%79 zz)-x*o9wk8M)BgYFy;WGVbN$9`HZ6t*{SrKj_>uQ6ga&L$HJKeocx6+hqFHgPUD4R z;k-#cU-t#+;oRzuXIBcG=mlfpya=4C1?k~D)Pk z*QCH{D;Nu>1vrNi>ET3OIG;>`Q=AwJXN~3*PY>tSZ#m;pe5Ze2y|J-yJ`bGySb8{n zTsRk`z-c^ZESzhA(|vY&INdIsd;=$E_-sed9&0PR3^-M1Sqp_HitAAPuYV40XN~Q9 zG4C8YGkxD{9(7_k(2RX~UBjag1W9)eH1bd#fP<#Eo>zsA{y`fPf z@7ZbI%jCVJ`(C5_-l3HDs^^XEFTi_SqE3Iy-S_0%j#<(hu(Mn`V}*RBalXgVGvoM~ z`pJ1xU5u6R&QfY}#L0Qm@5s;F^;=mRH97ESQOCyQJfW**bwu~%Hk0=>1s)tf_xr=~ z4a6Ed_p-b34F&kJ>XGlG@c00I7}=W|qX}#=>wai0{IdL~=<(%@r4CWTf5F$WA|A5CFjm#&#!%h7-s5q===3=4m~o9`e$M0<8N~{ZLFc8h2OBO zB{jf7o>^7{9KS!ahWR#Ukkey_THNvPH*+H&Jj~qUEBE%JTd{$~0*hP!=!>l)VP z7TRfS#!iO4Ot!BD7eGJ1i+zN(knJlz+tDYZ#EW^hFV!seY$RJ|VI#*LAl!Cf&7vN- z@=v+9fi?I``bhU|0=&J%dG=uHduQ^jc${aK^X%erp54r|3&(l(Ri4cs=h?S;cGfu0 ze#*1c$9eWL&t{MFYy!DsGsby#CeK3SJiDA{8RI;=nP-3egIP~^&AfZ~vOB-Zv!@qu zj_-YE(KgO1Yd&UOzfGHgao+za&wi-)?|x^|mQnAI^zkxnI%v~y*E@?I8K=zzaA*r{ zs_uMe(F3#@Pq#q+dr)JP40ss*qXfA>#{IdaQE12w)^^261=pOGRdN=(%@sT^>gESh8xP)W>e_|L&s)6VdeDx2 zzA5b3o{Fj4yoYn8yMf=YeLhMp5ht!`*1$89|Kr=9g5f{k_9Qvmvxzr+9Q_QNlkzmQ z$68O(uT`oksUSlXsJt0IWXpZ+=D2 z=ehh&T*m$mVl5Pt)Qle00nX&3N6w{P2%go69c8QRD23MQSEvoHIKKJcS$~~)QD^ko zT*U&Eaqsy3Q=iT4d@_8B_)_xR`Gzl9GtfQZOVrlss#Gi?yog$HCcj2}37)hqZtm3% z4Mf2~^;g3j`fq~g*O5a#tOMqBK8`O=u>;uS21DpE&3qOwBWJ2Bj?P;<@z0v+A&z^KLTWa;>5qu8(KY-5_p+6s=&HA!_rR=NUel0udw^;A-boN^C zPq@69v-EB{d$(#i`D{=dQr_`wP@c}(?$S4ClYuRL{g1NgQIqz)*ijF^F}@wOf1ceD z#8&e5Kdq)#v_|T=-R|L8o5NacJAC5{66-}&BkuY zxyEkNMEp?Lp0c-}dxt8?;d_a*!kyh4YV9f1Lz&{%Ly4TU9*XL-9pZe4XM|eHqWDL! z`BpkU5p!qzkFn3rrPeBW>&x=&39Bxn-w=Cd@`R>m|RR_GgK^ zhN4@3+m*N0+Lvl_x;Asxg4n#wnU@Wi__qHd8pC^G=s?-m@>@$vYc47z{;#OsTD9^9 z$EF&Dp3IK^W|Qn#C9VxB12|s&nW8^n8~tnQj7`D5q#88WT4{5aj=H%^CCp1S)XQD^ z>tQ?893yXT0N1%MXgGK2uZL-n^L(BExz7%D3>%>4`fj!;<)CTZ`hoLqczuXD`SJRn zQ{EX5uMfEGK5YL$y7l+)I{!-Q);1XZO>P-@T}Hi%GT}6PExZvQsYCv*$8O1e zD_z75cg5SBnw#PW9Xyx4yX!n`uIzj8tjXw_FxJYXO= zU~IeiI)y9!yuaw4*rNvj@MrYG>m*BianpGLox6uO$%i3Zt`|S;_q|D`s>>cN6NTLz z_#E=eHo1Fvhr7-v!~J6J^5X8_*_zi3_dQ2fnBDn%e2BV3Dkj@pfO$sH6C+lax2D3W zO8ED2aQA-r*=HwP`=JFJLdT$yaiuMnOzW$0OM0@cJ2# z{ICu1K=pai+e6!f^qFU$QYTsAh2L7Mb`w)+_WC!$)>`TjhHG!XC>{#8aB( zv=7zUv`eJG?IylG13efyVUYVw26|Z&`EaBBef*xl#;QLJEjo>NLeMpI&t;uP4hq+; zg-*7EA9JWJmm`>$&dBOuy*gPta=x=_(ZTxzaqjN5E{IH}4oO?+6s_Myao_sA?yjFJ z_k9hmEPA5pUAT4cY<~v+$X9DrANJ7Q@-k*I* zb`B>2XXf{N{l0&k*FJmiXFr$qtlP7mwbmm%x5p#B2iz@quVdB<@Z)Sc_8aeY2LxPL%tF&73tLoSJ{0v0m!{i6ky^drxOm%*0zO$thuuytFi86zTg_ z4dm~+a&Tv?a0P9JpmBZsEZ-hvJ$#a%{7SwG{AJJA9OW4~t@)zqK1O0aKIbRNEw!EN zL9U(;N(tqo>}kwl-^yQ)=FzT4c&>WD^WN(Dyj#z1>InfO;j$s$n(HY<_N#^S&H#6 z(Hpgo_F3XOy7a}I)>QhU^6vk4<2oAX6LizQh5cH8T*vdixQ^%9Gg-wLV!-(9aUH}C z_3P3X&lcBFpA^?2+mUQhVK>)81+t@#^HnO46XaTGkj-jSAgy&ZxmzBFf6T{rvlhOx zUh7x*-`$caTwBSXLVk{g)$j$KeYTi-@r|+lo7$*HIc(~{%NFtnG*gc?Alg10-{$0b zOJ{%6j?H1-a^c5bOpd+Zg+Aif^JDOM`Ao!+Q&*6Wpc=kzcCKA>Tc7*CK-d53XPCR> zn4BfRxY^EQb^fKz-yAzG9zC>- zIg{_r)$qqfd?%ZvU02`1Q^qlWo0!YJ(Ap+s*>0}K$)D4TKAgcj{f9V}cct(}a$n5P z7+70t4lG~8|6=lB6q5&obt`$HzztsxokQjTJC{lYc1Pih@W<9kkOjIIZ)G2hvw-n) zU|bPwD;lHDHG-xm;W*sR2PQkB_=?t~`o4f~i^#pN|6aa}0q%V@?=J0p z=h&V4aSsn!S6~(4(>Ju?IJx5O`|mmT|LNTizTAF)lzXRcCrABx-uEwzw%`A&`@V^` za(H(qbx+$j)qZ!|G4ETooz?JPPTemRguh_F-|K$+8@~JGn?ED3h)G_N0Qt#+;JFK*gVJ^ z9A!;N-pmG_@$?G$vlgQ-ZohnJ;*aEsYbP(sCf`A2fjmC%*8{mQMZ+!#s(ffSoz0NhT?ZnujkLfvf=oaE=THt4rBP-y46{AavD#!t+F&|?; zJvlF4h46;;T&lcy?Dvxo?UWi=V_|@n#=PYdSq;hGf1Yx0lP^nk z?}Sgvm(ri->XI!^o-1q?g%>Gr`|$qQ?$T;wq5kB#vdZh=&8hNS!T;Vbp)TdQLO-9? z0&hMJZ=Ejrz}PItrhE9W&71!f-Pz`4E^j(H%~)^a)-RRodT7Ik-u*?+{kz;J=WNe3 z0tsud)*_j$;v2$?Nz9Yw!s4Zi*h{3YU%c()u~RwuJ%yOtP{(;wYK;8Jk!2%>q!pl# zKtpNF-5g*qUlirWm(HTSxM|$uyUP59r(}Txk;S<~BH%#?JWyVIwIN%PaKY1q3VnEx zhJB_#dCH^QByXo;rW6*2jNvIgy@f3=AJqJP+>Qb6 zTUM9U*MWOS?=lj?)fRN#JaU8g86G{g1%6Nd>LK1Y25YgGk>PeO;DJ>$UtPx83;oHv zPMfRI10P&%Bp$lN!TUc;R~XJ2RLrv#jutfsj7eXjJ?MRZh;<>h`}!>M$$NE|kc-Z% zyQF{B%zvP6XtJwrx8A=ZKF_N&cAhbj{=Kn*cE7^D<1lcEy@X71X?CswJ)* z4(vo{-Oakx%YBXB_J-g8jr{2LnQ6)+9P8`snMpT$^QTT8;Z)`G$srqd)(MF)>jcjS zF^sR)6#TU0gBUhAD-0jRFmd`}%V;moHyWFkPihn1!uJ*#xy^lhDMJp_meEF0RiExs1@^YP!=Fq`;f&LkzLmwjHtLCz!9Ua2>>?dU3p0$Hv3 z?6Jiedybh^+rm0k`S_2~4}<)HmK*PiK4{zO4$Bq-e=dMm!`m9w-(9CWy7fc-)p;=f zzWK+XHoSW0K_e%jwJF3t^Sm8evd<34|4a8e1JHuk@93$HNk`9PuI@AvUK@L9&+ZR! ziMDtDR&Y_gQO9}YZg1=UPWAqrcTe0IZ9KuZ>_2oHiyx*s-xd96RyH)Y{ezVU?0Acc zC2dE*)vuE;`QRucu``g}D&1i2`O(G=Go$uAZDub=^I+6Pm(Sz-e_#&0ekbFbS1w9C z5OK?mrR2#~ztKCp^~(l0ahojKnEWOXESlqUear$uun_G{tnG0?vmerjZyu@<~Z}{8 zsrkx3*uB4gyl)^kdrxNue8idaCpcqCXUM=zY(-xv~h_Xm%%=i}v8z_-jk z=Rh*L8U6V%`w^1Sr|^wPRUTf@Jw^b1N#`C|oCjm)Vy z&KVA@5w-r+*j{05@ay_i-+<@aY&}`>h`r_(?61g$A z6YA?Uu3l_G72~pV`r32m*u2&J-b5zBc zEOaW%GTQUdsglc0i({IjFRUf*}C$;rm@=QgkM|x}M7WTW`TvMLT8wchVxuz^~O-YAV`yqH@&8OXS zPQj;VJqr&_-t*Bns=GJ*oaD~UD6YZ5j;`e4r^8bm{QUE_F8uVD6;HA8(+r#yKl9!* zmgTjWMaG|uZyHs`R-?+~7uebpuKx7Tz2oX6;2pk&b9_!baKPgy&i-?D=bpH8uFD4d zTo>($i!W%uBz7m?5#!{owa@80bfnm9z9YWwGku4S6uZOe=V$s3y(RXI|3-Vr&)Ce* z{@r?TH4gqtFAabTo?k)BpsL4K+2`ZLpRS<{aI6(CN<}-}=tX=Y>--@$?#d>df&Wbn zF@@l@w@yFSkK9MwL-tt`<0@jEXGz3aV?@}a)gCrBT{}naz0 z>+YIzE;J_ohu*cZn*OJHhizhGd^J7>@;5;4$(Oq30_}^Oe`yW!!?9hG*Lz5cK1@Ed z4|d;(bxiJCoW6;ML*{rpZ(M{v7PIcHa{Ks_`azi*bPn;EYJ4Ls`lNFN!})?eJQ=*# zcM<$wBhYy0TJEPB?dG-cKLjmKAFv~>g>;|c2QiD$@WIK4kU zh!;hRf5?bgn3hIg!UYY_*z?9dzx?l&mnufTIOC~tj_aeZJ%7$swSDxx90}f8 zuR3=`_S_ouIt$qtL5@ZWnsU>yjgZf*Fcg;U*s{-uP3B#)lPR7sJf=Cv?ya z`HKO&_)KzD@)1>W8|wPvO^9@Ck9$_?LPD2T;<3-ZdDDrC1caA zvd{evo0iVx``ERu3`du^{I7CvvVd7UI4sRFa|-J&!2bfh@Z0^2{o9fAli0_)jNi|p z&G>oBqcD8Fd~D_fN6s(79#J<6J5m8LjP$z>KG=M^W7`%R7MV6|_CsHF@PCs%aeRo{ ztC`=);M6}dA2IEDb6$(b_hPbT>HIWoS=x&{$o$%}jahP0>b=^tOolGo~(w_KXq(WEMgsSkRB_Xm)r_)4uIhEJHh8< z$9B!Fqr3LJU(|7RfU^&R*v|T3L+gvZs~`3*&IMdyVebmyk6<*gK6~SF;1qM?N}IoA z%!2OsMM}~Vyc|4kSt^|L+LOb%qiU)GRq2V?TwE-s^e?IBhcCw%GlcU%fw+V;(35Q0^p9@`V z3TDnP;JF`%4zmw07(Wk;-(sJ%)rG$m6#Sic&tB=gQ$Hr1?${0w$yxFR{4v7pxuUC9 z;BV3!Eoj~rV>|Wm{~yz;?DGraf$lV5_a9w&#d*e00<7t~`aj(6{~Yxndt0jhuSn{@ zgFjCH7rFhn@rV8kf0nSz7$!k@vxVe8H2xB=zfyr z(naS6`fOb_(`cXf-PF3lUe20`jl#xijGsJj6gcV1S5L2ah4;euNyWzcduK=6*TYk? zu)oK_FYHojf=?Kp9fy~xoaD>Pe6yZ;{|KJ4io6PQp_3n}Z!SH&3?CwvKVANRv0FKp z2bnEiAERtbFuQOMYt(%7*{Ap>>^>K*5u@(-TOdPZPxthSBjD;&XBkJr9Y>IHEM^_G zWIjF!qF3sbz1IM@ni&&wyl5V}MYE^NbaY>jRKa^S&Xv^Xo%1-7`Lg+gd#+>)JT>-4 zY5n3G**|}%qKi`GtdC#lRRq)?#^zIGrmyR$R|C2J3DRCEHkJI*IXfBz5EEWIA zK!1mKGy$59DuYM-R(ImZkxpcwi*(8c`Sn z_hR5%GcajEMz0DCYds7-Y+)bhr1WF0A&|!w`j7a%c>ULc59cc0^U9%{ZXHTLQQo%6 zCUh_J_As&)nQrrP3t540!TbVrwV11;mEZ%R`nBFXaD}n{Kfn*QFJ7)^zrNg9{~`8H zi+baK>DWFL+)?=meg2sDlJTAlZlbK@^9E?QS+WZKEQ*ZWGwO>G;!ze_KaA&^E6t%N zfo(D8oMSJ6NA+h)$83*%5Z#gB@`RHYXRK z4|APFpVZF-$j?8bcb)>yBf7ykryHDe&J&!6+i;$T9ls5GYAQJ2=fe3m;CvbI7>eBN z4bDfP)l_g^=7V$Ch4UgC&ckhAeGkqDke7ASrtURvm|A;!MJc-B7ts-~Lsz^Oo$(s{ zj;_Y<&pCTJ)w(Jxzob4Be?%T@UogMQXpbx=n$3IH_TUF=OZ}H6Ho$5+n zBf;lp_GEjb-S-NmNK7fLD@_m^AX)b}jqIyQBujXHn1hq}t0NGjLtmP@9~ zjt7nXr&pNx;c^DsTjoO61GB>MJ~Q$-Gq(RUfO42*d1Ss*UzupWxMrLc0Yf={qt4FoVBpG{Vdn-fIt3n)-dc_TR6WB zoU!`GZ?!UwM)6J2UmAuo*J^X>CdX&lm6P^)E{5bC@+*RW zw&Igy1Iy~mSdgXJ$SNmpExX~Lo?{;sT(|5Pb*q&vKacZ0y!QMHg(b_d%osvX|7SYhSE|JHW5}#|8vAzbv4Qx#(_TJv6%M7|N6|c0Q~$^R(R~jRT;fcjX*<%IZr_nsP5j5o zKK8mywrsP?NZ^ydelB{8f3HzGlwt0=D&MTS>KHIXC+hb8Y_>qv9fp?iuW|4hdmlQg zohxn}cvBI;PC3a~IA(a+a;?WK{9edwCNj2L zkzGYb%}n`}2q*SyZ95Pg1dr~+*J~B};bQ8p)0w=d&4tY+>_OB2R_3`fk!HtC&c_Dn z#Y`^7m#Hp*&glAlHe(;C>u2BFKA+HH(P-N0&Cl})JX*M;91+R&wJ@j2^%b6Dxf03& zmrj3A%V1xI{7?5WMxFW7Tc0Es)Tcpb>3cPDK;EudYKcD-+^S>p-Lsm7c43;eaohnC!jRC9G9wyoaaGHfS*Ogjf~Qs)bO-EPeqrT_%S7qF^nCjxA9a%J02WmXHGRH<*RJMPq{g* z%TL(?_J_fB*#PRfhFv^s#;@4Jvpnci_R747W5?0BPcUwe_R4?{=bBa?CN?|^-*v1J%()jKB)u8T+?rJ@m%fEW33&J|Ly+H??%U`+@e3tP$p{ z-=A7_U@81{8Ee*&^e@gH%aP!4o3DC#4i3Q^jbYJK)!=ztc@Bn~$cSM!fBlyi*bhzd z&8}hQwqiTpeZ$i=)XRBJcAkkic18Sv+V8^#7{hl?hsr+e z!>N`e-0;RV7eDLdwndxCZ7cRGxn1iV@Gu!>3pls$UU*<9ZTkA?$KS8)H6_Jn&k577h4m&2o9O*QeX@*-Q1FXJ^oT$*X75ed!;2r~3ltUi}cw zV>gozhAqQtz(tKK?vAU*#l?yAw;CLa_k?56q3V-t61=3RHDcpQt{eTRTiwJB7Zt%v z^G-nDLyTF;%OkVor zKE`spmlJG`vUhea!yK+>j#A-F-FNXP zLKc-GHVnxlnm$cAhfr{P!DpekIQ*UqH@4 z^@%#Ba-GfnWUeoBKas0+aWfyAT4iv3-JQdSChCmF1XgYF-V>7Wt-Qy>Fc){x7t~Nzk|k% ztX^*NKgO7w+dHOM%kqZgEknORc8F(kzF@uZZw7lGE#Q%1B12h|Y7c3PcrJcEF~tv< z!!G@IXlXL*gn#9_1i1f!Yi~GFP~yNb9h&K_T*)-2TqfoGxRV2KzYkb;1hOidm_v_0 zE@U2(aork!Ca&*M9v^7iMw~ix8g8S`WLa8= z-M-l;$HjBK{%pqgpyM8M;a2+9vB+H5#2h7m--2$E{QX$yqobcOVeSFGD`Xz_bDazi zS1c9y)|8|#cGC}NOEh)}{OPTn>6T0L(PA?=BX}w%%Y(7^Ok-j_o{@LLTo~uuk6G^> zYwH+1zcSXD<3?u;tabS>3&HiXSr4)=lNm3IO^yHFntYNy!!yRu{*r(EBZ1%Rd^4N+ zmvf!Wbt%`Exr+BM;d(FEgIpJJ&8CfSaoxc695NdMH}{7glGP>Nc_UCwFq$1)K z&)mn^gVY#eZG$F%0v;>{zLq=pA$RUAckV;Xz51rPH<^3OH}~p`=3aPQ$JN6#i@6t{ zD21k)7g-~+nOBcL*zFqDlxfg}e0@)X8)s|Z!@cD8d%``nFP(lm?eDoGG-5LC#~AmW zw0S7dXW{eYsk$1w`Ca>R6Gxyi&EX%I!|Gmi>;h~YYVQjA+-td^j@(sV`QFNvT<6p` z@ho!fNU2k9I_2h^XH2Mm3Ed~1ef+b0S3TYN?#8o}E4bb%cNgWn`HQ=B@ew#7xJkx` z3ZnG|tgQnfXJ2&osg8|RtXF0u%l``*+1psF%bhmvI9p%ba$h@3Iq9nNZgT4Ueu{pp z&w0nl)rcHQmhmm}|8RLnjmtaY=peJ%2iWejD|s-m>uN`@qb{viw!o*8>x_T#%sPKT zo##^SXOufg+Z)aT!+Dj?cyFh?f1a|ybLnt5W5=&MA0LfI*({>V{kqQNDQD_Bbd zUH?1%naa0wg2uv;K^nKrfub)1TI?r>SnR*s-pQSs` zj_CUV?z2GyUp&RPO?gufFn)~+w&N;h!lM~;!d_Xv1n!v(qGmH8{m z%;mhldx6o)Sa7{%PzQV@w%aVK0EYR%@Kx3W9{hsn!XE6Z2ATss_$9+`>;Gl2OY4LG z5paqCyJH`BY%8y*n7RtSUX4CkS`nFg3it|!CUyWDE++n+K3ES0j`?@7-bOadzcpgP z&)Lh1P!7M!)}}dH2P@XKcRw$GKlb29Z}-E@wDXyI{qW;I^JVXG<-LCvc{#W{Pu3id zMvf=bVmw8;e9CP=UgD$MjrKa*MnAmZ#*m7h&d;rt{Exw-Nz0)x9@ZXeE&Aq9?DsfjMJrAXX1=>%z3Oii^m%a zZ$Qs1o`^52uJ@V?P3)Jd{|@Ts%*Dzk){-w#Z*kZ;Bh{9@|LV!!>{fV2r|i|99C`3M z_v9pdv!u(|z79R_$tg~|^eV|-XHV|v51lyen&m#k+JgGP#%n4c@4O!wp8Ct-?;qk zT;Id<>v%3)7fc7If@#t^LSs#(3;StRG^qY0uOlp19^H(dt+7o{H!{d;S6|W;sf{el zyD88VAt&?DhUY$Z{FJqpo#?Zh_{VdQy@QK;csH4M7bLy&d=l_Wm>3>uEZR&TB}b57 zv$RIr0u0smZ!S9%ukd9%L$3TCIQj7?e5z?j-!-N9E=(+5JZWtUK4iwSqmA;97mTd! z@mocM{GVCDbK(cmi5X~|D;p5{7P|X>bTr%kXZ5k~6QMrDO)(Gpu5>s$8uNafyxghy z;%s0+>}tw)(hCkV?mX7hhXn`VaRgdSZaaqDPi}h^Z6}wj8+2y5Whu(_RNu$U_l_R= zx`c83q=$Fvzuz8^+^-h&{N(=2Zj@XuoTA($${nO%kM+=YHhU)c)}@B8tNSFkqjhF- zf3&uEnRb>^*MVWqoNl1*d$~`hec{d7_)0eL`YXQO<<|8wb&<0x=jZNy-bapJmfW{k z3K&eGZ3BKgnagkosm*-&K77YNH+b0kIs$-*lze|3j z#4kX<*Pc)u;xOB9u;sVz``d=w?~gJcSK05K{CJ0XU-R|gdb^IFJ7uPc-%+NNcJO0L zOy?T8eYl+?sKAUrt#(w;ILi3H)3XcQy0!io$J*n0V&&{I*N;d9sP}x{Tf2xGV$E@k zwd^X^yQ7hZ3s~z`u-4`L?SXd_zqFP0?(2Q4X1+^Yj&M?I-FNvt$~-d)Ff z_eIvb<5{PEi}mh!)~NO~*1O|br#jC<&NJ4#<5}-I&jvWpSnrN!z5AZK-c>#CvEF@= z^{(pL$9h-w*w0w+j%U5=JWF?;vECiede?b2Xy8k%cVBeZyQ|0hjK^EQ zRd5c(^{n5>Z)&fb%H8$b)xi3$K8}C9VxLAapHtxJ)41C2zTRbj*SJZ8w)l&bqn7}fM>_( zEara}KBZas8!t&Cj%u2*zuAqkDNwA-_zP?t)L7EjlUvvqW7FJ2jLnapabtL@js1%6 z+0*eTeyiv2$inA!F>P$44KI#|Hue=<>9nz$Ha>X#+~RoFx@}mrp%|WgzD@RX?s!nS zMtjQR-Icqb)Zknr!&q4JgNJhS`qoswihK{DQ#?$a#q4`eYI-{sO!Ds3?&ukdir_iCpwv9_?Cgxxl8)ndo`F|* zIg#Et(6RB)Uoq-!n15L?&um!BvsAd_#emsmXI+@s4J>LkH`w9i51<_4b?BNs#ei+w z(6OvBkzw%C;LGKsph}#cX|Ca z?{MSg?y%1b75psaTn4u2)cXqd4YKPP#Wz-h5do&B(Ub*!e2uTqCSPpjc$)12|!IQ)<^Ps)Gw$H%}E zA09W$hY@%Mz*T>&;Jr!nWY_b;g^5w{tZBP0OdtdI-SyFhi7{Ls8Wy(u^eyu5+vTE# zPPtnOopS36opL)0?Q-9s9Co4h5HYXCeU0}k(WU({7F*y4viGNov9Rm^^*FnpX^iKG zj7R-9z||16>BWzv#Md_GyWPNQqu>C3c=X&8Kfe?>i1zjXQ}J`fVcLCYapv+UbvldRqbJ_5l{r)2n4kR~PuN2)eUB#?DR@G^PCV}(7n+hM`1*CnIgYX2Uxm#FZ2ep@ea&{8>bWJMsH85KF&H!V-9q-Nu(g!URXq4Dtz)Dl-z(; zBJec%)f8R~o|C)E%WvhK_gQXip1C0OYVN~Z)9kaargL`Kt8NUkt;g{VJl#2y+C2k{ zv#c9eRYw;VV3XIn*v<)suA63_--fNdF@)Y?%Olzr{@ZdX#8t7$oEPWkwKl(=n{UtY zD8}B_=*$7UxMw}(6=VNLUm~t?MSwi$hJD6}a(H1cv3a;@p_eg+^|lN(TLTl;KYcHD zJXgNjJid^A>MYYEf|E%cj@w>wNpxW$>+=%ERqEz-p2vPon7Vc582*0kM=vuH?Zh5! zCJ#CGCT~1;fAxJiwz)#iBGcM2gg&f&pRLTr))|GhFH+AV@SUx+zZMy}3fshM(64=N z4LL59gQE<%Er8zVpjVgC_ZxUNAKm&z=Jt@8R#}Ig?jFuq{V{X8mHAo4nXc~zAIUvL z?Ek(WuDf+m!EbWk4Sv4xUCuSj82Fpq&+i^I;_XS1XEdKGKY;oC@$hJ4hdZA?W6N9*O zUU2=#_~)X}Y*!xDe{}B+*1${Ql{pTNe6L{LC z=gQT31bY5G?#`U}%YFD}g`DK;zO^jlGK+Kh3?rVaGFBhnagOP8)ExpJdpgI|=2`C9qvQ%o*S9L4 z>UlG~!NSMGYRb2L)V~YwWgr%8!2neDiYg+4S(`ixQiGE%UI= zp_%S^biKULcG=s+=QA7DQ=Z&l`wrq;Yp`bd2!Dl>JU^Blof|!2S-`UT|CAMGfHj%gNSU>4aBQ7mIVlFJ=w>uKX^*YNG#_^VY?ZzXfFiMgmW*XGX0 z53=?A=+p(&uQD%udf^o9373Eqt?-fspNmdi%e$?-do7qhWdQYYCg#kO*j^I!LHEeL znGtj3kcc^;aL*89;)^N9xh`p(iu33kXAS#N+}qo6|zt_<3 zo%DN+`AF_N^zF5aqf>uO-`=Hfzv+`ds?@Z5s&wUnc3m$@zbb}Y^`&RnCmA-e-_pS8(g^d2`cK@&H>i-~MdjsE` z3=V9NO;>fO4=1r-4P?#tR-k|R>t_FQom=!`!Rxu3ij0LXR6mj{SVh63bmZkp@Lc$7 z<4zO#0En%tDM?Ge`E32Tp{pN{a<13iZa>c2|J$Qex4O8omhaZO-)VnxATWG8FtB#( zaO9|4=5^q6cgKZOUdu2t-r?Qvvp9n=kY0WdV;aO5TSMvPI&1Y1I#z9UEqOv6oSKeI z5#5M}@#SgU1b%NmWS{@Q+TWpP{AMS&kaMyH7=*H-QzJaL=>->z zCgYYG3i`$+gF zK2m~=D5O87eV}K2;vy9nC+bF#M+TW(x4~#@{(`Z86)-$XA9rClQh%KMMnfBR(x*CL zEWV_Edwun{^D^y(jLg0AO|J;lJT0G*%O=Pk+*Qw3x1K%p9o=}@9_e`4QLO>!09>d4 zpw@owuUGQu4BI4gawp??2HgcccwfP0XU!ep`DD(X$>-{iZ9lzYC;2MTLBZSl6~=ml zGg?otXtLqz&mFO4sIh+w@9SQfv%^47^yiM~xVkU7Fb9#>XfXMWGRSi@1pRI(x^yOW z_f4D(_HAfKfBV?h-vSM7U9wOx>L%a>ocu^CvG%0@R_d*@ER zfT83c&^M{d8^g#oEBo9QBTViOyElH*vC+$UdL{5ye`MDP zx;elVH>Uo}@2=E7AKK~vo7k6PZvT_Z8$;MvRsYRELjHC!xBsOV8b!B_Hi}~OzZBhd zIsKpWp|NaEtCI^n`k=8j`k=`#uyr}U01JJa|^rm zA=Z6y8-e2v^i<1dgAGDsn%^p5V*wlV+0MEB9H@$a08 zp`*QI{BZYGn}bhYdE{%#0YbT8VE<6^thRiK^P;~^zLKvIw@*$8t>Idz%dCc`x&F<& zjPWj`Q90AhcNINIMgPV;lA51cKeW10GzI}|`b1iqVhRx_R zqqy2Ro9^LJd!C+SW*rx=EiN+NmmiAVj$2m$^XP~Cj?3tu>=mb1%!00Ng1%-#XEUI; zFOx^?OXLyj>)M)~oEJr}v)-UjiJQ+n&rWMvFLy6{=Hw4H8YV)AI(N7ZKNf%f-a5@4 z`FrJmB7O&7-=55WlKH&1K2vUa)hD`u_q-AOa@V}eAEw#TygPRH^O^TlWmyY5=N6c0 z3H5<|w;TPk#lwX|RlliF&8*Uaw^{95?6@v{Qd!7m(WOxtB8 z@}}~?l;172CiE7 zafZ=$)f1cMfo4>Mq3x8=kW5QiJol$wixOEZfBV{Q({_?5?qiO_v*uPu>}*|LrKF zy^ek~mvL?q?TSvOsc-yB*o%l?9&P+R-<-s5RGMK-tO6!Fi@X534jY?iR#2`b2yev> z0k4LqI(59mS#3k{8?i$6`nAzJXYOZ|PaeNysbr1zvziBYjlY!fhh16YAHT|1;p-8$ zWsTYGthqYI|1;@6$QpF0_DRSZjlYiZ6T4c!lX350+!_~p$-)QWUz%qF+kn;p@k>~% zVRK>~GNiPiIkzPkF0`;2l`+=xP;+jq-Wri689%ncwjCMpqkQnx8b*Dt?Fb&#nCIF8 zJy@0Y0;}hM6>Zz|z*^s)2NQYmf3T-zjbY7*9&~cl_(V&9xb^Bj`<16ibhh($Pd+*@ z-?j$Xtg%!~YSY!?yrE#0L;v;AO#>)qKFMJ4^ zPRY+ci>y*T;%8Z$H}YBf@k^WUu|Mz)hnFSut|}w%papL-zJvW0*yb5#>n`Zo)1?Cz zIwQY1hSgfab7QWNDB$;#+k*Iw_Vvde2eO!9H)>59{?bV}woCrVVu&$PW7yIB_ zpf|PWufx8l9e=x~uieK}wCiurSra(@ffqI88-cROC)XYz&uik@$t4f0e7tL~KZmuV z;#sooz5ah7Ca22fjivp&bPf~W1@Xos*g^c|^V5xO9kz^n!rtp|cJtzBuiqE}UDF@V zbE-@OE*1D0q|uLb`mt(RVOtsNeC1eGT!H)pYgx;pJHIiX^RZ+r#wM94ZVI=)%3Sv6 zn~UjtZN=Sfn<_4D8^^hFG5FE~&c9n@rlk$w{hF044{WVi&~`U#6Wu>waZ%d>_|Y29 zz*qo3Y9-fS47sg79TOhXuK}!s1*5H8v-l=^<;utJ>joc3o_jGu-QeT%g=l2I(Sc9* z^7+^mJsm*45MJIO4?aVSGF%2xBEF`?JxL?K(CnxS<8G(-tJ~{ zs}%=S(;||8_P0TFuDU%c=9o z^1Pe0ewv7GqkdV%RgGFtiq0amJ<<$4eBU?NJ9p*xYUstAGwpf&9+~+veb@T3**;&^ zSznfGzr2TUs<7df4jNfo!MsJtd0hccS3GDYh;Ms8jDK2%dw$&>`dCAId(Z>4FR=$b zAR8P!!20Ts#80q(Ec%^2<}UliO2#eQj9|$aGOQ~khZPfZrkwN6T-W#|lLmkXvWuU2 zW~|Y0^e%WOW#0Q6;$w*qk*+7%Tf(z?&V_GbEXRVzUhR{F46F9ol$xjWjFJzsjGCt_ z&_g2hzp%+jR5D+R@!3l(W+gcrubEJO%3z)&N3eSjz@HeJRK4@4_i?x0{6O1JclI;h zumA2Q>Lef6`1sT03vYdvveFOOXR!SS%Aqy+4a~RcXK2IY%z{nS0_dN{002_n(4N2a(c`xDN6Y`>0>d3&3^4_JNsj!<=8Dqp>I1?!#s z%|{v2dGzC4`~;q5-_xGcrk?k}Q{@aTwQPPl(Z4@s>*>IbwN+#2Dq~1mNp!~Ejvvp2 zzAE#{-6tKzVz0VFYXo$ct;lT$=dv13;d3MYCEJM3#n^yf>hGr+iRRpBV||)aUitvE z^M)szZ+H;96*+=bChubQDzKH*kpti296$8Y_IiGz|7z$+IBCo5(^ns;f9k23HBU7z znomEBNN7Z|9_Q*^LsCA+HlOObZTs4HmCf%r?Me0xb>!8H@bsF?s~Y>?AAQ_1LgnIz zY1mcEOQIQR_uv0Gdl`vM^!GS0TniuBYT~ym`k-7TWy-)Gm3jNqj)|4n)nm*vbl4b| ze4woI4cD;FD&%=N`3b+-TN-s~+vh(Rz3#*Hk#>>4uZ22OHfwi+U92jIJ>&#yC|^n0i928?#qNp4kW- zoOQ_AZ4EVZ;b7HOpXc2;ehZ+XkAnjmw8xdf{SBNM`AFs6 zJ6<<4(jTe3ct<#3r3=3*@!6fT(s*C{!HOHkkGql_Mf~sI(82#T=s+FjfXcVzZ^GOh z23LQ~?>*DlJDB~Gyz7kjS5sbXyvMkdn<-;p^n(e(#M6TV8G8o@jM^i?&%-;7+6hKR z?XC=?);Me?)PIv-fL~DmjllkZVeTJeMX&!dKiQEcT8FNm%KwMf{NTpEkGyo_cOThy z<9UznxY2m%2lo^_^uv3mJ@lh{?t19&NNdz5F=3kVlOyyo|Dnw{M)}RS z{5tpT;6;U!Gu+R7-b@$VGS(vd$wR*FEnvKLZ0%>)`x2tV?AShk@vbM zzSkb3-dB`YOs%1B5yrTtvSJ6kHDgU>WQX{Qzu)u8$)^6Q-|*RVbiMK*Wu@CIrr-wc zbJ)65R>MD`pV+(#T}QfM^vw>=crh9-p^rz9XDU~W{Ymz#x$vkrrd{H*)^xW!KWygSWP!mvxV8=R5gT zonCPxJnRN|+4bPtoU_ba z<^7Hv7tnOQ&MH0P<`?vxRf@fjJ(})kWqQ7Ztd<^J;2uh3V9lKYi_iRp`C4le`ri*D&CABXLQ^h?`yyO;7)E#r&zS zn}gE#n4z*VvwyARuGXQU0Y;;6FBD-8R4;u;H}2NH<(?HPJ89>b$r;{LAM1dva?wk# z5}u*YZwn2BcHQ$tLzeV&(_XKtKJR?c-fZxKGcvzD0MC*C;~eZxFVoIJY}wb0pM7dB z>mEn1Cr?h6<4Yu+{1R*{73j2KzC&+mFNBxPfrn^4z_24S42jO9Q-aM-2Y5C-d2Uhc5I#4F{4CLF0 z;wP}l$;Kx*b&dgF&hIh?>YK>=)GjZ6n@JyIz(woQLds7EKK;$m-de^Xev2%q{3X01 zGGkn=kB2fswX)Th(QY|%Y{9Vy9!tyUUn|{EaypMVA$->O8I9N+8!h}Oi7R`* z1l(0z)-K>M2fxBn`lPni*9Ung9dT1XV_`Y|Hzxv_mFZmbf|-@_ebwA-z<)sFPmU?k zGmE-}E3yl^YonP*;V0MOPpG`hCl%8JJr9R=PX#jz6~kP{`n!y=Ob3=B*00l+|ZGNIe~a+}79dPf;w8{LcLASAC=Tj!f9_v^_VLvA?_spJdiA&G^3@`vUqqzOiNa zx^`S{EP5+glUod*x#)*$ZcQJ(H@7u7uCNjwvv$DV+~)vyv*CQ$Db?*uMO4xVv=yeM8!F<}j%bpD;4Lk>r_m{1_|FJnG#`{~qiNb2( zwAFeIv?p6k;g)C-e4^79qcM-?EGpT2G(Tt51^&)K-*^ieKpzx+4e4yheb=9NIDXo+ zk^FA0XpKH--ownhN9W=XqI2oG9*xhVf5|kymT_Y@>ZEb;pc?RhobVm|Z>4Py$I@*4 zmJQ0n|9ZpI;$ys`a>)8 zBQHGjJUm-AFUbZEAFl@=H@WzDJ@~lE#Ygd}t@vOrJU>~^3O0VaE#Y2t zJBwJ2RCKGoAIaH?(4h&<&4aJnF$CbHHs#`rm?7To@o?pqP`|b_-#Y{7$jB&f-UVlT0$VNUL^OxqxIfLF z_q5j4qD}D2a%EWkKYi;!8hlx2sHcs7HP^2<&PQ)7Eoij)u-;qn;WY3b9%J+2H1J+F zOYvdhz1GDc+KU(l`|jj&u*f6B+=uZsk!~7vXRJC{Ove&ER@haX(@zs?V!Uz-;^`#|(Dc-N2|_>OGUpM?)x&)Vv!_FIDZxPsre z^f@~pn8Uu~oA80q&Tk#?WOLpX(GUEx`T0>@e9?o${K%AEWive4#tAnDAR`cNdx?Z zoQ^X+K5#xb-3(sZ{X%z?-7=h{kLB~MH-2#le(_uQ1%~(x*};Z`PqKrl9r@mA9z5M* z*m>}YU`}g3IM7L(@D4{_uz$-~)6O&YkArtecNPt?&TEfkq}lp!8hA4f-k}(_aXuaH zddbiF^br+fe`e!}-lJch5wE5?J>GGQ`Ip|9h8`Mm_0ZmV#}n|5EO^Jwr{*T{jw9qf z5MDjHk~IYULg&5jPQt6%;8m*q5DU4Y^`yp*{bH|RmC3wmzejr@Pt-X4NV1bLHCFIU zIo&5~)f8qsZdAI}~CBSbx7JUxu zhUpWYu=VZaI6uh%@m!a_>=@~**E)5lnrrNuZH2(zB2LSPbG8nuK187#(XXFgKTmzE zn`i7yGZvm;9iz2*75lOamXhxexFq}LiH_Um1h9hyv4`}*rrVcu5Y29}g5u+%W39D+ z$~fisHD%Xp? z5Ke`fy1qLCPK(!y7x|yhrH+uhw`sWb&7;h1)TjNIJ?L-jEzBCjw}Q3gZD7JieA0(D ze1VwNRJ^5tdc<4&JVN!%ryl97Px^RGL3R?aVIQ~Y19E0$!D~1hTXdXUPb)gWpUC$- z30>iY@@O;W`S>2GY?*28-8tmp*5lAwIql8Iw+9>DUJKmD&XjTdi}9Jq&CQEAAFf>T z_XXl=j(pm&ui)^Q#L;g%_PD=ZhW&1^V)vr$$MdQh(}@`h!3$P_htq&#h!~19aciTE zpXl{H%HmXd=qA}USsR{%EZ+COshb~SKGqT|x<|e#@XmC2r|d0utSD>z7vKx5iP~R) zNA*wQ&6@%tTlT&Mok$PA8~9^uZr=)i>}1`t75vb>6EoVsGRAzZfsech4^<4PbnthB zYp~rK3m^UAqqp8jyv{qpOA23SUHsmF*K-H{)4&n0O&VwOR4-<<)3y!my@)<`$n0;g zixn&SHoEt3xo(Cg|K>jVK%Z&ffhKJmr1qJm!-cVD9An+=?JqN@`yvA-+WX5kPjmN| zfALWF{pBCwD`~%vUS`{FKlSe2_4q07Q^i{B2JfSB{Ht?bADh7Wx%ek0^DgP8+JDdcoO_NLJZKAR zTHF3Oprq}X@-)de>xNOaRzmAH>};}eGPhb^)?i1iFe7Qgr~JtC&!C&`izL|_)37(r zaqW$1@Ib9~B_ADoW2iyb5N(79ShZG(l?Z`L6`yo$-%MRbbfi6x9j^q)7t;?r^Lg-D z3)qF=vuW&|1rnZbIk8Ufb?uvtXp0%xx$nlW4jP7!Eu5?C3CCCNF7!yPdxOdov2IG@ zL(U^T`Y3+b57x}AyX1vMEnmdGuJ*@Xd;0K$eLe}__1Mh1k}Zo`Zo;+n&N-8!oxHM&4;nKfddeV&v3T@T0i#}iT`gB%({}8YYub*F zzPhdTxvSgWdOo`B?Z1gG%VX`5ZkJX~#~&Y~{X1Z{T|VA%V*b4T5AyXtxqOrywRZo_K)3#fIU{^> zzSI9OYrQR(vOa##SXSKP#M9(g8C&zKOn!l_oP$M7iIKRLy__e2#g>_@8T*hk$Car= z|ILxlS^W)LP8q~-+vCP}qwc}4wb{JLpDUQPjk9Jh1GlGxn?#oA`&BRjU|~*@KMsuYApD{3(8Nfs|Vqs@KKwG%I`IqhblL>cqr#JoQh6I{{#2p zE)Ugsf6jR2OL`yeX5WARfsg20_r5zm!>7;#KcufuVB2Ny)*15`HRha#0&w*M?0u=e z+kBlj-fVlk(LrY0sdVx+AY&|Kg#(K--)$#${KH^Y;m#q(!aI>&(q)v7Hn!-2$3mN( zJ(gnjWQy67Vb6g*J@yaTlPPoeWaNh`*%umY)kX@SXMC26`0Fnc!Gu=iCqW+aZaa|RZB$KIL6pS6DndgxyjYt*y$kNm}= zh0gvZ!RD#6z-C(yZRf+Q&(?O7yxrZ}1~%Y!W0*D{m5y*BenGCUSS|M-(l_CJ#~eS- zuj~=$w}b28g^lZ{nA_6vUHCq^2Yk=}e0O~RD45$&H89Zj#5AKZl!Wi9)Bk=kGF*7h zxs`=A&|~qka2xoVI0PT424^`7>5ZxA0rL3>GZw|fhM~!@8xw0G!-pZm6{iGkwdY@E zwC5qiiOnmLFOY!@H;~~5G8|fMKlZ`O14c!pP5;e`iZ;RK%b#{^WFL?=b6O8G2a9>v z2u}#R{?mSa;_zQOoP2?{AFktT{T}wdRAsA9b=WcDlGz7$IzA)c?=}xT^BzCXK~L%A zIlrSV`flrK4sUjNl`*>e9JDb9#-qWutPyAO9REA?m5Cpv;5l*eoT^Tq(+1Dshkit^ zrS3c@)7}TJQG5h^C$F#BhF^}&Z?M_nQ-(bqSsQ|HL^6ighKW}wg2xnN-_6H2Y&kst zHkYR;zq{oBY;a^%aAfO!mwm4rPx;R;1=oMi(17XU7QOo`t|xD{QD9((axCjFLdl&ncT~V z=(EaWC%)W~$K_|>NtX;ah%ficD*`{ zp58?hgU=YNLlbk;ym30R_9J57s|E(!o|t?lP59qocbX`Elq`pv&zUB&ZJOAVf+nz! zy`edOgE5N-X$`OYjqbg4Bm+6DXOH=x;VZNqe==;q@0*Gd=l#RHkHUvCsWS^bM$dlE zvv8j3o!GXX@;d{WttIf$vzx8jtg=JXF$Hfp6aQ5b@Ll zocF1Gginw|;v;fMXg!fljG}Gl#x51I;7jtMf=5NLambeKe>dHIr+vBPcNOlt3in-K ze5AEj4N-3ewr9yD)mwufp1##P*$1c8M2jjOi7tcRWfbBMS@8(D7z%<5pF;;@%{eQ= zv*Par7v9PL8ekVOv&zjGk-bxb#$>@+dqv@0*!Izbf6ucRb;(aIMm>v}*BG|Vnn1RF z9=q(Yh1l?wi?0wHcbdkDja&Um<)0pV*sd!h_OP+cYij^)?fRr+lJ1AH&ffURc~jhS zGgQvs{v^sBM}GhhUMhHDw2c>k{)HpMni$I{=04eu^$~eJG%u-aOeX8yFmTrTU;CV4 zd|WG#v5_0b)JCu~u?O2e4m*?O+L_|`dB@DKZD+EuGc|x)iYJi`$J@hA$Bw?rwKJu& zwwC?209=>-uZ6RqxoXS=7F(#F!u#J`AD^u$0cWl7_ zNBt%rhT`zuc_*&MU{47gVBYOLX%`PY98Jc3KmI1;zK6e)d&6IRIy&)}|7H_@<1XHg zV*Zz-&+GzkkPjE=|l3Jyb9T#SZj_zp3_ElJQq<-cFlUF8)?uf>iPbMjx@fiH2Yvb%`2 z>~LdIL-1oeuEh-1TIj)Z14jE2a3d8Dm`nSqp3CmkW{=g$G4Xl+C)08!dxvr6E~{zI zj_0$O~3J{4!5DUW@G7GkBff3b7akVW~(zc_kh%pSLs zL(}~7V&bs;~?LW;2 zE^~l4d3AE@9=ML!?{MYj4}dqgV39W~PVSZDxobgwTgdNYTqDSHFGr%DOTI@;BR%BG zbc-Ae##8+|<$oUXUgbQQZy9wnRZrN}5%LXVuXF`+gr1R?RsPMfekJusu~W)E)q)P~ z*?pRj!O;5pkX)rBHDM5 z-N-^7Xq~bJ98^BACAPgvalhFOzqp<}V79#~8+%oDZ5{2b4`kPVJCNOJuiC=-LUqhx zs(x3|Z|TQ%K6{m)hUuTZKQapW@X0rShP}9_oci?BvUQmK_-e0{uXeFXY!EoET)DPC zBRGEq-9)iS8k^szMYvV~{HC!tei(h2z4{s2%jC>I;u|sxWtUPJFMjmjJMbSF=;%$z zczeIyt78InNLC1M+3Vh~ejJ8|L)CXU{lIs69`~Jlt{FMC^4%!FuPQ)Yo^KVre^x{? zn*Q^?(&U~we&dUa@xS~FK2+52wf#8#bNGGFamRWu+{(FP1BdK=58z_7|P_?P@6<>M;(RDi9{KOXJblRPieWL@lk zp3i=qf1LVW;~c;^qu6JDC3%PbDc=tH)R!&G9Wv*u?B~&*{fzj8NXCfTNVRNvX_ZZ@ zYr4U)fc;wk+!0^2ajxOa-7l%zgQNE4ddo!{cIP?9*g^xa-5~cW>4QI(b|!uxJ;l-@ zd)F0=cj9~{-)FCIc$Ce9;?ME_L>e@`sY&6?hoe6emPe>F|*%Y-9GbTbyV8c$V)yTk1SBc}C2T zQ|?LU*(c@XY4x7Hh6z7C6uTgJ=2PGwjtG#~)R05W2N%!^>oh>z5ZN{A1lm8Ehw$klAl2N3mqM zd|67liqFQlO7_RON|&$WDmm87Rk+o{)s8Kv4axp6S9FtgkqH+hCN7KZ==7}wcf9y? z&C4!u)xy_C^CH^Oyp&Ma6ZpYD{I7yDDgOQ#SrZ zx(ft9@TC&DZjBv$Qy5!*A^FRrytl{9dt}+d zW1KgP9%IMa$}ZsfzJ-V**7FL=YYmvs)umh8Un-T%=!669`r$ASK4bxV8;0mD@((~x z%73CWJ|F*y&iH(rZe9P0yYKIU74l-{Y~t9_iQDZmzjV%2`g&5C8z_@Xo_lnZM*l+4 z(Hz!u+n7h?TEAw(tW){GGz~h!Z+DUA&QC}4?}K;16GeyE6}L%-3dR<5F8=TeV;sfY znT*qWhD@JTNL$)JPpf|T=~nXFc=0rMQvNvcgTh09d`uy}Gm$M$d`zmnm{jpG(`iF> zsUM1ui81HuyXe35`|w_3$$Y+V;Cm z&{ZvMs4n$UbEkE9v5C!_^_}OBYYkv+#Cj$CWXbY$dtZNO!w;0t!No^(2<%AEGx%(g zb3b_PhF+`q^O&lLr{a7es*2@keSS^SDcrg0~^RE9-k_+N& zvdT|mo~*hCo+$q1(b(Z68cQtc8q-|zHE8Xtaivvj9zw+L+ z+#o2qfOaO)D#$Hbn+sl&pl!j_3s#e;Z4;vH!7GSL0<|58w!|V@Xb*|4Z8Fv#Y^5f> znP5*Fw5JEKwY5Fxm7qOMK&`eS2}<*Re{1iZ>`W$rJ$*m#AM=@+eOc>S&wB3bSwu@!Dn>L|4)75Lx1FO zu93zdT)zfy{0ZG5-XNELPA_&u!W}cIHI)+mMS`{Y*qTeArHi4di^w}#OwN(*SE_ac zd38GiJ;Z5Oujn^=|BRu$$)UPDpTB#gPPm$LYLs_8%u81tt#)_`M@;dUeXb76YZ$J> zw2L{a1h3K$p)q&`J18|!@WJ@#QV)Eh?{ftoFoJp1*_t!8S5l6Tq`H2eSOvHw2;obEpN&FEPSyQhhX z+55A>)rP73c4~)8kGw-(e>dx4vb~6Typ{9TM{QogS7^s}>?DpFaB^X~6YVvg1Yj0^ zq-S&v%mL<{8u^=!q!Z6$FF`(QnUB)ew8f{Ubx=B0^-P{4)w0h{K>Ik(ip_gi8T8l$3X)*Njf6)KU9(rkwp_e7H5vg&v z(K)~9xi1brqWz&>`!{$CIotG&O}%$JF&V?l&idp}e>l88d6eHqUiaH;+7ppu+b{8N z9`q+rmnng`sUN*J4*houdJubR%>-h-!+Usw%&+uR0Qpr3zp@YFE!Pi~-Q@03ujlsx z=2HBi`R~3B7^tbN9FGBVQFOhS>-AggI8P)IU*SP(i z1%p4dR@Sn%@Y>X}yVKGlTU!%43#`+N9_ojVr}?P~NU|CO7or22mDe3iZ03xR z5^yE?B6xMSm)1DeYEIzkGS*QPL#cz$@po2s5r-;uc+8wT#@?7e{)zb^zSNgx@5@1! z4aFCP^N;erkN%3mBRH5hgK@o-FugI8YlAaU}Io^MkKt3ZH?r$a2}kA;we#+{$&-b3vYy&8+#>|1kKIe3s8z zg?#bG#It$t*qTeBmrJ0Vi=m&3prggqz$s~iu1s9swZDV3Gi(c09BpxY4vm+34x37z z*1X%a5hQmuR_~7ET8#g(Dcob3T8VwoqFXD`(7zLlNhFr&_0#`GzFw?NqPU9dt0w|u z$k{t3|MeE+LL+Ug&v?h}BOmz(@0)yvGUi3|#60Yk9*k$l%wis7$9#x=F!Ah|!{FG9Px0Rl za3Nlf-4p4?QM3*ai>oeT?V<_MfaX*1e9-uF1%2Cj{=@r!)+x6G+*PuF;04hII1DV! zHEZM>!N2kxvcO?r&c>}djAdS&HiE2K1X;6ySLRk)iFLAN!@h*N9=;XxR;?ECfZz}8 z&23aY2E`ppna3p73tanYE$aprFqm~u)(y@grc}Q4tj2QYM>Qz|#Kklpu`vtNE;x}c zw&Anai=_W5h(A=ZrszDgSI@-aAYOdp9dq`X_9WIX>pPWmu!*a)m&oM!Xy0FD!zpi1 z#HUbBfw6V5C)+NHEbC*xANZ=9h&|Tz_rbT!UO#FWh`(;GW6dPVUfbw9wZ0?Dnw{$2 zi1v_|szo(qn?Z9;4}*Wj?Ii=kLwiykdmB3N?&WpzWs-yB`6y?n(8>L2R=l5US>*og z;&(jzEbp0N`|MnF?pXGja0u<~EhPRSU6Y7yS&naujIAh3vz8W4vgYjOw`*U9i)~+2 zu*a?okDQN`XbW?tS{pNN9egA1^>IOq#f zhv}jh%bh)|g}%f(WbG&#{_zU@6J*96$PCS48}_E)%0lMe!1(fk>(F_PTk9?)hC=+a zgf>(YJj3DtSi1LlN5xMpk{(jg1mZ4S~-P_l_6WbZxwHe9^Id0z)%5*)+5ZKkZ|;!zYX%c{OT%P;f}j z6w!A)e8x);WIij1HN!x;KC_a^bJ0{ zEbAU?Ww;@dsn{WOzGQ=H*WU{*t>2Kjk$3n#r}w;#nOVs8&{L7jAn(;oE|y<7Y)dhJ z2448ewkd{nLu?+7d~2`XGBgA3=QDTmL7!l*QyGimV%Vt38jJkZ8pe`tr6-dAS*QF@ z;cYj2bma?c93$Z2o{K*lo{>2<@o@JE+VAye8@$A`t46l>PZ{4b@A%HO$Cnpxe9YSi z8sGl{=ObWBvSBL!XTTIc_bfgwEPxi~GiKs^#-0#8uy0}nJ-kL7Im60Ge8oc#=QoA>ATnQ(FPal}*4(~o%SfTMqlxfW&5r1+_i8hFYP z%yZ&9@KvJt>csRj@|@sUdQ=}Fr(e;(;ArK4uRnE3;H>VnX|7^LL;t zLdJGqXl!@c>?Qb68=O7y`rm@RdN%wOz+Mkvud~0gPWpL}Z{2fkb?-aMGsxy0W3TO9 z*yz1igsm6Iv2zyo^S&+bsZ9oKinE7-$D0#`-GG0Qwj@!sz`cBIeCpNI1$3PlacC*^ z!5ge5Zy!GLgQN$3$oS-6O`@NGm7bJ!KQ%V_%^F{aeWt@`xnTURigCvFR$c04s^5=I zUDEDe%ZOgiHKW^8PchFu&i}D$s@Oh(op-m9bJlBAYo4(bhB-fvJ&O2Cd&=*a+SEu6 z>SeXHi|T?C8>@U-FO>m*;*{oP_--pp#fQ^V^L(dRb8iq{$1A5awJsZfA&?WiLhB2y z(#gc4Ysc4jgsEwrSXLC`S`CUgp zZ?D8w_r%6~iH&#jtm4jYpL3l)bsfF2S8cfc=d)(#_WAHopBZ_Ap^5+9^ie|<-q>1D zZaoj-?}4W_XRhVDu4{8<`8C$m^6REf-FSNDd7M48r2M+1yu{Vv_BXL-WhWWikh9Wc z&j)6ce}i3^7{GtKUwK*9p+43;g4#Drzgj=hJJNLlo{{YsFAnh8Cy6DpmXfpo3`4K- zasT7C(RDpyWtSUg2`YAi&yD@EM=``c>@(%-b>e>p#jncOg9nv&yMc3I#lMv~J`=ag z;lA{<&-h{{m)_KJN3Fmgk(^=^32JRcK-4w7SMpFeSZyUw4Gj?M#?5%rnkK!S&;b%cc@fOT)%U$JWTe=9orYb~?3{#+%wo-QId1{>=VA@P9e$xQmI2?nlO0 zKTm9`#!t}vJXK5{8`szJ{YRc#lfphGJ$J3uRLnVcy52d3vvY_CbN0@j&AU!(IxOFR za#GW(*B@N=`v<>w>kYGZ*SW*{NK+$k=`4N+xr%( z7Q?i<>|pubs=KQGXO*xn!FM+~zB+f*mf>1sN{bTL+IQD|#@{o0kPJV;f3LuI@)`a3 zjP5%=tzGX=Y0^7y+zUOD-**jTyob4ptdCjKS#0fG?={YaiQo%JKvbmVU+M*qAMqyIxadY*Ozz>vsyqLZtVN3KdA>n4e349DvO&`+S+ zjt}TuT6DmkoYzyE&T#OU%C{Sf4Z)MQFpg*OZFAoltjNRfJb2#5txNE658|WB&-F8o z74U&uyEsa2){`w()0^bEKTCekv*hjpT-Nej9XkY|S;$<<-#VRnX~`(Ca6O|5mg?zb5|s#UjqZ zR@{pB${2&>i{2-Ou*Y5ZwSc?aE7^b008Z6U82uAw9TVSdpv|e7;+0R*$>MJ} zCM}ueUemcr{gpo8N&r6c*4I#%j9hW!KPtXL`@-oo;DH_w;dGmtWaG#QkqucT7=Vey z?x}~7E0sB{5g?xm9XXW7`;tT2zxc!4;)1ph6N`ZVk*RMp?|aHu&TpEXTz*uwgi$h0 zM!!drjJ$jdxGSM6%Wn;>v9f;AaRc*PN}Un$)-VqwL?g&n;}bAHoX2&j8921p&COZQ zMt-^PAQzP@w@kSm@#NTDou-gTa}Uk_Xbz_p+L-8D?r*;hLW^zCmLUjO}#@(a0+ ztz_ant^7`7o`R09(SKxaQyXnPn~*|19&7}D8@b7K#mnQxjV$D>bm@0*ci^`)S6S5H z$Ie0Snm)O&`8%0h>;>c4M>rAt;2hPIr>2xYurQZ-3&!M?ZFKne;M(KHU-smD!kI(l z>YJapVYD>vnEY(%P|e8#_7oxumi^EQEa*GOYAT;hzH3=%5xz)rx^K!tT`T0jXvc+V zBe+TfM%~*uY54hg&(`s*ca88z$AN!8?RCSCS`+Evw`lCA#~Fj>Pw~#SkKw1{m% zt>xxfxMQs1TI|_&?paua>;2TN3L+a4;l(6)aU#6Pxi5?Tt`6H1K(0s@wyvMi@7f5m zQike);rDe z5x^%gfMxG6=27>NKZ(idjpg_em5L?v-{!ycD7>`qde&_v6Wp~d(XeDYafN;H`qP;s z=*~SmCr@lbXC@~uU1(q_XRX>@gKP$FckQv7{z`$}s!*fSGZ%Y1!&|ALPLQzFkuc9+ai9?`Tz7TT|Wn#l)odizvepJrGP2^B{a~{ryezHCKF%+X8 zU%>wpeI6u-UO1f!ea-<+BfIbqax^zFW51WNS7FD$o>bIv8Ed;6?wxW)BWE~Az(Ci!Px3*JfbzII8J7*pGaj)Zlm>N|2uQ;D#sX^v_=!kEs_+M?nDA?$*?XmcTc!YW`&$36 z&ldVQu`WuF&T;y2b-oLTF!}w1M_rJIMUk8j!PZIa9yZYb7{SkaB$?)Uh{&ffU zqJxth=f2o}-lJA4ew)3PG_&3Km1E8I#L0%H5}4~5C)wW*o&Map7GArUS4()sRy;tC ziJALz?Y1rE{s2Caxpt9#?Y&bRdSE{O`ceEI(ZirUA6dYz+)(j@?1eFDqQ-8k1lV7{ z<>ct}OL1Utz+T!b7%X6iKT9^-?P|?}bH5DTc45DCd!PCF@G}#5M)mZt&-Zxk^BnYx zY~f>TE=T8HhVEU04lc(&=X|2|_W4BHFT@s5pNnjnpmPPI$Qg6(Tkf^==;K@)TAs{bt6E4f*QzL%_#Z=t%u%C#;>r!RT1sNLvU^j;3v z!aOT~q70oGyT)mB>U7`AV$Np~{CU`jWuHdRqEntg7viG~l+Us7FWCcw%tqI|jm)iB z(pA~M7P@&rziD?Z&nKaKh;OW9{k@{JxUxT0dctGl<>UKGFP59Lms6sb;ji9AyRO}_ zh%q)#>R%W|Z?zh|mv~4#1@7iq;7>M_@TzMTYim{DPXDFz_OrgfJIPug-PVKb7msLN z`@gBZO64b!f^`%d6LyJxGb{%m*>durGNulH)HALZIZE`08@jB$r@q7^UuSH`FB zGfp8V0U2>(`EYuFG0)d4&gR&+iNGq_lij+7w#_+OoPEv*^KyyAlGtTRmHx8}0}I8e}(?FE}gIXf%LESj$gt1>Qgc%#MqS=C*IY$9!c1X z%0a5fZeIH}-^wC=zf4XN-(lb@PGw?d0mmufiZSYN5Pz8@CRumUhBEM>&r&+&reBlh$ z>PbvY{6uj<*(ug}L28z@uD@;+f3@HzSm4ylV=jLgzLlw=N+Yxs5T`dp`?N21 zxZR=s9Pc56+;#=qYj(RkN}P5Zxb_OyetiKsv}4o#4#{cFN9%f#1|C8LK2a`{2e4xc@ddq)mbUXI?c3&1Bt7ALymj{U5O_^$+ zIrob1RFix3EHd!Bw6FHmpY~;HA9Wa*%J8Gh7@M(?CfPbZ2i@uNe-XM|^eGw87b63@ z8CUKvv`>h5HqQ_%A27K|apZv`gH0^Zp4X8%3YDxo`k*JHJN6IDfyvCvSo6&q?542q zOjDyCo*&}P)R_4`2CcIeV(-zSj!S^LtcI_h`u5&;Pw~7fx_Fa!Pgpm^i5JT@lFqJ# zXNXB{^2Vg{p^w;@R1bW76?juF%G21Y`Ag?DuI1gE6vyJ8Vp7<)%Z{LnM%{;3^OI8> z>xfCM)gDp)w>b8%Vp1K{*4Ns*YnSYzo%!s2ZJBJ_#AZ&H<}_;UqtJI6Hu2R*i@<*% z+1D6w*2_h=djA{br%JEsStq7Vj&6Fi8owh7&#)f+_5gOKt`*}mJh05xfkMI(0BUWXUVHMzblf-o~BI&x6N-lhj9~&+ZPWn)#T!Rig9NF za{_Vg=;uzm!rtr4x+VBG`i~skgPir4=SyttBd@R0;h{2kC=VW50uKc_A2I+BX|Hm; z{JjU9{Jl!}MR+KLhs6JCPkoDrRIgL>L!IDd_rOo8$0-{=-Hzw)$nnI@>&Qv0_hZ{R zF_B18ym)@P**CQr8kF3pKjQh*M#b|bZzMN0H$M7gzL&k>#A%J)E4!HZzvS#a#PbDD zWH?qc07#$>B zq8p~JA!gRgI~l^EvsR)1(uaNEe9(!__40e9Kjhea=t*PqIksy6TGexITvl>6Pd2{u zoLPHZZ0o_z{_FcSZuvYq58*a!mn>`AA^E>9AFF24&i&*f_^}%-@&=NK+j8Dogm<$z z7uOzd<)S{$G8Qd_k=wH4s+gw@Jd?-&MC7>Ww4C#d^RU$tF9xRRjQ3(|K<~S;lU~`N zCePSf5ICKD2hKsS^ke&FaQ?L7ASqij`%=EPweQ2$z~PsI;oe+o2s1yixd}%S2wuP=o?;AbZFuY&cwF|XhS-w^f z8_TR^z%R40`?{FtK$kt|vir(_SF$14uz`9i|L^BH5Wv5K-iwFwak>m&nsKf=t*MxM zPchEeF$!j_w+U8bcNyEa%+x9I@s51|vse>x@m0;W?X(j=N6_AfkWS1a&7&(Hcj7gNv}h{p5;Yb?F2_+NQ}m&ekgg^W}1TY}rOcJ0_D zhQ~JM6?GgWm#S3jL&%yM=1=<=^q%a*LVg23J}kO&jQ!c!@POH$&EB69e*1*4m|DCE zw3`?8?Em>Lu#K@l+q;*+&Am4Ey|d@lYGwY=2VJyzA-`jD*;Ut1IUqM6!&K+bi_;fk zWZ0j{aggt$GXRxuG`0*&i~be4Avx*lpg(^$K7M1*6O=9R>WFt!qrd0fPH^hllHGB0 zFw&y8IX0oI&)wQbZtc&}V^1(+Cl}k)UJM0n-UcA&{EPN?H~6BpAS8PP`$eSe%9VDh=}J)ZW`U>cHb!#T(*Vgry5wBWNZ8iOhXCK(TkeG$__QSr7c5Mdcofyv0x`}KX$v!Xqbun@&9UeNK zT$(*%?$e^v$KV^yjoaTr|GYfqn^W^(&ac3SaIG@`a+2lmUMlk%m^MT6o+lj_3w zw|`XrF1D*+tg&OEL;Ia~t34-X*~M=+7W!*sx+{Z3W6zL_I5G!Ubxo~kLckh$3_O!# zF(hM{$Bu}D;|OyqzVzWQz5ea^IzA*nH<|p|4djy(n@}BSwQa`QGPMc4G$o%J$mPML z#v)(VOFAR0^?ZC8a@AYUCzi#y%>F^*E)UH-tKZ0xt153^1U?AoIdWY2&4z2R+- z@NO?>d?*h>{tg{ad#7abIVr^>UWd9sI62zrG{=jeB1FAn$GFy@=_9 zdO_qGx_v~r&fej@5!&|7v#Wb*^1#E}_r7?K<_VfiYq6T{*4W5Rt)5#n&_zz|owSib z%uM{hO6^hqI)SmdeFRvaCRVXGaH?hA@lh`!jBM5(*Ke|J5W;S#nQIM%h}pAmVOjUG z;({c;Lsg0?Cax&L{t34hx0Ml}%lj7J#Q62TXfSW0&9mWb;v3BS^T3pcU)e=_d9+7d z?$&B(@`dHa1#5}X)x#?la+J{b1GG8J1hZ>(@H% znya-p*tWCmy_#>^ZPq?!w>e_IJh(LT1un;$FVUfRIQ7%2ry!bAowU>;nrhYj_)=eJ zJ>GmnTWRpB7Y5Zdap%*fnY0(ifq3wcVPj%=yR2%l;VW?O~J5pI9^?dg%tX z1oC>^HoFB^v2SlTaET9o%le$!sVT8({VwkJo+OWW;ZB$_+=qd?+CL`lV(p2L&YPev zxXb%F^}ePOtNx)cLl5EwA391gGPE@(F9(^rll?7|HYPoPiGB7h&({T>+L-B{g-Z;v?lNS(FHEeog!O$Z zQ1?7ECf)3{p%T75nBo1eb>evbPHGXd<4oiLd=fd+Dv0FrTYC%cr_RP)yFR>;i*r(J zxwyJ!l`9t`I>)yJ95Ke?TE6e|OsoWT$%u#7^+@+Zoo=Pf+v8Jp)ee9vaFPR1Y(~1wvZpJJcpgs9eK7SbZ8wh$*#Na=x-PteA-<*$fjN4Y`XLAVR$;S zfVsMadh83VftqE3HiH-9P{PZ@qWe_NpaCxFHJ#rgx&IjFdbWYH4TB38w6O2UZQpX* z_o;o}c}MM^Z{rIb5419l0P!x#q9VqzJr_KliOh{NzPFyGjVsybgj{RHZ`T-!9qm)D z33((B051I!|Ikk5Tt(P>D&!I8@m($+cf{EvaSK$vDwDI?t z)ugtCzn3&la9BdyyQu+FOPgKmhSy;BJ8k|_ZPLcyXftr{y)R+N3}*!$U1=P2i|R`?Q= zI43VDl&t>=$pQAUeUs-y*d4@TQw4uA-x1{VM#djRMoQ*%(slrurkWD^-vWKE=DEYz zhi#mNvw@say&GW7BNQUv+|iRRkA0l+%}4IH@~p|lCI3}>Pga7Ymq_X)?M(6%j5Nq{0Y#Wo-6%3ya7I3+;uv&*)8rLqOY=J3m5PlHKJ|4 z@5FZb9saS-JW=fkabN;cco@BVC6*+bG*0);5w3dYJoRuZ{f4 z@HXLH@KdvYp3aTk$=ILejD-@;h!kzMg8wi+Yd|s<{JHq8cVtg1=ND-%g@5RC7{B2E z8Swi$_qa|B=-h?VXup^LqTv?iDhoQ++OFh|+pa5j9->{z2lsjo@Vv$Uk$#C4^#zLK z%I$T$Up+bgy*0WwHU7QZbuT^sy<2oIGyc8L=-$lu_bPQSH~zh=b??mh_m=8jUhx1p z8p2PrL-+1J#nPY2))?M%fAq6ICO<9S{w3SbT7Yd3!Y=UAfp|Q$=;V03_Jll6ULJ7Q zI6Qu*!{fw%bq3`!)<&1Dg61SY3i$2vdoH?Fd@O!PUd;<8oVze2edponWyj6R+A9E!vA1GKw-p)LkQyEMsVzJHN6#a33$-4GTqwm~ z>84*-Rva0>J@dCba~Cnw$PEcbKO?{AMb;&lSU@BP*?i;Mtp;DRd;WMT`wqxc&ZMs_`dN;@r*(7PJ0Bi;pR+2L z&tQ#|JoZPy_PRFCYweU$8e z5`3x6`SdAX+)O{xeSw_c8J{}?I@-?JpNqlwrSySLV~s668vBgS2R(rAFL|JKIKiW} zw#~>My)(AJ-YLOG#Ya)zz(%g0s8(K~m2jw@ z{es8ON3qYQk$oUsXP`sGhte^dv8}Ym*Nh(i8vMEy-4cO+MLTuaWzg8Z(;S`ub?9ad z>(bjrH`pK>kq2eI8IAdhS;4Q$nJ%tf)4$f?yN16H^If*#-?Zoq;hFZ|U~DFqAUm8n zC{)ahYukXKJNFNn(?7j%+gkthLpMTCzvKFQ>~-~C$M&k&%k?$iB%Z-@yNDswB(eV= zIHY5${qPBJRP%lhaJagp-hpG_Cxef;?=I%r&uGhirV4o0CJ{fr5x)xCfp&-K3Yu6& zKEwf@Ki-=5@nrF|5beEK)E30<(Ejq>;JNq6+V5}2uUQBEKYVoUi|N_Ke;C8d;5amN z_L;rES#d0CZ@q0zD>~Z1_(Gh4R!S{N*?x-QolcHJymwevan3;7yfq9Rw(4w6U$8NR zoU#1YK$>zspk2Wwxnj|OZ~}6zCbVcQxn^RCof$k|zpQkZ)=|jo;WvivnDz5ht)h;! z+3Mf)wYMz+zYjgvs=9LY-9|k*)=&$GC3R%Yw^ojuUVisDU&Y;3=n?XPQjd4`lMj3Z z@Oxw5tp~@6yc=-Nu4?5>sem=Q55?tg#~&2W1IykGz}Ag#7;#|R;J~I@fJ0}d&l-Jp zmh3~pA^GO^8S(U4L#+zhPp%zL4T{^yeewnC5;d3LPH|PQ4d=$?4X(d#*Ya9VJ(u`v z6;?C_{3=FOIXL*p!;Hm?=TICxM}+6Yb{_a?C%|uugJ1U@%k}~BbyDh@6CPe34{mq- zF3#O|i{U%zi6DJ;JNVu0;8)M!2PX@z93!Jsqb(Cy^J7d~7*n@1Kf9Tq5OJ-pb;WJ6 z2ekh!_8c>JE@T_Huyi|fA^m@%+T5?g8}G92chrej2jE}i<3K|a_A~IPX4E0pcqA)V z_iWv_I`w;h?YOk-uLF0#^Vfs^^t_`lT5Sj6G3CM5!&4jJsWf#u5n{HzA0n;`-XqI>1rdDaqxcw-_d(`1i?#6daeP;JaDCUaEJl^c8GhZgp&ZOf?Iq;h$tibGiPn$kQw<^H3H3ZT&~BfvxLC z-rwTAf4()42`r^o;jh!5);HAF-+9Kp)<8S%GhSGVp*Pu%dj7A@^PySPj{{Ei?YD48cdPwBIM1Sw=j%CxuQQ1y<7Wl$y=GgO@4RD|e6{RY zS>wjP)_1)AxBI@|IBECR@V$xK*5d1jyB^r88ipHkso!Ac2>SHQ(NS~&^5$vP*T$wZ z>k_iDdmXu4L)`WeWOBrj$p^t%{fDeJFYOe+DcmVHtZ1NQcKxzH6ZdjuvaU-mAK;qC zBe{HkbL{$#T^H;2wd~KdZkTCxR?Q4pt7g{1OUQ~5b$$cI_S#)G?Rfo;Siej!-K8^Kl>h&p3~8z0M-E$Gng>1B_X=S1~Z3$A6!2P+T?B zf71QfIm>;sp1WCoc0631?!bQNoPQ23g0xq|{E&w+Tn~}|A7p;|@3ZH-=br@AYfgL5 z{{!s>Sa*W{hsL7+8cQHByvHdXUVrKI+5Hdn8Lzz`(B22Z>sWNvLOWi%`Ud}9y4rct zu#TjwczY1UXJ2%1u%B9iKOCcN@p2yc)E+%#NJlxjIeFyfxOq7)-4q$V9+`t54^Or9 zsdZbIZ!)3B`h**1K0QYN!l~OwtnBEU^^;phpA~BJ=f|CXv@Yc4)VcM*S;yF+b&T0_ z%8%B|CTX$jxn=X)g{zSF1y@!GKLEY)DDe5EgSqz5Ny9q4&e%8W=Z44SN3GNQMO8DK zX=^RNt?5-W74M2&?=rPxpy$|{+3Ca`HGk>O7|9h{xdhnd&&ux67_??LnfqCkoKNlC zoJnl7E(aYad{WG6h+jtI*Pg?%a(Ye#)7$sj^E(zyecU%N?fA!GipTSb(5UK+;kTJ{ zS-f&Uv^kc1{dWgmciy}BuQ?XaU3}8>JRC=hNAusMP2t%qr$*y_>^9~Chn`oQHcVW= ztwF2!GrsRizG_gxL@4-WN0sqk1dYa!J z=WIPkmsdOOmw4K-obzGSULxyXYUd*MQ22O9wK!Ry-|^Di3r3uMw_kY8!RKUeTs^-v z?+s4d`Lz8SFlDngYSV+xB3Dj%dUP^0PMqUuo5n7p7QkX^0hF-TQcNuX`^>kWL$_b( z&NA{?eBr)3$l6^I@rnNpZ-^I)fHO7*=l1R5R(uzao~j+%6Q3kPbHY`v=m-1hqB&(_ zp4WIXwDPm-N7CDOsA2O#>Fr5R8=|)@v=M|h+_9)Ohhh@q37x5>Z&!~}lr`>IbfK~j zM)MDNU=U5*p>Y&^ur}6s+7Qj&L>uvPf4udOGuZE-y?BO)D?Ze;i}ybLDRen;t$?#H zu$Oq?==~1%zQ8ZTt9QWzs)?kW{p-#inNz;(1GKe2HJ@T^ysH}b4xdDM~R z)7bN1kj;Ns-H1H=^F-11iKMJA70eopK9%zkpn2YQKRX2P#Wi5J$e zm&JN`*MMf%-|PZ3~!QT0Tt!P}3{@^9{^9p-*yo;h+vc++#w@ysH> z)##m1`7fF)@)gWneT%&~q7^Tmb@o_-fBFlyjGZ2hUK@XoRx@v*#df@D5jIDNwVj}7 zk~N+E&;&Bv|ar1cyxT{*Bm@4&hmSQVf3 zAzKuWj)hrsJ-yi43;qUt)pnf_TgInGzYg99z?VZ0C*02vq8;&qso#oz`9VH)sK!}4 zX~XPCQca~A#}>hFKKb^bm;12`2Z;3roOv#$M(Y>xOAr4ic0F-KFAnM){@dvA-y(3J znml&_PwV>S{mB0jd*$}Ch9X|};>JBo*{d_>k1?mhk82zD0ZXBecrkOS_0Z$h0CP>wP<|kcjAO=sQ>!haI8>vOzzdt6!r4N zV|O}x!jL(ea*FJl)(NbszKb2v>5<*tab>r?S1k*D;qL8GtoBXt?zOF7{QzxEq%8-( zd$Bt=DK;V-RQ@D;#1_fs+0SpuKCi5D?PSI@V06&LY$HFrk$Yo3JBGbs`cyo|S#Q~= zn0t)IqdtJ=fD>U{K(B!?0zmxH6 zoM!w*_W8vc??G(OZ0uIq+BSdMHNBo?yd!at7A+sb!D!#+{|6m}VsMdc=s^5A`uy&Z zy7TmY(T(PM0l2Am&fxAM=V2WDMSZBJ)7a`WLJr30t#{c=Jof%0SLdch-@7Kh?z#gx z*GhhkWPB?*C9dA;M1Hz@t0keRWB-j-)9LI9HMLRstvUK1+HCg7k5=Tz2v}oe_6xu& znJvBLo&P#}?ssbLipG%Hk{4;{msZwNrPI9cU#s`Yn~0^Ib44fUi>!cc>%DW8)n??z zJ2?jaA4%`hr`8L-a3?u%=Q+CO8^G=EZ3A}BP)m!p(P!!yu*$amHZt0k4f5Bwje&oS zD^P6XzlgR~cPdtwNoRP^?;d>4_Tx^(-?E$Jf5@)+RG3&3`}{n<^$F$Mt>DKUgXr{H z_FU6<+_UMm*EF7esI#Gm_L&FC(PY0E`w#8C&g>V%ZnNw2ut!Y!;DzL!zLXHzDnCJZ ztcby58F)Ndf8$p8QaY>Kb8fBVeK-Dxd){#|>&0Ep`L&;BzoobK?}zED({p}pcg*>< zbuqk{avWZC=GmMhoB;hk2M%sL_kt#T@f}`YeC9Fgcd*79O9MT??WFmRvfDrUUT;(894|YK~Fnw?96HEVSnd0sav4hNiFD+TbYNVQ*6DOVWqQY z3;UHEf8zIVkEGw!=#9WOwl1-2x*U+b51u06I(9B~O|mS4E(x%Auh+#vw{Vaey&fCU zrU|u`5`FDG>>FgW54__0H374YGw1nbG0(?~DZTifa@*p^xsL18u20^pIPyq7$Q;tg z%b+RASI%c1aOG81iEX>6w!+Pfbvye3AA_DYFlKV1oV^-nIdz*R#;x15fx1l(w469^ z-&?mSkM?70orq6W=fT+Yy_rUz9Y99=n4A6N)w{lAZ(h83jBV5B$@g*ADmE{|I?UrNjX2*ulDwxUdBsy>X@D1MFKrj2~J!hVJ++x}$~Xa=u{O*17mOKLKvb zKYYeXV0~8m=opm^_n)9S^(#LwuSecobHV~)q;)VGb5l@-|UXCYAXU5WXFzK zN5mfT(y@sXseZF~j5;#%vt0Nj>srwvhNggTTMT@gfUkM7uYZvJWj%AZY;|RMtNg1N zJmfhz0JnxlotV+4F!9+ie6Bs~4dhkI&ly~Q{Fqa}bUS!__nRechsodTRgN`s$+Z_w z#{My~*Qr(W$t||c(?#D8={LFQ<)7iaI==VQm;55-7*;UeUd9zG7j#W>p%0k)fTxgJ zg7xrOAMYnJwnWa&!4B(4WX&m0@o1jazQtL{y;5i;1pbYG8)N^sLZ{~<3tfA#1^Zud z*-sO%_r_&EtaX*Y zI_E7nj%DU)(FLaceq@iU=Vep(;0ML#LA(o0HG8%#tGTiD*1$cXZNXz}Ukn_(^{eEJ zCK*{u4oD5}f^$QonhVjA=+2veIo4i-!NsYrJ+^6hZ6W@7ITegU=jvTFr{ZXlZ1U=n zYp||g(6bDDIrdHGJlh5~Yp@OWx}x6qK~Fb;bF&8V=IkbS%~AKLD>S|TYKGVNh@hyvWV>5^Sv%zs%^s8Lw{=EKg`kPwEvA^&N zt00Bdc&7V@Z69lW{YPGskNoX3RKuYl>tWUpkULX=Gx0k`ZHkpXhmPLQyBh0@ zcMd+H=Yrx3V*aYDmjv&Y)`l0g&Sc$0??bE4jPER1m@i*09p1}`9!RKPHUYTm^T_L+ zX-)0D$|@MV)+*S)p7SNI;H;kM^~+vGKK%>N=!{AAr}v(rzaBlq?_?DM1HQ#H|06DUwJWfJ(1dL7WBVbc#6Sm_2I#af2SYe zRW?=8;o&uE(ODYrYHobsLiXMtu;C)atTfl|`6G97Pv_lAPaTH;-TG)|j>g$B@f&z% z4t78DG;BY!FDq8&N^bp%*n+OR>x>)NBjKJulFm9}+D*r2PqMEY zWBW=k>e%>3^RlwyVA65>`ou8)o;=CEN@M#%25X*9IIf$9`+Ddk`#L+eubHF!a@T6Q z9XrF&`KsZ*?xL?w51o%ygKcVTU%AxWp3uKg{)lRd3XjGHg65@bpN6+w+s5?y!0@~+ zr_W|jpRI9u3%^r-sdyKgMsd1$u@>>Wo4axm?dthh`@!%h^1}#|DT!9ht?s8T31xJ5q7H^{5l-@$oTz{Dpk8SUoO%F`L++WT~qg|EI|+S{?RIN3@Chc3DFHbC^a=U-*3+*5i`Lk5&#iAmUrkqkevovG`hCCSzGy@1 zN;VB!_W8hZZI=_TsR=H{m1V!ht|M;HxuQLG9vt@99*_OC$IXL#6kXt@jRxi|Zf-Vv z;+1oe2yTMlrV@JnByH|Aw$LY!=710OPcO6mES;nGusKJs5BpSp(6^ztBw_=%3wPjA zxrGh9vzEAw_P3RDwofH|{SNh!W82tG%=0h!ye_^=V`#|m5OgFSa{H})f6&By3~p$< z_r1Y+vIDI9iw6Fiy8D8u0hr>^fjg)FqB$jgxr^tjh;10U_1F?G0KaT-H%2}8#*>dx zUkDwzc$X}hdj)dj1Tkvco;@*5c=_mmLmSC4v~d(4<#_m-4Zd7F?FMHf*G^MM@WYbN z5yNooW3L?gXTg2|x$NRs^ZCLFU_bnE&H!W$Saa;k8u9gCxW1q3HczKUx5SJ~&v^Mf z?Igz41>J~W$I5Z_;-En?hi8pH2miRf)yeR7OAHP+f`dT#gSD~A(?&6PTrE8M_B(6QBmJc-kMcZ(loK?Ik(a+Gm?S=Igm+Ykn(uE0g@~IkPEybxphYeG>Pq1dDZNQ^)G9oe!Pa zHj#X$Vc&do4n<8I7|xqm)GVn&-^cVtQ)!Qj$Lx*DRRR;D33kkX+u2LOdDFm zYk_8Rex6}$xbMY0^9avqKX!lRDdbp>Cl_l1xmW>et0$O!oAG$jtFJqW%em(ut(auZ z(|SS+wc@0E6}Ni~pIvJ|ifJWMGxd-^99`l|YCPx<4%N~3o`;@C9sO{NT}QtVyS&hs z#mDL(50TnPqwDAs-|i@*eYL0l+&cP<`K=tsCq}j|dy-s-{WGi%bKUV_b^SZKp5 z<6G-hJfq| zDL(iM=Zt6#Ire;b)1Km`*pjX5XZGW-ycKBq5VZ(8$=R*vV>NBDVV#3~t~i>Fz3j2M z>KL;(clNhc$6M>LnqH+X@hAG*@X_zFQO5GuTzs^yzrNq-SKtf-r|7eoer@~9_Pg9Y z1%?*(+v|Ok;mH=@9c%4;L_Rw@%Y_SAc)q$uCX)U@!{L38Km0DSr=Mw zKVW>=v?#DFt7;m2WbHm{RV1;vfZD?a5$f*-&c?UGHd`^(TCH5EnsjS*Ei&b+tfzbP zP~Dt)jj@5YuH7^i&aG%*B71m_`BxSZ8+LP~?j+|$>mFB4yuW===Owa^Wc;EWYI{-( z@^Sd_@!La9e&VyQG4`{6Lab({a8%!+=gZLxL0`rT$o04V=*_&t_dT?P`0K}%A|8Ko2C>O!gJT!}(*(eF?ZR zdyi=NjaHrbVZwS(|^HSKmPmr8&2-*1eE* zrqH$Z9n%iq_u`#L?tAfW#!)&{(`cI6V?)~Xk(p4*MULS6DZ|90<5!4jgTjA%ylQ$GeQ7WuY=rsjH_`C*Ss zE49EvH-eXS^{abRF8Y3rKhPLBcF&7h1=iaeu;ms~(=PPc4~C-}{1q3j=+v^ z@@HDtb*>J57P#P@g;~IG#Yw^Nv`aI#ytZ*uFa`{g*JI))3mE7-bcHQ@Bgm?V)*$a6 zw-mXsvKzjS5NA-{ZUXvT`s~qvbIxN!$C>ynasnCgc5LqLSbHSeuaEBwjrF|t;|tG{ z*MIr4ct0ijgRfv8tyey40ydW)+iM*5`zdY5*e5Aj{jPJCN`RW>smQVbx-g@*sN)gp z;Nd6ku^tUIDSn`}Y#+Mtstc^m(>^lgik{nK=VU~$;D2uxcwil%pLJSetL>5O;tXiU z-%XxR?|M5|(A>KyZ0;p@v&{q8g`>|XpEi#Ar|h?#_VDHIu%tXxj!@nGSpb6*E{ zhd8e@`0~x|mlu>JJ>Z*^^Z+nDOAYfcOfNoPwINnemzXo7@}5XY%D?%Ojmx(;6s_FV z%lQ=-Pd)F@;;D1PzNDn!>b&+EKWFj0Vb{m&W!{1hmb6b}y`k{laVzUX?BT<1t;cTd zo27kxR)>FrmD>9%>w-D9y(xR{*ko&SEi@T=l5t0G^?VTwHVRet;}x~YahhaQ)9z(Ja zW{+E$&GoD=(BFTXx|REGr%(AI1Hz4=ReRlJsq+r&%*m>;sduXXXjRx}R$%)~W!)1! zAlSQ%-DJPF*m=*?r~+@oJH^hS58H0Od5X2U20Ujyg)e&@b`5rdw=GNcvpnzBvnS3A zgYI{Xw^HAwy>9ULdk23lX~W~q1%_Vn2RPLHJ>iV&z<6u(7kD=or#|M|#Z`&}zux;b z?}@&9k?B3mo5s+cY;9KVYy`Nn(#EY+yvx1U#Xa|W74(~x49@DQhsb-P$;7Vf+7qEm z?P(KjcHKSP@8R#+bN*Xsc?)>m@?o7vV$;=zXmMNk?4p4r=;#o1#JM-C4?$nyIYq1c zps$0XtJ{19hkjtK?t8{sJ^11&t3+q`$^*TNZF*b9e7SI_@0N_=zF%_s{t4q90M^h~ zO4=8#x9PGvclfzqInPlWHuWgamGa!x&T~B<8h&n<^Bg{LYT;q~Z1zIU_t$Nn>Vfx! z%UtO0&2;wfFemPu_dG}rY@t3q@A^5l~K?vm@o+T3AcpVVev<;uJayo|YyKQ~=0Tfg{Cm~x+|8KPw?+GpV1s60g9ekwEiG)YR)#)}4bSzm zoZVXwqDRWDmcQm%oqxqfKUhTDJ(*UXO;0l21^zyKlWY5btU6kz_^sFs(CH{yFH!&c*p_|HSknhZueI5><$t` zs*qjPMXW^67V@lcaOPCvNBr-~u3vToAC0FMzW-tzIMweF>1Fy|=;`;YG5gIJ)o+gJ zHznGVOKu4t^~c#!n_Zd`ZodP)^*S|-tAV?QYrVvLTpWK2{2soP^{=~%3!sB}(wp`8 zN`1E#7q~hz{OL^20rn+_PtTkx{dowTb@RRVeRWdp&Fvp6xIC%OH#w;e{rTi|Q>Q-Z z3+7F#J*)i{bm>j#QX5C9(N`p&B(r_#bv@MCm5fne&EKK^ExNpt=R3Cz>*+&APbZ?I zSG3=PjxI+>mpeN8B1cDWjH9C;dt$VXo(=x9{kA?3y@&iZkM}RMIfwHHD}Q|~U2OExq;V^&$UT=_ssA?clMB*D4tg!Td~l)S zdx>>9dBzXd8BX}0R>%3kd_8ie$TO}|XIzq9JuN!7J|+4!WLE^)6+w1I9NDFDH&AEO zmS3sSJD#-V|29MW+W%nZKE8?%`x>!;)$E0S5nCg!+(G79tgmF9J8mWXT#@w-vX;Kz zgBDl8x0xx$1=x=}a;`qt$lV)=!FGPvw$ar8m#}@z{mAhBcF+B_?)`TAehKgI@Z7(P z`}R1dM{no1!6$Ox_phU6P#5-~{cL)4ku&D|k%hvCWXxgqrv#GGdv=_6N6u?@p9kpk ztDZiWyD-h3Gc=|~&;4cY{R;d3W4yoKbHCgJ^Q8{VIyXReiBB<2XjHLW7uHD*tnN6^ zcizD^O4d8o#9T(neR$n{{}_GC9#Jm5JBLR-dahxURk0c$D7Fo+J*4ONvwo5_2ff$? zjY6BXUOQ~oaDP2ce`>FHmeoN`?@@Fre6RX&(LgW0Yaki9p4_=QBfrSRke)>T%z(EO z@ue5cDk|tE|1W$axwiQKS;^K))qoB7>z8$1#JKax_e3}3X-@z-G)2LS?ykSYs!&bX z06yJd!i+i}vfJpU)#%8^wBw6n539XN}ND*MST zs9QqJsw&sS$aXv)IjhMJjIRxTW!X*7*z|5`tc)?p_1)vc+X{$JiNA^McdP&(Y4d^f*u>!~4q%~%U-t+%uJ-jKT+eU)~w z9zE5|{08T+kC8DX(*N_hdE3h9>n`R%=QxF#gL!G4s|T=;3;n5eXRpCV=eghJF50Ge zm~tn`U#ZxPO};&0dR-p&V=uAH4fieD7O1W5Z^OSzWDfHAus^6ya=((fD&kx3W`i5~ z*UE*iv=R?>QHxly<{UnoX0Tp)Y>+$<+m6>B)~C@If<=A3fZe?lK2;6lmh(r?AHKUo z>#5NaXZ|MeyyTeL#E;zkxZX$3HZZPOI+q>h+Te3}UuVvXUo>w0j@2D^fv;ZK$JiOY zUcYM$JEPaJGu~q!uVo%D@aX$W@_(D> z4C~eZmH&(UjP-wAo$fow*6Hf6h~KVGuforA?T8Pe)AOxizdPZU(fuwz%UbwSf|c5b zd~s!(YrlJS_h+$(q!XksB`bT-Rq{7YZUyrfINh3>z`2O_J2Rpa?gM|0O)mTCD&Aj? zoOS)i9>v3BZETOMee4Na*2emvYoHmok2UC1W0SF;CkMXhEksUQMGI?_h{q#G8fB-U zH<1BLYk+YDzoFseTJi+*`-%;J&EovO%0Ky6K6ay35n}B_YumEvUIq4Q;66Y->8UB! z=IB)3on$48KlN@Fyt#q)EC1WSGWRp~yN2(OO9y5Zb;yPs$NN8o{|+OY_JHFp$bqlX z&Q@rCkw0@u)&$POz&Cpay?*4rxlPjbHt%LcccJULiJ>b7qibKmo<|n1lnfSpfdFxO z^g-;Lxjt9Ur||QIE8d+qv7|p#bbWis%4!bbZE(n!8XO1g z^e-F-R%cDM@lI{-Ilyr>atOcrMfk+b0oSUT18h+<7cQ;#71noziL)ox*0$H-6Rk+I z&P%Kfx7ULM`AECoAI#{C@u407SF!%cKPoHwkrh`XD;9ZV#ToC7<&#VsB`Y#{*2Ml! zwWvWfJ^C(jcH&Xf$)Ja%Q{)8yDb#t;1X z6gP6V2)b|sc6=7Ldvlpp(TGf1%kTZfn>RpjVd8DCW5??psJxf!+P_>-KIAL7{()j` zPoP6zXWwAJH!*+WCnF}-cEjbY;}UD@CDvBT*yarr*k}`GG^Vk( zpz}`xzO+V*GYaSZ$j+ISZg;OO&^6+>+OOa1H@PA^avrel(dIUrKRapj6X+7jxj}rw zkHVLVr~ZL&=}uR+7wxrcqnn!Rj!$s=-Gh((;ltJfFHO~4Fa}MrF5;yr`O4Q~!>av= z=x2g8r|WF1;wSXmi`>%vpl@1IFyJdF^k>#}BC`V_&PG922Z?tp9;J2ni63Eq6>)Fj z|4sk-dH?B~o;1iBw;vh(pf59N2Qk`73DcKMPMDnZif>Zg67=C@`06k0L3wNSeGg6Z zPkG@feAgUon%qPydDdhrdCtpEt;%`1WmWFWkFA>Z@;6s4O-^nsPWCmHBqua3PWCs3 z$lVA9Sm)(a!{^t@#3vIb8+&HZH^t;|PnuxuZKUry-?SxXz5K+g%gB9+KpU_7Cqi(?Gb6tB)JF=Hl>YPJg1QpG_J`b2-FbvuHO~rg&w*Rp4p0^pUX%rbi!G z6JK|SJ-R#O=Kk!2OHjB=(&pdg)6me$;_@V?|>H+p)k`8}Kf z5AeR|I~7?i+etY9KSw6YA6tShsqv*Im7+^Z(IsW*5?A(IhAxpVknG7i)mnKYGUpaw zdeSD}*-3Bs7v(+ao09ZBWSHbmBXZ|d`C1Ki<*lC2T4CxE>1%AUU%gZ-mw`i_)?a$Co z3T^v*S#x!!M>2coBjd@xn4X@e|C9Ki=;W;hQ(E*U2bbHxrE9MQlYIrTGWXb;%UJVW!rE^+>#Aj}ua>sG|M^SFyYrj8 zJM|}AJc8XH>z`__*2m0M7j*=5PN(eL24u&-!jnf5s*ainQcrK^;l%{j|Z|DafYl}1f zYR3On=XV2m*yL$fZC*l~=KXPYyltk_Mhi7G?|0wB=3d9|Y){{*Jl9O$E-X{{Z`vuH zYxLYi{#%~s1N>KwsH2}v0H=O%JF*6ve1=rkt5fP1x7lr8*z_3l_~Ip;0|q|&(SL!j z_}bs)yK{0vf6rpAC8b5TFsJtKl;}8c*_(o1bA7uE$F~E&L%topl(Da;;@inT!yc%` zHgtWvA^m`U5{=dH+>m}SeWpaOqn`lwd{z^&W9Cz_;~Zqrpx^2+*YzKs>;*pW`k(Z1 z4)J%v-9v2m-S2=y^zmWANqa&3r9yOaJ#w0MvHi&-W9$c*3+=aknta#TXSkHMj@~mhl3wt9M_{yNCTE-S~ z;~oY#Dbd}uulMmEmIQKwR|KY~<&~YXX_=4p9P#t+yST40u?AP0SKko`1{+gZgCjpT zS@aoO|Lf>yOWKBN!SP-YTpR=!<@nV3wJX}|uCb=(*XFhB+7hmvRa@6CUbyV^%=6Bw z&2KMb97&8pu|$_2a-nDCc?$kZ!J&ayF%tgAj=Q#hu;Ldyv)>~h0;`Z+p8wGkII?W{@j%l?O00=^7fbL?|A#Dlr!qmW#RqEa(G(x*7}&&Jm|8A{Q>hIsO-XNUj#8s*z*#->B0R*>;uhqjU3)=me<@MfF!jj#PV&FKxvs!u?2m>8_Vezu zckpaIZJ2pc~j(<-oKTzd4E z$e^l3Yc+DFBP)lzUY-l2MKWt#e+pOEu7sA&c>o;w!*(o@1yFS7oF=qWcod;@&x#)maF>GRlpeRprT zS62S?PV55q*&Q!`S$X@1owFRL5!angEM^sTo!>=PMUb<~Sr6bNZTM(?$NA)+{usJg zkwtB?WPDoqIB-g^F%YB%8}X9F)$Oaw$=@xnThYJ7tRb=Qg|$5PdsO5Rujz-b$q{(F zmH1d5bMp*wHNAft?+cd!<%w~>7CRxbrhOG_qkDDEdud%wf6&C-E~x7ENdiV<^Dj=B2mXTO8!wrad}Y(My`y1@!B2w3wY(2B;UH8pDg)P0vY zreY$&`P3-kdlBzHO5SPzIP2*G@?L+$*h?9^)-N0ApM6LBLiiO1Hm+H|PadsetmK%DJ*!=W~O=Q}aQw4t@OHpW`Yybk(Le3rL$8Zl2~Z@d^+E-^!Q&y4hP2wmMrjsL9a<5vC$I1Zdn z?#@bUWdJ)`d4^%~V#CF0qjE_@%9nj|*M-;_sl>aM7T$sE5#Mk|0~YHMzLm}7xMdCaR_2hO{t`Hg_k1Vw9pL#Z*-H`kKJ#l~ zGxSm8JsZ2hwH4LJf-&AvJo#_fJOMGkoR~ou%wRxODF5LdyJh%3|cx8J~Vm(Jt%+a0H0sn zVe5rv_$va;m(ZTz*}__<{Nq5f?JJ1~^~`RbY0I_3@!+W?{*%M|E-wA(K)(}LZJ9i5 zgLF9Kz7e^4JI|Z>-?{5Tzx(^CT^BaXE&+~M--)>C5dOa7wByA|8F7K&W@zZszLgQ? zJ^;LV&{6r$v?kW|rd$Rc)deRuRzXJ^@4fUHfG+}nBG#2*&8t=ng8aKTZXd==EA-Qv zz?kE})BGOm=y7NyE`G2TUS>Ybc)wwf5#H)(Hh1t`H{&j3+@*Y9D4g?s0pB%z7x3K*Jt^*^91q2PdKv$Dy3YMM`p@?{ ze8(HN3#)YVc>KqB@CN>dtd=Y|J!6zC=%sJ%i4M?bI^U(hAbzXid#b*I>Dm-4N(vl_mopCWuqr?m3D<}vD-qCeiBMeZRvN9O~}^2Hx&QhiMu z{*34phqeYd_t?vi7ZbNBoiM#I;gq5RH|Fp?@&E_03-#Qq@RaNf@$PHbv+H^OUDp2! zZ=(hnvZ4FFwbF@;vV5s^5AuH%JfQsC8po%$;Mpo{&$3g3@?#**>th!ZJ(q&Uy7&?P3W(yMqinE-LW0Dh%nd&i9d zqJP{Npc|i2>`?t2rk?@kAS4?Teb7LDALq|>9OasFm&=~JuD#63Uw-%hGI!?jQB~)| zzjub^&V(&wPtYVFb!LDn5Fk+~6Bf;)wgjxzE(ED<7O9OpT1*1kCIpnxC<^w+qP`}h zw)iVl(%KTR_7|46pmwoqK&=y^EmW2Sp?Sa0x%VbFlYn5~_x-$ov zy+9$fGcq~Ybb>YXk;kkJeN`MIpLT61`k0uC zS9WQk?TqaNeaqc0_E^5?7)L8~Nc3Llr?YIl%oSK$x-j8^u|@XMS(KrN`XrsjtjvCN z7T~zxfUIR#9JGtMrte1Y0)3&s&iH}M7rEHS8XkUTO;Op5@a@L3zN0(xUc zA&=EyH`uduRgw5t?qhsL&ZvMN`s>Mf=62D0$Ub&HOP}An!`2gzQhJdU>eTxz>@3Hkb=eu4BQR{ULGMkZ;pw>&)YI--!;=<2B7i_%C z1kQqYB0t%>GUZ<*x-Lt1bS@pNt>+URlfB1n{5~!Hunz36&cm!vA?#hRILXsqBhTpO1Q*{`&nE5(e#m?x=#Jz(B6hVKHd6QPsBeGk_|~QayU~Go-@bc$ z0lK+%+N(qcUkv<)Kx->=wTjokuO-akg=PBuRhe4sj%CEnBBPXNYV)vn2MWF#6Ywte zZ*Rw!=t93O%N#jbzCCk)KJ-72bKq*ugR3|f=5n6QY2=(x=gCHBxjIwo1EEdOCyDu* z`Y(7^Q?IvQY!buRlY;Aupoe$i!(rI~)VsmF>vBuX+928@kV5|Jp73cah6^`5cykog&K%oZzxi@KGL{U%SjtU ze6+-`qo>(E30dhQV%OXC9PM50Hf@FWlD0zU&-IdzvF2Y{)r9OFTY&8~d8xm{xYUfL zZUrZN{B9tYT66}zW2lqEcdqY0hT2E}9mBQGQRVRei{byrm~{N(e~QjB&eX?jf;NuD zM~`QT1@d!F`mJ-a+QECbY%*n+)10YK4A8O^Uvb2|vu8Q*xs>=A6+K0X?u(JVl=pVSy*0?H61QLZJ}?p*{VXv) z%wO!&8Jx+Qbtd~b3uP?7BPWmaC2cvs*@)lTD8_X+=jd_HQ8^njXh-;1yPYYtA$>e8 ze%-tmUD7@M_+>BRJDHd8dEd3*U_K{>f5co%-p8hd9Dhkv+jbokSE^18xz`Mt6K6&y zvSD<6T_HAc;W6{XM?}^Nx%(tMUas&?QR^iQzv3G#zccy$C-pl?#c)4Ri5|_gJ8zNmsEltmn&*>x z{szxtcRGEWPG9}oqHWuY(0|cWCqR!AU;Enjbaeh3!LM}a7ukNFhnu~qc265p8C7l*5% zd1f0);m=#+A4j|COZ1AMe2*-p_}p4(5An!?D@KYoPx62m$TYR+SPGDD{T^>!20E4& za2@<=5>V37ZU8p~x1F@ml(U59CWZahxDsf~ zrd?NBv|HJ)(2ISiAG)0jKH76jw%W*uYQwaJn6`!Or%aefF3t5zxr}oW<7@|iM3*pu zaVi+!rB`ecAIqpQ=R*7J{!VW&aY1w&&N0iH5_jKOL!3>t&E{|4Huq_(!)7D492-s} z;C~lKwI^_{>9*-4go_ws6*e6k<`LFIY&zs&P&OS|o4b)MPek8X_q!zEL>=?^5LSzZMNdUNi0Y&OT&5Lc7F%zZv`&`+Xzy%xBr}?X`H@qD$hxCVski zK!KDWl0M+!Q)@t(p3odzg>tXIiiw3*B18_#5EaBk=6xK5CNn+BaNi82-M>c4>sO zv0XZSM|UcE5Ffq<{1w|}75MsD;Az_LW^MPtA9^hQP|m+<_$#r`1+DsW{%M?l%?>-W zDZiPt?r+dFX)|)^Y`>J-du*h&#}+{AT7+J($1-F3+V+Gl*nN(%`c$@U=&SVUq^}*K z1Go2?LkB+4-eX`vZ3tXZ zvYV{SCj5v-fKSM9`)47;DIBxpxL^E3@Q*s+++gbTmn%%{jUto9qYq3RAM9Mqew1AQ zU%KYI+iS=*lkPUkmoWEMa%&0yTRa*Y7r&9w_CGg%oSC_>{0u#D65Y;5 zXau}i&;E7zHY9-e=k{%g53gY^pX}SvJ7>F{M^DBkGO+h>ETZ3mS-EV^==Z%l_z z%7E`sHc515!iVjIKM}u{Xxr9K-tSZ}O$;CTK6%}Q#vt!<{sTLqtBK);ljyue4iSGh zWDxP+&xD4TfLCYpcdG!NC;2u)EP6y>XxjlDFcdoQ+PC_`vA=O{0;lbJLVjtD^T+TH zGA`SHQR;k^e(iDp9a$X&E8a!fBBq*{--@So_XMC2hoQTgpp4i?{xvQ zAYJ00p?5ZYGUK1M^UnXZ*OCA0P<-F`1ZiLTfoC^!n1~!^(ZUOfcaCwyJ8uT|(Qy!B zpDiI)u8VnT9&JGxbH^WQqK03?r|GZVF)wspefkr00Ly^zgTm z|6}Pg-H)&tyBoW-!snkz(o4zb!uhLj=@ps)pUJfsOrGc+> z;{#Wy93Z<{D=)m=IQ~S&xR4wmk9h4IAhz#eV)#ewWf_a~B{@JuzgWzE5m>eyCw`Xx zaufW1i8+#5}8iHf9kq#5WT|yqFl`ufP55z174JFDHh01u?{d zAzD)bf7P)A>dN>p&)5*=X(P0G#rS6a!yOwYmbg5KjP`5B^Ahdd_V!EnJ`y{;?(k5p zi5TK}Gxg7w%e&dw4@FR(=KOHN}spjS79^KVW@cc$(0tB~dM6!R zC3hgKI9m=?Q;&cQ+UWsb$!oKvzTmT=nX#NZ^y%>jb5>GTuyX?U9cUHxu9fTV9v$pV z#*cR6uwc^-#AeG`A-}&YzlpUM`B3Pt!1I5e>ajoG!??~i4v~kEiNfON8V~N)0`Do@ zUnTPjToPEHo6B9xLG+xOw|q9|zCn4zXMF2*;62NLAMy#DT;-Xpm214#G*kEyetR!B z*P~Tp=f%H}^|%mv=FGoxGxA3?J*xpn&^3UEapmK|Q}IOUkg}INpEA`-VXY zbq4fD=I7UqI%r5Jqk8A`483Yb068Gw(K>5W@k7FHW&qHUl;6g1j=-Kp1`sL{L z9sPU&jW`DG2<(3RnZWvw@U8pHv97gA%>Pc-t_8f5^=oF$-bcqFdI`Krhn@!{(o>nQl8;oGds!=lNXz@=2_*%EN@- zO7dL=p!GMg&sGCpJ3b*BoX)YgzZ(xFz7jS?hFQCLxh_52N(Ao_6K(T9R{EuGqQ{T)*Z~e;#@hR-@j;Z*JVCMtq z$>2xK^?A#Tb$X97WEkZKP{aDjohYYobE5|zfIhtM-6-NmDS3!%u({Q9Zq{D`lyEILNiN-{8gd?sF8xcfT9)D0 zV)c|H>>kI56Q}APh#a2;oZ`Z@oOh8QX*qe%_uP+gc)lf*-XJom>)tkeaL8jF%H#i);MGUS z8S{}dCU?uDDdEqzL9ax%bmaOhRq|+DlsuXeojn=inh|Z1h}2R+X{XXWtJ>`XBe1`+MJ?bLyLOpl7qY@6m|` zFSp$Fz@tAH7<}}g9^0K0;*ud+Y%aXyEO^P;@RD=jB^SX<-V86f7+&)0@Q{9kyOQ`T z<*$~%i6c3WT(K%IM7nEedj@%d(}B6yK6?BbrO~vqk z4!AC|;`^`Ucl3Ra#}uv7!c#O?VJSL%-$d;19<4%T+#N2hqG9ufo4o96@i#8UW+pMw zi{JrDtuv!;P*qd874us#cjWwn*kEkIvSIVD!3R)ce>r0+!pL9ty?G~Ycump$-OwYE z@rAz%2#+DUeM`S8_T$K>^zn3AJ~mGMs@=~D`e9#Jynw%x=vm7w8rA4B6pgC2Xw)HM z;DtuTK)cGJOXZX1`pe;)EA=7eLpd)CI4jBfbKsh#<=a;$Xd`#PXNs@J!`PmG_0?-) zeh9q&1~1SW%DWGIULe1BW#-?PFZ>&4tnt-^KrQskb7aTu>=FEEdhQPu_$(^vN)q^v zrym=>tBI+;Hq$dXtQW_w1gUc)x=DU!N2=CiZ9Hr%E0UZpU^$FCE$L z&?xhcn@(^?`Q#tRt^xd&zclaUK8615sF}>GTG>S6!!N8g?Whv}af)`L{rEFkE4%JS ztM26%P0n!8WbyZpjL|}RrfI7_gDze9E01MN=nuWDv&4h80q=HxyJ_QhtnH7v17x3< zoS4+BhQHhQIpNWUl|`xhRhsU|@Cmi}Gns`%SnYr#_Fe|vmiW^7N2 zep zoG{{BQbtbhFzu>)j@&C#53|NbiYK6dReVU2!iyQ(Vell6J>14xM*F}CEs=GJuqSIq z!;6qBj2sU!>0_}C19v$)?X?NOgUk4g5!jR99OVsd2}J_d*jtDelJ! zgZ_MCO0WY7tlH&Vl55wVU_P?$oA47D1aBqdSg-JVyO<$y_#H zE&g<3|4Bi9^WAneK3{3&kvq~S6_3fg?-V@sKK9I_`_t!({C;O+*V-%LasNm^)A0ws z=Ns^k+_NOU*2`H7@o$uSmc+*Td+z<+ZryKWz>~@MnbdiBj(N{gf8R6{6I_CSD(m2_ z`HinGA6)ZuM^^rDtur5Ai4AV;s86q1mp@-%&O>+lSA($Y8!J#YU2hUVJY8Ky&a1nvMK33puDq zu9C4=GxqBwuI4Oy6Y;$`G@HD=)Vq9=*dDS1xV*Wq~P&2lb90CjejeaA%ua+l#)cUE~QvGwO)_2#H)MeyetWo}E4S zg3BG9GIx!3jf24)`3=p#y^8OppGAE48vQui_RwzIwAyv#4f~fzt6j$#fAq)S-GB|s zX!lL5Sx27w_M7>hF{v2DBi~=DcYnkmqM^O;MY^@pjg`kU5r*XMZA#AIWUJBy>pK&4WA~ zz_y8wTiR<&uWIrV$K^q06qwFpOdigUwtLbib-6s{EzEhhE51(jCS{COa`TT*2xhP1 zUY{Yl)`agzleA;xn)j;0gB+E(a)D7aF4%rLUg}C;9@fv#ed}{3=AYUruw{LQvkq#% zW@UkI#FbpfnZW)urevvmS#(56%-g_cJsB7u1P5f^mw`{|U%B^R;xnwe zkFPt%o-Tooh&_HLurH@g=lzrupc7(O?*Hyw;dLb+2lntXii$ zxhu4Lokn#StdWe9v4n=OX7DoYUi`EQz_|ev3r@8XGcgYQDFc5N!sl<|Il#JY(7o-u zkTvS~4m(48VRhZQ58dO#OZ1_2a<9{lo#x$xFR`2g#*(RCH!L^kMDI?6FEv!ON7|RLn z5|J?n6%IW(y)p$~T*-&Uyy97NL({exo2G<5dPZ-Q{Phwe*vhxL#0w7r&q`L*7BzhK z#oMXZ1TOB^#?C#X1+~+@#g7&>6ZOZZA;5&gH=Uh0qX7(rHoSY#E;m0SR2hP#gh2z{;I`Y8ZNE_Xrf9?;Ok8^vToYO(XF?w9tJ*r)O;`5&$7b1drThNbZ%pY;S3XZ0 zp95dz9Q!4A0G*46=$bvUFaEkyJL17v!Qn*K`p`4xnOJ@~zW6d;RQ3Klm#8s!^Oxk&m^I2YPezQoS*rIf{P? z`l~mt)L$omd@FWxWI^UHdi2BN;QOf4K3VI`EA?kfy!Q^*sP>yLQ99wA^v6wEQ{}Hq z4`$2rLH2mtGjkh-9vlMpjRT0?puNM-&uzrk*ghNipp~%;d~Sx;HMsDjo*e9y9D-7= z2dj#{LitqaBC<>8OnfL0Gas>uc-+Ap53+g$eq-ht?k(dSEEuzUU4fpq5`K28=b~VC zJ~}^<8SFmtX-mE%p0abB*PK&~HK+ViU-z6=z?*-_cha^OA4}-M(OqMSt=ow$!cPpq z*qU{1=>4%NWEW7jkg|l#+I2F1i9OiFyj4y-#vtEd9}LNN`IoL+m&du^SXQdar7VHA zBwB3F~Aczu{JpkuH?NbjL(!&lG!gQ;W6y#jV^cnhO(UOhQ#J`?s?0KL;;m{S95K^Bi56eHi|*ZfI3e zVQI#_9&C2tPL9}`)ShugfG`R|Hb+rdQHAH+r0Y=rX9@2rKOywIcu*B z3GZgF?Hlu;Zz%jtOM&Pdn&)d>CC*h;NK%Z@i!EC{4=lVPAMaVJK zD(m^6R`DYJXalvZbRV)9za@u4`nRnZks8(;+_T5#9MenvjA53s3Z$v7hy2eTCpfm0>G$9V3_ zkbB}&>ja(~@mbT^W3!NllK4iRg)WI~A$=bN&zIBpCdws0SqpX4dg;k(y_|3<;f{NI z?9RE~ZjD`|pZ?aMiZO4deS1x(-e~2J14nkElQkF*e8;v1_l+ItA^oV`_H_2Fv?=l9 zf{!*%z0VkhFM;1scSI9MmLxeMj^h3dLB6kMF(A{yX&32cAqn`hu7{t6E{uneI~ACOcB=6 zJZp2zu~OEby-m&qbV6_Z@Uz&W2D2Zb2f0>Rm@<3p8+j+P+7iaUgR^EcXAKpxse9W4 z)hpMvyC;MT^_aTD*n=u9zO9UNun;&h3Z|41dz(m&5 z)1M|kai*8)72wHV4;c&g7*M`U2?Bv9u<*J^6iTBWlthQCL)I-m6(>u5vP zY8Y*tlkZuP+ArU8Xobg=|5@i&cpcHV9$M^CFqC!!j`df1fyvrdk)ymjO}R3Ky^u3o zs$Ik?E1k zayvKNPtF$F6aEU>^+4n@y)%`y^AO+g@$&=xZH%|p<*7S%sk^bkWz>CyoEPDaUh%7` zmGkS$T=V>zt#=ClauONt81zlr-H5(NyhGU~LYqDLAH zjGw+8Jq2f;Ja4`ed^GFKlR5_NQ-7X8+p0g#0;782_6C{_fV(bB(xEG$~9*D3ePQT ztN3l!R`~5Zz!9li=`z~I*UTutL-E*)*zfYr!!z-EaW;=CwvzOn@Fvhg8Ph@fu7x)< zaUca>XU_Q9xvXYaOlg=!M&i zJ=L+Mk$1^MgiN|Y)`EFE;V}E19=J_le)2AXxyas>Z{qc&z2#UDn&y@8EArz6E>%XO5VU++d!6&;}`!x_KUQgP1(c zey1$H2pkTATU{$s&&kuYLZ6g8WbzFAGhdw^`fWaI#$FNGoc%Ad`F{UFQ#QAF3;2)e zYMDw2Zx`hSffe-cuc>X4(&qK%SV_i%5*2lV9 zJa?#sbvJn!Q;%Zj>^%z)(+x|Zp#m$hvqkYIpE#Fcj=2b3I+-WDML)VgcegHZKWCMt zvmMo8+Z57djvkYzAV#3`Bjmye^H=&>&REXsEvCM9`Se!GujHJMP%jU-2&}}0P*rwU z_M889)fbmd$(Hk5-jjo;eKx#c+izwy9%m0_=|9`4c2?iGHg zpFJ#Pg1bsLOP`-oPu6>Hg6~S+aQCk#`=m7%o<`PKWQGTT(S@#aJ^C&5MeG6M#98NM zth3Jl34cA%xn`K`T8N%NGN#MZAS+f6c zIMobqBsL%6|HKFK5I7-iEMiPGv@3jPae}t>Z}_DQ<$VNSF?<(Z*o-cD&jZ0nhiFG0 zUFF%cPUHs{W&UN}^?SIRC26d8{YPWKy=SygGIXT_T_+Yukh87s7`kd_ z8|9oMPFsZcJn?<_`QST!k{7vsBlC|wtNOD=DEbXO@ax_>=RQ;CL(4R^rXp`1fiFAT zUXwFTXrI_L)VZVDlW`dBI^$6LX145`-tmRDO@qGnXMTN#>T3*meIa}4g)1_LMVpa_Y@3?%eC_YN61;of(U0tlHT3goX!BO=k{3do-(nBjwAsVj zt>j*!ywZ|vqr{)>hc}RS1;|#iJ{L-x7tT08+Whr%;LHEdv^nWh;L`-hIty)1{FLi_ z#RabOO^$VTp25dY|L14$d(+Qvoe#q|oQ*F0|GduM2Syiq2LA~9>!ce`U)9$~^CNsT z?VJFu{62{6d<2`9ZBL#GehIt`!Z+*Jh{$;UZjz`EU>{>53aW@TcCNJby~4$(2|qKK7z_zXccthiKd6`9^+Y$Er(&ZvD-b*1j8m zx*AuKJRfM_`;rmb)_ix;UZHCugVo?un#8+obj%t2Zo(d9#s;BhpzZy#H->0iKW0v; z1B7QurBBgcCx!R%u6Zav{qDrNWIeV01n)BG?*`6ynZLx#+H=n*=3dqj|Jx=x|HOV0 zVH^wHM*9kQy@)Hdj&X!uInlLEzB_TEYl_TQ#xCPicCn>;#ZG*|O1LwjVMR*EX3=?} z=Zd7^kH`1N#<DUh-C*o}uJ}S*E+K{_)+w7v zd4Tbifola?d|?5yO8_0NFQvEKB5mueiJbM##I9=Gizj|?C-8fV9&;5u(fN#1Y}tz? zHq51Mi!iq~coTeQ+D~F9d=0n?o@|I=uCq=4LGcMIJm-{sW!_J8aA&y%i^mzOkRJC#`bLY*MLs%PQI7- z3+Yqz7U4m`oENCGko{SvuV1$ix{`4ve%9>gYxH2w2JHAB5HDUydHbasQm^%hZ%j8OIRDQK@^&3K++e2{r4yrDfS- zuU}}5qhye&pOcu3wf|a}9i+e0@P-Y{SNiCnt;2&iq?WiJUk46gD;lNjMu(yA26YAQ zUF0{D+%V9HDR!OZ;JW0~-}%{K_8!_@$hbB#@0nZi3mA$Iq5hRqqT`OpT{3z~IevEw z#P>>mNAPz*PRW_c?-l&+fZo`6_6KsQM!>0bd>M4s{y1x-Oup)K6yyH@+4YwI_W zfu$`O|C9gjLL9@NQE-UwjPcrnJYtGCj}C7fXSOjP*yCGPWYge}`R+9HZg4%d&WtNb z3cucGp2_W>JkKvV=9%P}XOd%{Not-SyGMoXd47C}Hq9Q(NyhTAH5L=T$?c<&Zy#qq z<{Bh~|H~R%kUX+>9T#|e?lo|ZEkTV<^wJB-r`)p!32JPzFB3T9ryU$T4gDxNgv{qx zS_e-%%{TV*G@d(nE@jXAUg!R2{9Yv9J6-pdhsW@{$XEBpi@4KkkoIy0&w}fIJ$|p~ zV`g8(xi=Dv1+i?V{yj1L!6}!Dg?`W*JQc)7Qx8udd-YvnX3`t+Gk`})e~H)@`M-_3 z5{bUEMAM)DnOApWB~p)OT$NZLkDI@(J8Rp9jo+7chma(Ef}{|fOwKU48M@!?9$- zs9<&paZ@v&!!|-*%=BulVkL9gOh2W}H=tEL`Z9IptS}`11-J$jXI*nEMuxkn0HiI^??{q##yTX%*4!+8@ zVcjO4We$o@fwq>ihf(Bx+Ju+U_k|0YdN4ucEzV*C3C`^%;&(r#~>lG?rtntK=?$HeF4@L|4- zupfG8N^1LNd_Yb^Q>vkbD?jRwrrhM%Ysrqimh8aiWQETs(A(~2OecVa4Liy4FkRpm zqiyR19x)DB$R50b`xFFr&ia>AzsjR+v*GDS7xX0iG8#5P3pVP`A9Y?OhgtJ_;iC^b zU?csUvgoZzcap>8NsWR<%6Y)z#`A{7NqAa;h2VkE(-ghqm1@>n<|+7l65oGt;6Sje zYpeK&$UYE%C&A+a&Q`%;FZh<_cQ;~Zh%F(1g$*O<$l59m_<+~En{p*hkTR>1|Pd>9yT{>50lOeF(Ik^Kp&xOP?(GmlU3!-nCX}y|mXh-1JK~lwUfw zHqk5NPYsQ&C}eNSxn{;Am^QR`SXUS41%A@8e{&_NyUIi!iq^&1Iqyo435^@4hAbGa z$y7e&N#Pm5<=E$cj&HHf{V*E#7(JYRTCZ5exg&lE#=Yc+TFQNDJPSS?=y25=59;&M zZ-Ebl?s$aPZA$5L@6U#R>lFs?k*l_d&B@5mvi!P|M@n9dW9*Mg>X6@S!Rz3mkNH*p zRj-hIJ(d5hS9tW=)XML|_woPC{kix*?^1rN(rzBKt8cqWz1lU%E%ig%t=WaY0zBif zOU?d>TV8gkJ5ma29>vs$WA4W#9Voz3S&N=aAigzxCsK)o)=g583U* zKlW{ZWUu;pjCrZue!ul&d)05D&Jw$Q{2ij(_iU^x(sYm4xh6j9;fDZ>+!by7#+R%} z)~bZ_`6ekxe|}8XN!AaZ^LolEUGe3ulsVT*?6P`BRnd5GrdRvW*F3&a?}OYs6#X80 zBs{EouT>X~ihhs$k=^}%c~N}yd-mGp-R~bP8WQ~;T=sRpuPGW3{a)FG?Ecpjojw^g ze)eOs{XOtI7WLlG_p(=XZF$j$*1HI>sd5~Jl-zIT(anQB|_GT{|2C!8&4DNuCIlMis zYwc&4tJK|uKfLI`?$TU)o!`7bKl05Ub=P5Bcpu-0pOJhcdLfU&pYACv8J64Ox8!)+ zex5|Vv&U+fe)Gtz=cr@)DE|CXbYip*U)$-i;yL{AKq{t#I6l$kl)y_x>*P3>)?{Xx zzImtchtwFeDqEEkI>B>)Idi*adz2qn%N1*jjDJh~ur}!sw6pmVXel)F&=`}y*vWgH z_dlUr_$OPpavVKax8_}%Ix;d4-&XAM3vV=ias9j_ z=R^+oKZX_(gKJEzReCu5aa4{Sfwi&h3y*P^O1rGR=y}MsF>)sUTGimJ&|%3@Lav+6 z&2MT4e)j~qtMK1iMUz+)Wn zXagRihpDvSQNX)G;86fPDuIE2;>vEnEpVzya)Nj=gE@_^%cttp^<9G8Fi^Wa1K0?x z1s?L}85_*0C0}qcIuGvx?#PB`F98mT%Pn1bQdJRlG_Usy+$%9qo9r1&-bNX_<&SIX ztV~_w`|wIWLz5N6*kQhLT(Q9UHJe!cQ#a7F2 z!9m%xq8GXdoU`ZHnq=C77cpkBrFO+=oeS`ruE!QCu$FdJ%pYf?Cxv^k@bj9PfIpQy z@9cT62|YPz_P3G#q_0Kv)r`Jecqh9*>BqyG*zFz!mLii%yrHu^L&lG#JoTl* zf3cTso#hAEhfJ9_DLe_fFEJ|ycH#)OZuSX$T0*(VRpQGd`?063#Be-q9kYBXoU}DS zJ+bAAKlexY_KUBD^L;t*oi^ts#QU93{M+rHIbZuu@`d?yo3`RLeuu3%moq1Wb?s6< z7X90bh298UeCVgJ!LG4&srlfkf2bLMl*?~hmwJ`2w=VUvVAtA38%gdu$}_i%bz6N2&C!*4}l2r?Ph!YI^%|@M#-+ zch2S4pV|l?XX}sC*=vh<7QFgH&e`!hD;mG~CK|sNJq~{3vw6(IZyUF3iT{?^+Pk59 z5?d?s%R+tl(IMcpGp4p}rWsEw`jzqUj+s%hw8KXszj=FNY4@OebjH%|9;9^&-BxE+ zwfK)2_#R(>O7^$pOCoQ_qYKIZHYeq(`*iq8d^nYTXBRl)1y-WRG5y$mVRHG_EyRcY zX1+a)&OmsI0*5cV7hiT`lNS0AU-oo-+0*f5Pse`?|KujISH0AaFMA$+NL$QL`LZv6 zU_@LgbVOjE$(k-hPM0&xDM#5dl#QdtdE)5z;Ykib$LzMhiw~m{KmW>ep2V;0o~Gn7 z_0Ed*{k^=CINXESj)r>cjDehkvKOpaJSSeRaP%X1c`M&`t3%vPI!od=_BUfIw6=-9t$34Yqx($-UM00 zYoA+v(=dF^_hs%&{lGmw0Ix9V2SfLz?%OsbZ76XrbrUA6{{Wm{#hLA<9r->6zp^Eq zF*~5y)#$*M#7d40uaaM7|4V#m8RLQOb(Yy@IAablcCVpv1{&=_XrAy$PJiS!#w>X} zg}-L*q0+0nlFqhXkr)*tjV%7T&@zG5Ym&okAhG*{h>IRfysd$}$$hE!bB7)Gsv0?*`JG~JH(_TT%eeD_*Wm|>-waf&tjiak!b9!>#^{N%L)o}+ zNO(Z(&fU-GVjtwW9p9!BcT8a$cW3Q!rJ+0UmS??Om-^fPUYmO8zn@55^m1*geDh`( zz95`I*R2zN>I8l4=59iK;}7Js=8`9O z7w{X#w=$2wfgIwj$&<&tc7JZf{6f~AoI;&{yF$DD19xreOxAw@kTtJ_zGSlgvgU`;T`8Ec<_cz( z@1=}g_GULd;aTR9Z_VRz=I{zSKAD5W?hD?U)eByy)CV1ZDHg&&7wHf>6d>_2q z^uHq?!Z^=!HL25<>2Wp>CVO4hUFdHC@Dg6xzbyB$Y-`QaS@RxvWh;2KIpEcGUhvAg zaClwd8r%5UJ=WM1QR2sc01nq8JJ`6nA?K5Ev&{b~#(R$SWgSOiS07o<`d0N?+oW&^ zJ8k#gW~{4u7XQVA$lY_SH3h#92!5AwUds9uux1OP$u@q=+}oiOvR8WMA7jp+{q_H3 z{^UGRdypa|CXV(A1 z*ZKb}9W&`wQuxo}OK$N=qQejw==YS#`BMum7W;9F{1?AiXpb2O#2JNsSm>GLYYek9za@){pOuv7jj35D_59F&^3%g&j|kzxOBn znLcN!;U9hEs;?qP<0qF2cWi;pI59x_LQSUquJqCe9l%TGNH>9Zh@y&TH?SeSdiL zuUUKNYv;XpiYN5!o#p&K+uoV{^`5$1XYVPU=jraRb;!PY3Z2(F$DaD@zwoED_LRs%&VA)O)ivcZ+BNr8 zD*Gy>dtbFbgU)!&+4of*`zqrs`-)r)Q-r6Nef2bFkL;Hg#$oTNbZu0xz4f%)+*`88 z?7g*x`m(pIJyj%oiaj<`;xxPAf{v|{+$$fWBN&S9FM5Bau)i{ai7#7dU{X1@#05Tb z;I$$95uH*e_KXtFCjaQ{oK5ZSnpB~eG3>9}F}qXSxF^A{_Sf#z+Lt_O85UnE zwud15%ahE$wPYpoZn1|AwZGD})OMZqmG&dEIZL1qkwUHMkXu*!uA9isZ9oGJjlC!I z(a@Ui0bY^i3$r8ovj1?Ct9=@B8u=R8n z&*hXm$mLO9vXop8|CjizS3d4a61jgH|IgfCfW9Rky-ObYm#fjkTtzPDx!kGhQn@0O zu50T|h2ybTDjnK>GsZP8{7SLOlkQ|M9J7Ag=lR>+&n6xEEziAu9k9t+dfFIxIjdRfunEY&mt7Fh=yMu_g0-b?7?qyB%8YudZ1q z_?yQ#1%LC-lMimj{%`ZahxmQAvpjfn&slyI=la?BV9VZgAOk+Q8G9*rDOCs^W{*Rg zkzL_~g+AJABX=rfuvXD!;BhzJdK`Fr6~DWnCC5IG56=DM`9psxdPa?VHUy@T!Ir*q zydHX}iZNr)UPSxZ@*S}vr@qNO8w*|RA2<7mT#ok-#Fs}`Z6pl{c6L%9{b1-xz7adz zadh_S?v(b#$&xdv=YF7vj=1V`+=+Y1pIg^CT5A+P&1CXwY-FxW|J}9i;BxM^0#C%g zE%{nIp>5#s(M!^Tr=*V906Se;V;kpbEB7;2=^fMh%i&|^#Z>!xfO&Q`qt8^&e>UxF zukw7}b8{0@O1`Ia&F#AXU~c5&={2`QoDtyFR<#bmW65UI?thZJmM;{-S zG3mfb;%ZJzssY}n{XD>Uj7x)!+%vh?uP4?SmuijMfcHt43GWi%t*_u726!DC-VqDl z15$#gs^HJy@4|-Lgm;AgxL@*s*mvP+R6H`esYhjuVw1c(U2+Wf&8O7gT6`7Q`@Gs3 zZ8fn);PTn-J4;H_)NNJrNC06Qsd7}U}90V;2ci@a|?b(F`A9oVE*4+ydU$^GaK8IK1;dhFDYtE#H# zWmPY~NoYqT;K3KMw|(){H_iN-_P4cvUsY79ZM;2Q?h$AF>3&a>%u#-O{P}WUPDLTK z%;P9Gq@20<^?{PRroziSjIrVM2IFo0QO!F0d#NYy?Yefo=sNcMUTrZyXFYo?G3=`V zeHYMo4E+ZDFRU*ZJGZF-Iut#|Jmd`8oM*Rh_8(a9p?)d#jZi!?qNe5>?K2d|{7VAn z_}e+>vgotkH87MwpW3`_>(>nJTKh%d|GUk=|7Rcl z23|`3yBNMnW?l(ZT5Q6v|GhRjO^e;OT${JUrB|TGSm0rQN&Wut?8bk(;^o_vk5?Am zNMDh%rP~wqx6qeoctyPJ)W@vDc5N*MQBWhEWQ@b}edzaZOHulzu*cg2 zWKLQ_jGim=fY$I$JoWFSt(LMoi7yly6c@gldh#5{vwZg@p7WsFC1n}hgWY@Gg`Y#e zkQ99`VoM1h#C|tFPCIhPa=9a0>7k2U+VY~be+X@f3(L25dwd_dt)F%zp3`n?0d3W* zw(wWvTWQNsZOPf#b1#In^%ZH0Gq=CfLGc-5B0!@bp>+aafCqt0RAP8~L17oeWo~-I||Q>J8wYpJ}do>2Fg2TTeUj zr|3~V^`CoX?q%N%eu?_=h3#T>j%6uVCkSS2hxc<@El*54PD_*A=8%YB_>FI=MJn{H-EUc z@Gj=C9vX^e6(}YVeEtlH8`Y%}O^=p22>WGxx-Ftv-Qz*Qe1Gg%y%cL_DiLG^41Ff;@o?$Fb?Uzi1&hLg1ho8@jHCKKXbeJ{gv`P zeaKqKIQG!Kxh|%k`0uB>;>mwM%^sWhw5=Sm2_HT!W+wJ@|H~^={mUA?qF0x*dn0Yx zbv0yYDciNND@k}DW7B|;I!`&*#D`h#5inQ_Df6wyrb}HXd?!<0{3v=HP1|~8jq;IP zqXmbk7+moWD}Ge#RCOLkmq1=n#b-UPbrwI2f5+X#)bd~Ew0uZa(WB&Bk!OLSi}+z% zzF0Mmn3o%V#yQy|FWB)5o5|f;rEM&_)LLINW*{#7&QcwE9T!gIoNrz?r}JTX&l;<} z!Cn)cG_fE@4f2|4k5{dm#{1@V1Hie2@I2N#pkVooUNQSQ{+BDwU$Q`LRZqRmo{Wy+2bmq-@88U zQfE)1H3r}g-Qb+#`L~Qi#vF~~jnF=Hsj9zXXp#>)DE-Y;I20Ey;@ked8_ir^VodPL zMKAEbZOl)Xbo7%Oe?Gj%9q<}!Ifrk6hLn`uL&#iJ(H{+6(a8*c|DN9hm*jU=6@7_1 zi^}fpkZ~XSdtFhe*^HsG%UrE>+(T1UG++dI%U{>(?egV^&GK14?deI>t(t>4-F{?;z7zNAdT0IQ0GCj5}O z$ak{-FY?=|JGt}L_a@7^`TbH?QDipv_Omp%~;9j2Y&uXfGw z>ldltxd(R5D5D%5$d;RbyK6={zsvPep__B7rWfcJhwwq#vb=iknVWO<)9UxzyJlo~ zw3p;})n9ha$knai2Y1aV-dR0emA@x-s%EI)ZM$X!?cWd0JtJk+wR6wprfBBx4|mO2 zv~&6Nk{R5k%R7Db+%p*i-AfGkr`j%a?5drkv{Suex;9|IaBt_zq5{Dq_;HzQaarK> zu9wK!2rO)vZZFg8YoMzoCXBOD%V!TgN-a5{z|LVnNJCr{`dGKOUy$U!m$B$$T}@Y@hN6D6g7s)&KTLRlc0^dnwPDX_X%{%V$x3yR;v)`kj-m z>W`-URwE~^0`+1R})lyY5yk5wX5y=J?pYS%D<## z!Efx>K1d9`MctkJedl!7+WEw6+=1`9eg5A=nW}erQmC3bckpb}p|`-F3~2)x%ei{1 zT^HPu=MtXPdtfThUpJqRXuwRKi|zN!U7o*UKQlLZ{*wL7n#=P7`&r9W&tI^g!MSmq zb$6s%_<6*{-Q|3f!d$D!JErjVnn7w_QXWTnGrsDoyumD&H6JSFBP`gA8XOY1Or@V_ zxJ;x>!R6b766yEjGdz^6c!uQJPTru?=zp@<=LL|LHV9} z+yR{}`Nmb;e`div%d6n|Ht(ezzGI4N^Fg!xO|#848hO?Pj?weoi_OD^Pr418;{IXN z?5ul>1;?k&`9-%YwiLVFQYYM7`ft0D`u)NEE`jf{s5P|vp3{HdPtevKSD5!o-7(d| z3$>QWPK>3PHml$bd)6{8ENgia67M~`XnFsJ^JIwYr4r73S5MLJ2>LI2tI&z(NXLd9R+gs{>9Ilv|ne=BHtcq z1Ghzfq5Z4Dm*};Wvr^$y>rge{&zU&2U%Pym!o4eaw&7FDSW4j$^wQGp>YMsu-0#&F z?_Ofw>V1g`7e8%8?~hCDe)ds^HZttzIYZR*D4y;8ks{yQ`{RE(_DAy&HO5%pmr&mD zewVpFGKPk@mpZ9l=E(-M4H|U)T;X&pjKqPdQ+F zRXpB27yhAa5~oq9Gr^<`I?^r~Tazi|Ar;Lqp!&S8Z$2a$;)zmFPsbwA_I z9uc}9c$jN8LXG1Wj6*#eu?mLG_H&K-{HpofOaiM88JWApeJgS`YtFY$R64&qij-O(F zSM{CWMdv%FCH;)4BtA6K9@D;fHKs2+$F#&6Q(i*9W7^M{`h!ykII8fyA2``G#P_PpT_tyJRjlIu2KLJ;_RA{j?K{W2 zB{{kO!MC&igKua52j9;555ArIAAEb2`c`QFr-Jo_tJU{@)=A=UMfZfSNrj(v^0Q8* ztW%$}B9aigi~KW+4qOf&3Xc4|(?OqT%cL2J{o>qYaPE9^f{nQk{kz4d)$V;rogoHi zNCUoI*CUHi$Nf&*_uw-*6PlM#t_JUj zjl_`bM!yz(%ow_Roo$zqdMmLTiOd@=E5kKL>y0zTZ<1#*#i|QM}*ng;$m5AL{Gl^3m#aH^QDDX5uh(>v`>P}9qVea9A?~v&S^mcbo9>tY@D%u? z#YFJ0!|yX@$7ro$IeEbzC#UffUTvPQa@=~)naVefGv$vF%MoL|Hzdt7LyOyUXyr)q zC#QLG^J4;fEWZcM_s=MZ2{1?BCU07aYs6GJix)92i6?o6|L;PB#dfs%AzkTuJZ~Vo z-i)0LeWpVTKm*vNVt-cLc@>%=- z7JWPWdWSyiqx!3f?(gV@&3TiW2XW~9x99u?YtH))^q%uhYtDB>jlqZ>!@={LbANqL zwB~I0CF8mws=t!x{yx00IUlsz6z6H^aKF68aC(3pJM&xei)|9HuH(ihP|RTCq-oH;Cp2NgeX z*+&PTRyK>{@r-4g@ z_pa+7FS?$)ZjEKw*`a~*ea$e_Ki&P%1{D`5<7}dht^DtxjTG>}IX-fY#TZAmd7m`S zM8?^Yh%AInS=PwUJ@fu$!{bKdua#aMtQhmmdexukioZ{PEzC*ABXf~5naf%!m-E9h z2j|#ZqQ)-Yt>hc>bH#4>mtK)eKGKX)%xA4Gxkj^^Q-eR#{*d`Kt$Fmt26!ZT(JXMF zo^z@O*xP4PEoTjSgEJ9)YOo=0v22}N7FQ*O)}w=o>&$IgO zx!FxIuT%bBPkGG1IgEc!PdjsYzQytUkonvEeh%OB{yoS0fphtOuH$>2Z*e?7#Pf4K z&*u2&GJeVjUe)v6*sB=7QB%V&cOzh87*@z62x*(fR7y1kS= zGKD=djr}D)Hl9JIU8ars{up{@ShfbCc>+(*fQ^hl&(xXRk~&|>z(1-@Z6QD0ZBO;) z8Kn)IXDoncjDcq?Bi5uq@r--cwU4Z7D*xHH-=u6^OIY*UaFf3FFvq0e1%)^_yz6%f#O7YS? z`O*T^DW0S^`TD8*D>Kj3e$mr(xGR-VIl6kqAe|dt`V;w}-XvAn!e9v6p)Z)cg0hk&ge5|mCd-j=fkiWciy9d7+ z5AVdzPu@6u4@ZR3Z*etEW>1JMxW@8>%VPcR#Li&zA@X~7r&gc!OhQwQbxsKmdMuf# z1bbhAb+`L<_Q}3ED!ysC_^mXoxT!9REyQ?K)zlQ>_i+0{es^7}HSxP>&}UsLH>b&yB!xFu=$79|QusRF zNxsaj8Cq7?81}v30KOjLXVZ*t#${v3{gp}%`*$t@pOTTAHWoequJV)FlG!14D(;b` z>_NNiwB(#I%PP&X{h819)Vt5FcX?`ey}Ky$-7r_|3R7C?OKZKvv|UcWG$d^=;k~1L zOXgQnRrxn5Z+KLAm`g+AgHEoirM}O6uc&6w^S6T|APBOofhb{?yi8W7tB~|4E+4*p=Bh#a8mAikoA9U6K z5np95{M?Y5O!sALz zNm@9-d$D)jM?U{Na>5#V+9b)Tn#sM|CGI%M+me%BOZ+JEzRa^ie5T07%kRdsjR$+d zmc?(ShTeb2RsRY&s`kl%H1H-ae423r1HqRqf-lrvvv^3F;x%M0f8-lQ2RlsuVHb1M z8Dp|n+fvMTC8^ChGQJ_eQEVWiI?(4^ZK?0DSzXUssIlct43TqYi~p&KA<6leiSN@1 z>i&*(6n|Ce?-%r!girN7>^-%w%cgDD9uZ%)#Bd|IjCSxG8H0}=dKUw|iwC|z&XNXb zU^8^ww$turoQ=>;^eI^x%ExSy(tFK6-nCZzgW`EF?XqSgv2DEZ-Uu_-*7tdjkKb0& zO#!DhnGI>79|5Du;z!ARnbVQXw@mx=Udr(e+D7iPHT4&dVh-`jf9wj{kg@xIAJ_B? zmG?O*{4#aZgTbSI{MtEh)@b`odi&>NV*f}AH}d|VdG@c-vQt8%fyMQ-Lk_&8f)4yR zVodpDhnx%6InlrwATnt#`1RE6~?5VUrmAENDjO3@0-L}e#y5}(C=+4N)2r!U+=-kH0-hD8DrcBxo7e% z>TE^V7vc9Y{7mu1TO)q33a2g?eCzRtox?gSc*aQIYVoxJAr=Ao~Kt2ClQ+@bm_M7rhn?x z6m7rq8Ts{hmETN@gqo&9~=aXH$_b+q$>V>};TY_>DaZs$PXc8=WE zGq1}W?L6fe&rtHP%e=0H~hUW*;$nUG|*^UraXU;1zRw$tEf=Y2;z^Bm*3Ho>)Xx~j&^?QXlJHlJlB#VQRcPRZs+%X+j-E@&TEc#COF2kgji!~r^#;T4}IIY z-O|1k7GQm$t@@CJZ`u1$G+`c=V)iOqn(p{ z)4jjQAt&vuu-o}l-*%=u+PUA+&U;onvcFba@Tsud`E%cP0*-b{9qqj79FGN`g?2lC z>Dx}Sqn#TZ?d-JLNtgW&eB!uo$bfEDBI82CioPN|J^v>U(6(h-yvRxD@sHfvHp!!w z$GiFbme}7Ces@CeYWV*n?$Jr0tbyO+AKSwJILby)7UB0lDKm8Zn#i{rLz$1?l5akb z|Noo1cMp%MIv4-m&o%fG8I+ z322*}EmKoz(Vl>yLEa_)tGpjD-y?PZ`M9=UneQ`@8Rff_7hhNTFZ<1Bi!UOMtt(c} zVbKq1%ZiaK``XI;L;iQ$l%mtnn_Hnb&sg-POL*n@q4O6l@F4P@&Ugkt5t6@@x6RzqAok`(>N!GoV70_pv#H)j88E9o{$x*kaxyig*^hF;C%R= z<QYoKd-S)XeTF~rRZqc_jL`?b^g)@BEpop0GsB0otfJ-mvGSIY*Q+LFYxwobSbCUG z@%8MYzY2c68h*W!F21K@mH#5;%j{_v^wDPaF`Pbjz5IQ>4&>#WuBfy*q3psU^HK?z}!1Fg~{YE)i%O@W<{J~fKNNK7yeQTxuQ2%Ys^yQXz z3bAqI_Ncn8TFyzxxZgr=vL|53&p+eY!jCh%vwfVsYvG&5Sskr1&47D+n#Gq`?s@p! zH&uLZhR=4Te-#`#3J#~5YxW>>GGe_?TyX)c%roBlD-t%^R9qNt6B?doxvHW_#>0d7jJ~_Oj{!T*h2kda(E(DRCD& zs|fCW1O3NqqW`FU*Pu5d3naj^3cR#(?w1%4t%c|w_{}W^2Zdp`lKWNsr16uO9hGJ1 zg|cSmwOVQ9eYh~Zc_(+(>E9a6yo(rTeN6pMi3cNP{JdB2o;7pcP+9RQk#AO+Mym|5 zXeE8mP?`C|Ws*mhdBrL-*+}mjDs$s-ne>rmBET7X-=-VsS-cy4TQFRPGb5pWTV$1) zVWj(q$}Ai%Gt(+#)Mt$=b+(bd$0{@Zrr|Pkjc=k`<2P6I%F>tA8;tX#XB_A(o{tK2 zZ#8t5(1y9)X!59A!(;2jWe8~X(uEtYGhiUq_GD=^ZixQ5=N#Sku+io zhvxgUq{*EqA?^NN(x#3~dqdJLADQ;5q-Bmw>yosqMy9uf# zkm&knk>_E2yhF?FC9OKiEN9A>qsv`BM!9Bb&y3x!neyc5a!F&93rKt1(XIE>lpjZz zbB*CoGh5rTnRd^=++sw1H!{@r?oNUscZE>S< z>)`we`aK^ScB)~!)#UzDlhBjtI#6^=)yNtDg|1>6I$eH(1H%6-cwU(c4%nXVovf#) zkS1{eJ;-9Ir&4pIkMiDw9#)Zf0GzFKJg6?oE$4nqi8H``SE*Z6;usWek~>xPygQoR zazCETl#O4|quZ+@}`vo#G7O#|OR_nwF1@y&(b_<8yUG z@`|Om6}~)IcsTf|Td{vUgRIz+upkIc-n5)`X!*hd{1B8`?<>f)Vvoc|qonI+gp0SI zI=@5U_Io^q_f&{;;v<%ZN-T}LWNoRZ7I~rN8bh9hkI%9Cp#T4c(I5FQ^{Ui+c%>33 zqihHAg|&X4uAC4!!tYO&$k}|C|90lnD|lcOeE0lC@<@Iqu$X#Az&7b$CoNS;=qoT` zyPGrvzPS^|gl`A%oe6xGn(&}as@U)~Wqz8Ggf#)*n%GUd9 z{g-jZne8}fN7A*t>_9nB5A)f*hnPEdWndQPJDMJ!5SWIIVP%tHPY|1uobT8mbB4~s zb1(A3=Z4P7=Bz(~FT^PM2YZHb7Pzdoxbs=g;j-RZa)QKanakZL{A~Q}{KEK!&(-^r zJ|$rJC@8ABS5a;J?EJ#`h4UN7Z~WfW*Q5K5`X&XC6E;$3kTbq-?3BF+A2anX=0%Bf zy@b8@6ueIp{BEtuyUJJ`*oSUdE_tfokoPOfu!os?0z>v}x&FX-CED`Q5ZT}P2{JZy zNI%t=CIxmKJHJEg7@C9jj>qGJ8g_PBFOkVwSu^S{ez92rcYXB&+;K#3$F{T)cM5%W z*NggnaOuqRCGS1pYTkGt z+0Z}nO}9NQbPn#=1>bVg)PJRu-fZWr3w{ONoXc}l?r+w#IoN7ElC2WInp z#yur4KwOVG;L*3gmKew;?aaa{*pJ}60qq27l=&;N%^-f+1MDBM5k4#HhyQf*caeZ$oE@Acu}#XrGmgpLoL1_SSe{ZwU&}vC3A{nMT?2zp%N{;Vxz+g1 zrwt5di*Gjcx%GPV6pw8a+vubrU8BB#C!_`%m@7%&4bL$9!@(WDq;A=Rhv}cxw~V^< zda&JMA0D`9UH451YzV3Ax5u%UQJ36nKbkIz@B5(r(s!f#sOw@eXRv=6F_}y{)P>$m z=GUS{2cbobL63JN`zT+0aParh;ui!Z{Ur2S=*@M&Y$AK$F#a0AGdQfe_!Bp9FYh`p zh22lypJnFE_8xZgSV=HNm6OC|m=bhN}t zpDL*TP(?+%AN}y5ip+M$+{oacXj|&A`t~d8_IHU$ zc3dZC11;L&P1AWORiC@9#XZm-;i+~~Ul-*LQkOL!4*@Ul1Dm&;HP0=-Z=5?GD<;j% zW8EqDhQL9>^1&TqM>s&+UhW6K zhPJz@x5uHJ@ZdLvUq;_<>^vFfSrW^iNn)(s#{5`q3a&p0t}iC7%ha_WBi{2Q>a+Cg zdLQuHLJmKnb=m`Q_^mWY5t9u&1!>zY*<5rhHJqIgT>bCNhv4EP;8mfy-+*Qb&Ogn* z{ZfI_)PY^&Wzos-E_UwO%)Qth*!QokoHWwzP_NH@ynZfo7W?*L_&iyQBeZi3??Dqb0t14Bj(10zxnu))S5m9GG{I9%d7Ek)FKSO14+|%N5_ay;H&J753W#~t_b;l zfV#(m8Ic7>%R$MMgAd*=HWG`@`>5Z6-zL8LZrgX*2M^&xVXlAb2eH8$+SqgWU(8Y- zD2^v?g~VNYgudOw6Fpg_0xbD}YmI&CtC-zhRWYaiKN*v+;+}R5ygph!k$64=gW8MD zZn&7G_^@GT!7r6~Js#{q4(@#V)3*l`rT=MWUWL44<$K-CcW!eB{)tM!%2Q{?FcQB< z@QEIu$ckh1Jh2L|1rMiwW}ka*b7zaRGdN%F4YK2N7l!X$I6ipe@WmUC-=jvowgA3+ zC*-WK<$s@1-qJ32!J)G=&Q<{jv1)2yIrohVjBSmoF8(R-_m>s;sobLk{d2sY4sf)@ z*{|ZMh1a@QEzI*YoBwmcm6En*-aOB{W?HJ5w%j@2ldBltOU>uXgd06o=Kl`!`E~aK zPqX>|UGrIj978H|~EQ-@x~|!<3lWZN%p-@oX7BlOpHRj@V<` zKDJM2JHb6v$LvvUAKD|^j@w;rhdA>g^H70raj3tt2Os4&+9^z*94HDW2Jm!+`EmI( zI~(*h>(k3iJyM_4EA^|`HS2Y{E50duKWC2YXAkEMv+yk-)?Khwb-6Na5yrU$Ta>F% zak~6Um}`&Xavgtao~KbA=Xz3&aILnFcRgf}bp6JjfRB5Wp1&909_~@o|M%^g?WaY;A*XP@N16gsqCfdoS@U}<-|NBk*7;8lI8W+&A*7C7yo-;3 zjOjS%1Pkdy761LvE&u&bIX~nK;UU(s&gO8Hvo5&{h@sp%Z&R4(Yn$?Dv!|-LxC8h; z2Cgrs{e#R$=p2Y{tb6cZ$)ovKkw^4yGH2&D=Yz9u0(UJ0hb;h?-H8A2eEf%PdhBiR zUFB->i+mTG>}9J}eO-kw5Z|&o?g_*9KSyjdxyO}{eT*sfG;=6163MGF->0X6hxr-uQ(T+G z(yD$3oeSqgyQeAKBOBL{@p0;gGM=LMdhUS?_7piwlV{JB2hse)k zeNU(TbDN78Pa$hi(8~Dqc^9Ahv3%)eJR`?DslRE8a-w$L%|QpT>T`b>J+q9l)sdF5 zAToGxl5!$fojtdCUSv@G3teRoypg3G_+&luUdOZ07Wk?~>2K{MCV4NsZOMA#v`Kn7 z{mKAl-ol5M_m6k8H!8+qn?ye&|MTywo>)trGFKT_dUIqB^YG0QTW1gak&ii&xz-|y ztsgSqY36(%!T)M2->o^9xt<;}*DV#ZHb@-`F(qZLzsg*Du}#Q)^M_E!eLz!92cuIrDJvGEMpIb;eGVjdi>9dpZKRZQoW$6e*CbB;qhetv#%_Mt7_@2;~&HI$ZT<)qRtl{?|r$X;ar zU=ri%S*M#9+#KxKtyK2n3)-uMqGx_2 z`Mw-I^KtcxDbG)yw0M44*y78|>}#f`+1AYSZCyOC%(iA)&bGy`Quc|M7j6h|d}7T3 z^2z&8)E91$=TF0p=RSw=+#mVE4cB_rHF@L0*2wpN^DI1<-uQ1yRtbLR+Tc6j<;3rvc`JXod{Jo)i;xCwI7wcxty#g*3orK6S`IC_^ zSlfEeR%NDVK6)#BWIQxQ&aF#Y8fl%Zf4VX|&rHG4wEwh)fZVY0GT;T(j- zH#{(tw%Iq5M$Fohdh+xlqY8Y=UX=Z`oab!zq3kc&iyhCCMn7as0>AOZ9W8xO)%~(d z9q9dm*V5&x&L>NKlCPF$X`Nc>1y_|GQ7db%(aXQlML%UMF6tm&^jv4SGPlC1=sxx? zcvs&L+ul}fQOR55qeJeP9z^G>79i`Jb*eBAF<`)HDZEe`xLoQ=XKcb7mGMML8<)CKt=uj9>t5RBJ)anq8O)hJ*ORc5u_g`B z%U;?N-AKei9sXiY+MR8S(AhOJuaS(Sxsv$>23+R%Rabd)q>T7K3Lp0Xc7Zb1s<{pw z#ks+fLfR3#VfX*T_6{=#&FB}Uy*4+LV2O<1TD!bY zhBCR7m3v}6)2|KG1H)OsaG}H1;1w8V?Xsu%=tTGI4&Wc>R2 zf%{}_jtEX*Ep}07Det>^b~9&=8@xHWtR*(%l5)z|0S_n9_xhwB;J{0KG^vM}Y5JP( zrX5++v=0YM=95QY&+5CEGcGGwgD(0ec2|*0*ZjfOv<_PdOkkXp6IhYw$Fk~=5C?%7$8DhtdS6&NllQ zNn05kt0&4G6D_py-#j(m#rIWUv--aW^}FU}zS8(F{<8WU%HAPObfEg&@s#=3_YU&6 z@ZP!(`L!@z7M}_aeI4VjM&I&?KA(wgapcJ`%d|l2tv(Aq5xgFnCVke(-@^RJKFHvi zKp$&)N}DH8scSWUq}CkJCD@c>?^EdcE@TLFx=W2P^Uaq%Y`uwrlWB ze(+@$c&Z%SRS1vdpRB}cTU;p`d=lra3$w60_|fSUOvWZ{(p+VF=A+&4vX02S_5$=o zVjpzyj01lQPdU21Ykp^oJA8}Ms@qb|h6OBt;(O@hY0}ZBqMw?eubm1!iw*8Q_|Qj~ zFPYDqIC~*7%wgU~>$hs7l@pEydBN5R%52%kjs={TWo%02_@I|QV{YYq)%M~%WX7LR zUJ-roWwQb*bH9(cor+>U}u-;cuAMbZt@2BV=@87WAtK$Oc zyszS2pPzhpAdkJ`v)(zoDDPjl-tRWv!5v0_;^G5GC{KKSc|W1t9Uf45zuo%2{c`=i z#QNT3eE%ZvdV9aRLI1wUdM`2F^LcM#eQS{?Mc>`P{)&eue3-O#Q^O5-p`9;~4@dey zEwbo3n;PigzLqTZ@Mt|`sQfCj*dxTqWX~a&z%wYZed4#NgjMehm03rZF<|Sa;MZsq zK1QdR;F5t@?l}@zt@#J)lyXYm&ALo|0DK@YDtl5-N1m|$Yvf72A$sOP;M(&HG4&#& zXVwF^VKIf9>cMdmv&l6#I;IL=QCD4bOqpltrbDEc&m`|d(KGkRfAXXTqGw9p)CJKq zE6j4Kj_8>g{8vbq_GCY&$^Jp_oQpi8G1r;A7o;EDS#eqQ8->cQPn;PCJ|PBsug?2E zp)ARLU1F*a=gSPQe&c1yXFIIt^MZS%?$p!p!b-E=&ZX?VvL>>=$e|PGu!narPdW5q zBkgl1$0y0O|2f+DBmdpB@hIOn+h^;%vb51OuF2gzPMInEYYTX-i!-)s6kMD}$$G)#|W`lQ!?~!8SM)rHSYsy2M{2u6?Mjl7H*OReDOVQA^+hW3E#74M+ zIj#C0x*4+`jWgZ44u0Zy^w*?B~VfknP9wyZ1lTCSYHWH=yI$nD7z0 zozZx?3f&XD#07g$?(R5+4p;6~80rK5IUevc_Yd@Eh<^@ikU4#xXSdB+wAJPyE{(>0 zA0vIfKDtMZllbOGnM?WBcaPfCabB&g{cNzLc`G(2o?W^fDk`AXcn2Pzf;h>Tm0kA0 z=(^tii4qrhR*lmxTj)U^S(2-&{>=R~-23SCM|2YNO|^6Hz&73;{>aWcw|3c0W_#r z%^z~_ax`}ienh?r+)+7UQ$>GF#hRR%QQq%;Z;%c5f)_jC6AJmyy>|X| z{>z@@uys+rVk?rga_JlSGKgDO7uKJBF<*Dte}3*XT#sF-Q0`|}7=Rk?s#3Yz5V*KI zzS;ey>nAMD=7(=YjKn8eM&2X$Pl$b;W~$Ptqa9fFP@Uh{e!yYf5=bJB`Fbq?z#I`BlENvvjTm?@1Ji~0I2Qubh3u6=V5IQXjD|emB*Ryp<2rr+o8a<5M7h6RU@4+Jt6k)M zSHza5uJrkH8u=bszN#I#iHR(~vR%#_MDT5fZ&l7-zD1R&kl z&iM`BqRZE`f5f-w@~hgv&9^ANUF})LlkhS!hR=KQF}qTUr%$9CbSV;(x|P3A>-JSe!zz<1!n@^1{KTWNAmst|fx zNc~a7J>>E&Gk<3LhkLx9QZ>r&d5hSo4o4ejx`H46XCC%^r@s~YZ>8nhga-5eHtY1;c+cYf*mF1HLoi%l5ouC~Rli@)gI_>M zTEnP3d-OaDN8~valBYM9m><$t(n_&8meIeKZKeG^$abOnjvAf69fC9{U(R6`LL0YibL8Y7c8W1OL|#|0jMvvA^?rlA-6_smeg@hA9)} zY@6ts{>b^QWiLbp^0&eF3eIBQXM9y{l6Ob>7F98XwVGR_R%Q@;(MpdX z{oMp~j^mV)cc-AcMqhU9YFle}wi4uiw1I>0OV#iuK3lTO4nHF?a4+L&*fitYBu3mg zbRqBJgX5=;T==Rip5pKMC+2H2^W|flBCCj>XAgBY+Z}zJ^C-cu^^Iq3lU$@A$T>JPhV86%R&9Ze~Axbn1eXHe9z^(#GY^AdpK#9Eb~ol zLf_)|8N6T5w0W)F#QejLOh3P_`;oPaE@AlmdjIR_4r%{+;{J)xOU6%s;9fbd*42&w zSXhh_)52Oi`1NMvzlhHH@|s$mf4qbBxzt$y`Ykn1=K<%-9fT_LVPjtG><#YyMK33N zLwMXc_JsCDeP(($ZOOgS z*50w|6yCR-_DYlK!|sAjqW>(NtW*kL?Rl`?U7o1~>k|w(Z~zze^reC|lmDano9JT*VA34c&zo5__-gjUJr9G+QsS_Esw?mW8woB$G)FMAMhv8 z&l0`726&eL@Rwd<$o-CeB!2XD$jRyKi?H~49%lCd ztk*y_<@V(&O|?8lJ{Or*aHf9OdyKadU2932@chEh^0eVQ8>**@eZv+P`Y!M?dMu$b z^ryhfOX#AkwF$**3Uera+WNhu%-Q?MXVY1m(E2}Fqs9%|$GzT{HDPtnw3yYO-8GT@ z8OuJ613u${&jjEz5nqjP^tNGb@8v4Ne(?8M@VCU%>V_s*GR&WuyT`ymE%v1TT5v?N z;N*Q?PtPsH*my0^BV+Eq2|TZ)UTeW;DzI~`ND0;;=N+~uw+U=NwM=c2^8Zsje^bDw zmlJwno%sQGTvD%*$9iUn4~li)4fy?75&lhy!?>q_KFK+4!7bh2;#@!Rd}aSCtwEF5`p9(&e{JSWBsD_hi#pshr zxALUME0xEKm6DzKK4@`9`pft}bz=`1tG(UmUg6u zGt5C*w7{sy=n-x2;op~6iQhE)U-TnNCwHau-P(KRnT{cy)Ek}1@_cW7p`<-ydGgXT zOUI!ziYvn3CpZn?w+v#LuCOH*!CM4xS|UB>bf^yJ7MC3tkD61wXlT z<2`tfA5-@S;GS{h-Hl&;_qU8#FR#P_!&8RgGe3^=c$9OeDlyLK3q4uzPE~4>zkL7q z(ZxCZ1@N&|s@w11zf;%E72@X^G22K_Oh_Vs>D~0cZw>}0PeHA#}3!Lsnk9U>m@c4n|C0F z=gdw1{-(e$4;A01$K`y zM}5${eM0X_Q*4z_+i&d`TdSM}6Zo^zx|rL+Daydf_eq=vzE9Fu z0}smCulTm(z_{$UW%!Qc4-->mi}Sm%XJO-tX|aDvAFm(ykT(B_@yIAE{CQ&AH0sU( zhg!Hw-~YhqGuv+Mw{)CuQU9*Luy4PD&hUyZclT3D(8{+PydygGSI7fjIeR_p(fyRf zfK-+^pnGD6bD~Gq&=2?h)Eo2@W8TsaZ$dvDo2$gm0`||`>kUpKF7#1dFC35jAi809 z8{V2tpR>Es4Nr2(SprpT?cmi6eJzc643AG+-|A)`NSw|#`cZa?ez@p|+?{@mzBGb! zo6%JtV-6msFLB(%kxgGdqc8W+m#tNzqn5rHHiQ2{mbwmE?lF9>&zOCIFEP$!jq1~G z=I`jk-rzUs&!;=Q!L%{@#db+j!c{8l$LGO|2av&MR~axng0DmdXajdzX#xjw)~p);A{1gxJP1OMxoGf6)r=_U-l$$#N*^Y9zA z@X-Ne2Y8`@mR$IzjCr2r(DfDABps}Ulz#!(6x-z1pL1si?F)=*C&p(>zyHR)y9bDo zYw>63N%o1JB!hcSMCR!RmSY)5g2r7N$Qt)jUlMj!H~E%f!xA1-aR0%}yWCYahkq*Y zlZtGOPew^H`+e}^2khx_tkrmaD>tEY^WWRvjlM_vU6*OX%M}Yf-N5MC z+X~>h;bZNYncN}b>YfIzP~%;(%$4X%G}Y~jQ=LVE z#`^%jml)sA%sj~=Ta&lv3f)(9iF3w64?GflUA%u4ykseR`eycX75rT}`(OCH#q4$A z-7NfL;jGi2=L{k8l&sSL=V6XPi!EJ)hdFV=XBl-5^N5S!1>4~38cg2qRW-6mY-e(| z=p%dyulWafJ9Nnx@OFC4wVEtFPQZvgiT<;iy&y1D0Su*apKz#*8LIaZJ(dDLC3mFg ze9Q(-k0mYsQ#ZY8YdXt1YLkZXhQt(uUg-N>cr2B&a#w}i_i`h;OyRQ@^1FVUfj3%I zWsdYCpMFqoR&7y8UHE|FJ5yq%mE$)mdzP5)x=(cndd|)-jND7R=i6St>jb(H>JsKLL)@~S~&fn zTZ3*jxD6U`5E|eCcOI*6+r_zKOPBdFX}Nh`eEXFW z7jnHtS5irHy5XJkyfbG^VqfxHg}-i3ZuGUOz@G#7>m6(^rtKoZia6%-0yx7wCAExm!vp*5#<=A35W4=r;35pY`TWy&1Ehq=I1dKzu>M7On1bX(rp zytBs2^*q7tojiSlpTmv(0{45SDkTZXx(;j=$?!OH8T;oZ#kvHCyp4S646o)MG+W?Z zo3pPloiS2>5jZD>GWXdMTocIWNT27)R8r);Sy8&0SoAnDq}cuIk)@@No6#?$kJ=}C zcCDQD)#_jsdT1xUxrS_dPrp{aIj5F;fFsD)NIr|M*MlEx^)g=0yg2s8D9l97WuZp%}kh`8`pdGRsno|5D$u%`&UF2dJj zpW$l~*Y<^fRhoVQ{uKS{dhTwQIXe95;OtJ)ga!yL#~*x2tLO^Ah1vX1f-d|3_!d6~ zH*~?mWjb8|#|y3(y72g$oPjdw0(OAnQ&F+5XOIzwbSNGJ=a0tkm$P54;Frywdu*B# z(^avty+G)PO^v~3;I~6RB;LcJ!H$W!s>`3XzrlSBn9fpNMVtX~tpcVC^NQe)B8ohD z-X+MdF~j>VtGxl;z3i8l*?Xh+PSIZnOJ1SgRB(3${Md2ojS$}#_^OAf*Ppit{wlJF z{jvmn923DF6+W)3;>z|2_M!Yg#DCd;SH3@3a*TbKOI=q&2c)h>;L@r~cs2SL!x^B7 zPv$Kulrxl#;0LMWAa&HyPr)HC3;n0Q<43r+ig63By78ln~GeYczSY7eueb z+8%}0ZP`2g-3R|u4bIE_oKfFcdf|rO(Ju5jR4=^!6b|TmuEx%w z`?(4pyzV}D3eH)H&i^Plbsw-`!K{ycB(V>?$2mK2#Z8_L@Lcb)!II2r3$eFr{(An4 z?HD>%91EPUW6rYCA)Ps|>3p*X`Y5^*DVNzdSdxQ0C2_wGK|{{6xA8}d$w1DNv^MaZ z^ue%i#hHV!bW-ng{pFf=EHTFKVGDg3Lkh2XI zoGzC=fD9@y+XL+_=Y2Nc1>XJOKx@7kZ$C6_ppLkRY2uH5qa&bh;qI^(&+qV%-;(hp zzOT^ZzHH*Hg7>Vw?4+M^m!jOEDEvUfdxJvbiLr+~fvmHM_8()OL|^vgWS8qn=!^?G zUS6@Oy^nsiZM(Hy@b}yE@Ii!jG^#e93GKp5XMzuhjTAhgr3l~V zWWNgz^23K!(AQ)1wE8OsKV(aE-3`yxeBNG}Pg_#& zSEx7Mo?H|4xs)$Qy$tUt_H-e0sO=(I!5Xxae|MdI~<@A?!ER&cVU%GAQvJP8Qbq{@QM0mt}UstepR{F&;Crs-=f>z;O^U$x^~sA4a*wImrGjR6OGGOk*|?_jo=FO zij{r#Mz{3swm^eh3)FG{XbQG7Vunz^jKT9n-LiUcmF!=OXIYNFm4yRV@L$H$GqKJ+ zO>wxyo@c?_9n9PATBYf~&J89`l{qzepXvM;SbL8-6}|nNTa_k!S`xP%#82r3x%bWi zjdDV(T+pltXjde*?x@yt+w6g}x-W)Z_f`5Ew(f4|on_~i`|rd?);%9v@E7r2%2I-d zuT}=M38W#fz5|~#7d|Hgo-YafV%ocP-bm+lbX#{)oA3?&#n_+8_doUJZ>;0~F_ELG zU&Dt#gL&(Mj$F!z|C_%U<`;x_bHFp4x{fh~_}RpvTWNNp!v>$gU+vTKh|%!Q-R)wt zER6-f08iJjhvkgKpqW-9dfAKc3Svvn0rn5e*@RHp9$g#fhf5-d*OF0?9QS^k-xzP?+x~%BWy7B z1+Sum_z?fDBEC7{p`~8YEA(Aw^Bl*QLSnxh!w%hhg`&rL>Ag)6*?#Q-=B5tajiuiZ z9e5gPI)BjR2pmC9JbIfq_|7ZmcgT3emdlz=Y+(+o(b@b7-x!%sOP2s_w5MJ~XCv!+ z5*xXSo@2!Pi!KUSwct$Pb5(Lk;nncxp<{6X*Al}e1DT>t&ZQr@-aMCH9(pc)yLLnih%KOpxpfi`$eLTxNsDbF z4>?8n*KN%2Vd76nTh>|(q9YJnxz$Gt&l77!@9RGL`pgSoZf~8x3>zNtUeLX_ZToV2 zi+vfq7O`D;PvDLRxmQ5wq~ycst@E*`(KVhSzF{Hfc0Yr6e~xm(M;&KBo`IKuAICPh zOiw$5{WeqQYv~(#MRxfEebbcKLi9sxcZcw{#J6v^b7nywhnY92LTx%moife>#)*Eo z?Z6tt56ift%s3-d%lWGJnX3<&tLe=5H2Q4OIMHM1GN8$0$b8DX#Eljl=tB2u<+bKX z<~?xBCBN)}$6M7V(f?b0Sp?k3cd7OWwgwr2oqqKAWK$ocW@ zo`LI)^Wz(R8?5u=r|kHt_`Sgd`0n+@LwM$>7D%N1+h~6P+WZ+~`&*K7Vl#4JH)FgG z-MZ*=TQ2u{^7ubhO?GXwyIpsno0qW&eLD<)C2>FBwPE67jqz)W>7fm=2Ml1R=tTb} zb^U6p;`x-iMON=Xw^(`|y2RX3d!PQ-i2gQ&wul^g{_ASfSM5q%uB_o4*3epCYrQRb zhjxthAEr&h(~i@5TDj+L z*x=Xa+b6kRLLX+#YkXTh^O|qYWhrxcmU_I*Wf%7m3xC=<$}ZW%KAl8e790!ACQ|QG zbdthn-@O5SkcO{{Z4!ROnyU>TC4*`dto>ub-gEQ6+^)le%rCJSWWLT4KiZmG!3&}AuJK*ts@c5|? zZ)JCp5)?k)cYkb3?X*ccpMU33?kIxKUx$n!vS$KyO}Z~Jr50Yldnx=XX_u4cAWiuF zuc&3&sU|-z?Fc{KTLjLe{@$g;-;1fkGzlIKkqIQlK>*jpkGSa9*L4=POp`?0LwrSMY~ z+(a z_^0*hCO@g`)9IHVJSRR5=&UQ-prxVEJc1hOWf(@ z&~R%H%Xdp>quU%!{ge)u(7mBGL6;S`zs?GrM?KC*N;?cYKB^4-vlO`>ncx8nbUZbcQnFSq)Zr{wOEiJs(oh!cA$XU6pO^==PG{B^^Z|Of}UGS?3mLj7SP{u!YO~bgw`+(~W;Z53;|!Z?kJfXTc#iu1sDkFlPC#ega=z8m(0R2$?FL zv-JAi5_1*=GvK59!N;ZcIRDG=JP*Uyonr1~j4gZ*hd(#;)5iH~;q@}mMXuwFPL(a$ zFZ5pglSDy~%_Bwb{1A)dCNAggO5<_@J6N z+1*PEJ+07m@$-T%t`#{jR_w#TS3GbvhxYqfW1Fr!lRL%5k1xLMAaJtY9$%Ei8d&~~ z-RudmBRH5JkL*v*gy=RI?CnRcQwEM^dk4NjySt=a+KHETZdo|ge$UE6kIC21#_OJA{fuFsDD8}eTUKAWL>D)Euv9+47>2hf)_ z&yx=v_PD%3-49RxN8=O7ymuk{I*6$uz8oIXd%>I2_^-jk2r!$TT_4OulTN#&xUT3vt}42(idCe?%*ua3o3e9m9f|ulbybY(f4rrJ`TOC z8jzR}htYvZObGE^6n#sJ8RtW*Veg<1O&~^u#D^e8Y0L}P;#0=?3+eAm^zYf_YSUTv zqxjfaX9x2A=-s&o)$>kfz{z>0!jB!|msL4mt=pM`E_pM1Hs8OQb1upN4jcQ<5Px2` z{ZXIzS{-}A*0h0j|MH#qbuc$EtXbDMrO3{i#0NO{VaO1ohe_7y_fMFc_t2|Iowi79 z>%@+b_T+4%#Cnjk5pwSB#mnW6cGDk^GIBm5{u%V1z;tT3vKD+%qDTz;FsJGFC1<-9 zGG7arw;P$i`OM=yU?LBgPy@gD&-00_^=pEQ>P+51&hVAew!|+r;#OR|ync4kF6Vn~ z)N7~yFxm;HJ=SJ3vD0beBzki>A2xu_T+XJY?BeVmy2W_Tf3Z%lS$6;=vQE2@_x5w1 zv>G3F(Ec|D$XqJ=H6(GA)fwQY#zC1oNAVY*iGD)9ue^LX?R{vl@GaTK+P@}ipTE+8bp>CePV#RUug3fUKNw3dA!RVw#cfwEf7?{O=H32!4$nQ^jTiob%knQ;$is#U9%Y?=hR_W3(;y+$8D|+?E^} z$GNKbwtWA6(5yI@z>tjV>-HpA;_?T8Mhkt-p#R$%7hWA-6ep;pt zMaE{qrw91V1U?&RTX@|fKmK*ACrx~qykdi2`|fDX6%T(U_i5z&*K>b{ zt4Qc~AAP+y(y6au4fOUXzm?JWQb%e!4!s6EFY71wLmcIoPo1?T_0KRYDhK4>mt5DRk$*97kK*ce~-V*Wu`0TS)WyLu1;u417nuC zaS(UKl2x7jp9z0*Zu3p-m4)n?1?-(0*+cW$oAZbpZJdL~M@fhKvhKl>-$1{r@S)tJ zD#iZrW_MPYlHGv3F;urHZ%Ex%n@YL=vvlGL=S_}SY+JQEssR6$`6bh$3-M(sh=I4_ z9)#R;_My9hEql3~$E`DEKYO|7v#IzA+3wpNRmZxD{9q$(I{nXzak?T%llgHGJH`Wy zS#}N?ZvpR?jYH~8qaLdcVmf?Q_X|V63f*fLo?d0X9HtMaq*X9};qg7pyWCxz$vg4K z+)mRjsGlLGeX*g)|Iz%^rRMjwQZ=sm8thlJDYRobdn&BS>v3kF+aOMswf+`t%UZ9B ztw5)Y0IVb$7<0*N}BmGbe#&`x!JD3Q zYK%o+wRecM1$`Pf+3OMiaSJz;to-}*Pw1VD<1lx&$T-rmN8J6kcLZ)t0Jn0_>(F_M zZg9Jt)6PXcItZS15)Yqva66%cIxfT)s;vNgsGqs!e7Vpbt54QhYYPvqe+v3TUC^J( zJm~NU9JqSYQj^##U@x{oPjdvWihz(2r#Ad5jQ#mvhFXw zbbd!FIs)M@Qn8r`oQIZKAoh+Bdr2>SGW?Gu?$xF5B={7b`d)j2>lFO|1NJzVz(FT8 z0A6j$k?~4UbP0mn7nK_8FYOv>`bGpOxw84`tnIk&z{)OAE1G;9r(lc3#bYkLVoNb}=X6dK@~#XR47H zj{;+Ou*OJv72Whye(0854`4@PlTjntRqD7Z@u{MORjV)g?$N0x2q!E864w{QzTBo_h zyIJq_2G20(XV_ca);a$r_^30+&^Q|w-T4kY`%u1HjeK1;a0h%~Xnw){4@h3_^U;n> z<@|!y2VN@~D!be$`vCFjE!rk!{>uFPH^23iwd5+{<0Q6rh7zaa&+;g-2OM;llaI9m z&!9`>oMe{`e8E^mo^rm!JwkfB&b~6%-l{8&^|$gk$m7xTIQn)m|3h;O{TK~vqh;gL z7tbeJyb}7Ob`O0?Pw#T;@Y!O(=jbxUl(BqSocK?PF0_EY|0BGW)&F$#^P}t4<-qxW zKZcFOb81KCOG1}!t+~W^s$qUK(|1W_9M2U%Pk8^I`al&`bBBvrk7cLs#xLYjK2Qs= zdEqlXBHo8J*2CJFAOdQ5$zkjGk)7{I1{w?gp@6GNF8x&TIY06yXCChWJ1W z_TBU~2YtBge`KYY$KjK>HzP*$E5d_?rzWA`Iw0FP*?qOV|JpDXfj6Z^36nWOb z7hTQ&3Dg(hy^?nYKE8~noMCAM_xSUmp~P0GXTRxnpsy4esJCKG`*O~0aQ??7>v4p& za30KTm`5DRJSE+kt~fIDh$SiK@OmpM+dEXJ-;WG?yrQhV7doJcuU@%}J2jMj{*A6c zEJKtAExZqD?b=oYtoQ)ku%yAXJ?y=@BHF!R8taN=( zY*Sx9d#8$QXG6xbBkK{@X*0U3`D);l$-{vQ_UXD{ zG}7PI@c+`+7Veag^GhPH6(O&+(r*tjNbeXcW#Pw?!8o$528FL>#CB8W*UzW*{WS2F(<$X}M6xSO@K z)>`D&e+2(Fi~bA!rtEW#brM~53$Rg(e9^rGR@zeiyp-`Oo%*R0bICDnACvhe23QH1SVb3sB+a&D07rR+txmIuunbgW5$P1Q0>lg z&d$p|?q?q-aUZb0kGIP{HhgMjAAjrDvX6OZA79&keuvEGuG2!x7O*dGWPi?QpUy)E zgKm^QUy7!Qye<5k@Gv#-Fv3G7z(YdQ_6Z-Or5SoaXpgQVK1IJI#>sp5ey#j|3jG?6 zH?o|52|ho{`P&y*qaX9DT{v7`WE0^9$6@yr+poyOW8s^nck6Pfj!Wt&FLJ2Nv&fqc z`Xlc)_ymXf4INH<-2y9}^99VQ@`_78XCiw1vD%pU{KawISbX1z_;u(>toh;0{v3QQ zDqHcd^7+jc8^)u0&_j7~bfX zd;1#rj%{sw(n>85@!UfF-oj(()%5S^)@t~kdyc(Je=L~y3m&9DqBlEM@nm}>{b`sn z$_2tUb!h0N`yzn0CO*@r}$otF8|l~QHl?kkN;Xs^D+fJ^b0!_LtpeN`l2z)>^IBQ!qX`6P44H& zzl-vF#3$3-SMO1OEwJljtkv*CM|s!GJ@X#^9;J%i@1<@XrXwPBm|od=euvDLd=JeV zIwrxbx%i={;}a}nQW;-ufzi%sb4+z+|L&$wwG*3{No<4E9;I>-?TyZR|Ik>Pm!+!l zS?@y!M(0@{lE8y?)?A8CUwmABOviKMf|d@s2cHd%eJu1gk9>2OlTg0H3G5hqqpjV=ek+)s^{C*-%<0^( zZt9^!>o@>@7oD{1+ft1yg?;2* zQGc&r@K9s+sRo%{`qBl>(d$mW;ljTBvR=QJUHUSMzSNrUB8yxtZ~`vN2S)TgY|f)c z@-YXJevo{k+qd3zxiaKk?pCtCm6KQex2^X&-i1zE@2$K~ly~MwGoKMWtr!&2M_0(Z zwADjeYI9sr_NtYyz)aVEZS>K~HyTF?%?`aQqZ=OE0dAIin?<)@e{P!&16kCU1y7L* zZ|r5A#b+0JTc_ivpy5r>@LE$BQFoKEr|N(&fjh^Q(9{{gPiNgu;!_XBBeir0cOrj@ z{8(#K=G0PFa8xb0!^b_dIzGBSGQ>7(+=aU8fNqC1Xt&wkg?8BCdsFp#8ZWG88TEvY zAN%S)v9CIyH6OSE;{<`d7`6SY64*t7a&{SCpJN zL;KT1%%zQ~6Ei*Bf6LkzFqaljW7Q*TuD5ac!ud!TH6JqGGLvuH9Wvev)|@>eZ4Iq? z9OI6?__%wCLoI8r$+*q^C2QVot@+&-j{l<$ea*M)ws*6=(QE#9#=KqGcVWHnQ14j0 z*mImgJ3}1XlUuz5r<063%Po5PY(3uPuO2;GzO)B+1F=00$+R&Or$JX-#3fdyr) zV*+y$Jv=8hqxgs?n3G!O1Q}(H4_MH!SF%pqmFuJB-sm`yu@~KlevbY)DvbEu8Qfc= zC3}O8qu(n|Wv?Bz*SX)`Y!hGh6QS`~HTu%EIO9>Lzz6nFC-7n6hF0*$Sa?Bi`$Xt` z&4=%w2j8Cu-~VDu1M~Lxd`*PUf0}uec)->4`xx^mu}Z9YtmRI4zr<#yf12uf)EPOi zy#Tv%6?Eig_=O)m@sOKm@#D`t-?=5$KBK-Ao=SYn3ZQ=DvHJH+UbqNzt)ZLnCw@D?SsVWA#l$ZiH9q{*L15 zg4fs5X9wfAG`CIERUE0JfvA|H{_16ImpG{0~G=UG(EAVzWqS zGtLhs>2iqpt<0`8>=3osLPVea>3DDOMX}u=tH?Pckyrk5yOF2+iabv(`fAS6FY#4z zrknhtN0sv{kBi(h%}AHDTFw;Mla-hkvH9PTt;Af)2KUnKYTPR1-MeUOP`$FE6FtP0 z=xP_;7m?D4o$D6-0-M!nf8+k|xEr@T={!W70hxc5xh&#t-g<0gMa<`24rR$;o>IA$ zxt4id%undu349u&Y^m3#g(F1m`o z>hSZ?V97o6*?WIyUnyhkt4qzX;Mu~BQzkZG8^^Ah=|orf?el}P8n8i>6Av%5a`JVO zCUM{|c7Ko9S)fV!xq6c(>G&^{CRw;YyG98((1{7Yza1R`{%$9PjyFKV{Xz%uFVN+1 z@VLOa@VT--d$0vq^lPq~RN+AH>O}7<_U#1dwThknV!F}i_oz*C|Bik&6Id3R>0))< z`4xi};I}-do4%ydhh6Mx9skru2ZaBTbYe~wLLay@>qhXv(>T=MQKb2-m)p6hvT;aSHs!1ISZpWwOQ7Muc{9$I1OuZ72GM1J1OUE5FYZ`>LA z7Iy>Vqgz|^(9ZS1u;}GJ1(u!{SOSJJfF-$GLTFnC@FRGj8<^7f12ALB0EP}FVaWGn zHMYb{!Go@A+;-`EQpAt)J?Qdh_)>m~FQwd>s?%|a5v9@(?n@a=RDu#)z=9zei}+Lt zukvx;-=_(iH(tnVeF$FojrfOBhsEc-44=~i+zYNQgnuvE&Ac&}$CfGqKlZJ!?B^ZY z<+nHNT-M2d_?8m>3tmYF7dp}PiY)#zGDv2OvtiFw)j{13apU)jOH^0Gr}$n}Eky38 z?^W#gPR^l!hA&3@U%j4ZKgsh9u2kk`a7IGfP{8}YXN?}QC%dGbPH=?J?hO|3lYQCy zpPUn+Z(3);CKo(W4(ne_`y!Whaeh?v3thww5ABnOKDE&&5B4u7eG;E7i@y}v^I&;K z`wyrGK6!ik2JWd{sRTAZYiqLRO6ErTmWRA<^+oz1_lcsz-md)+e96;OHzAPTS-Vrp z`$v@z9aA;uGabNRE_G&vj8ABzHMT-{7NpGs)_1MP! z41yaUDnha={yhPAckstrEhHxc_!Ixr1yUne@L^~wc$Am0>ayPQ{WfFFgve1$Uz zUg%>6?KCnM^4(D|FPMpa?IZkaO5u;?+#v5U@}Jo8+}%x{n~glB>Lh!@GOS=GzhvL7?z>z0Y1Z!Nse=sk2JgR0{n-a^uN%ts8Iarunh+t1vcro-p^zBBS>3W@CwuezYyW~zw{k9 z@vDpc)Uk>>sLxgCC~|oyQ%D}Gj?v?jm`&23M*Ooz_s2tBS5lYXQ9xX)h@uLs9%zp> zClTN)t1r}H_T{k)`Xc?nzBsYLQAGSfmoX;lk@c>l{a$F2*bFl9dljF-z9BzdYzgcE z4`;1Xnd^LPeKN0A#8}-8jEtUN{Fw(13Z8*Rh%aZZs`aU?@ulu05?WME-+qfvpXlzp z;T?K`j{;&6cw!uZ43FZu-hrRX7iU*=c$t=axVw83_dA2Tot&3Uz(3_SHKB-o9urH=;_b`nnxUyc;#8xQKVSZu6=Ymi%k zBdMb-&v@<@{sDL>0v_-cn{|M5?D_mp<9_!j_OIX*`2N>KHp?J>kbL*@9p9N*-P~QD z>QO4EalWtTo7k?v>jx()C6XuGtgjz^gS02UHeaB=eBdl~iH$pjjP!JHj@*;bBJfQ= zhT3`}KB)C?)9H9G?HAI1KJ>sbuuZpt6k_Y_8K*9hed2ZGagVoB(tDm**yY&BXYO!k zhO0}mYQQ19ZVdhbc5MFP2j+&w7HyJqseQ=Bg$_w~`sMv3YuwHFd$%$lw3ko&{Ex}KL#a%v zsdv9S5511<`|eF2DxUlPs$zeavzc;+&p6}z|FQS(@ljRR0{=NP37p9gLLLN2fFuTV zCV+?rNEDh$5Y0nD0+oWcBwE`fBUlt4fJg#Z69UR;6qVkRNYx~Yg)6klZL37A1@VFJ z+S+TPRs+#0MI=!mzwbKd>|_!Lw7=i|^Y_R3oY&f~wbx#I?X}lhd*gME8uhR8gwOlIwkI9Od~-n=;_JyOOmUkrRKMs+r@(Gj1mGp(QsJq5HU=_88i_ z!p>B4t+qpAiGC<+ph2VTb?2JGX5OHZX3CK@ZZA&8^x|Y0^%Pu+ zj8_alZ70U;u`}SXBnXH2&vd$$XX6`?-He^RzevU^G-?p{Ok}J+WnR`>=6qGA3trFM z+F&j zt>Sz_qr#PVynj1>F)9!VeqSQZx6ebm&h%&cR=pqWt+!Xzdn`207*zC;2Od1&Aq_mp z+$8Z%D)?W2M^bE~!-%MNcp}6vyAc|b*pQ2$Y46Eie7?2Y zQ4?I(R_I6KaD0nigVO9H&HLAcEj|9u)&$kY3ewG|Ph|`l#W|*Y--q`0^_JO0diC#r zg_f6%p6g{knW7s7F7$Dw@CGkDCl4O#Wn74i@*-p6H;()jhbc1)nstA$u5g{BU_}S- zNp9cLqmM7M#W1$@LM}pBb8`MqKdBP(N_F|;mm&yM}m%?ZMr>Zb_&?DbE+snngDB~cH zJkuyI>9v7N=fk%IZ*TKW#_FFPn-fGgP)wb2xVCXg*{Re`mFcC-T;Mq7xGtUW{G^XmMowC8=EMgobXZlvSUUqydzZEJ!7yGka|KIcb8TmEQpIzu|s%+VdcAIjirn{L{7&i=?m9_ z?B+b=W^*l7=L%@VC{K2kPiK95Z3;xg0&K-0AI(8(F-E~$li~S@u+Mt#lI2WY{tWAWZbad zlTb$9i-^(qCh~ExO^0@9M%Pat@p(mmEBgV5R`;GID>|yjxiouEzdnpT{h)XPE_8=7 zeygzgH=}*pi}DI<6nQKdW-*vHdKpw zZzFP{ZDS|AwTfqHYbARW%5GGimEEX32kRW9%>H#d-Ixfr4ITa-`@;B!JVbpZ&XV|q z2%neu7&E5X@o>*zBk=M~=2~}0u#JG1wCEQOihYIB?TXEd=yrqgnW;xqi%n!L@|oB~ z)**w+99xM_*@<4Np19#*+|_>epTTW4dOwfom(kI@#F!9x{L@W;j1T#L8L|Jx9wZkV zAb~4B*Mi+Zo1l+_+Q`v?SjLc-e_7ayMR2x9{_gb)(J{Ea_!@rO?&I5gf70(}URRH{ zY3{0b13`G$^HDa1-2(2+dn&keB6w)vav5F zV52j45NDEX#7Ar~^fDM*{(D?6CJY%|UO0!mlMHQX^o~G+hEI7B|0mtCGa{PuT-eL| z$G(<8T)4R#Tn7?f(WBg=Lm7k*Kt#lg3GN8f--I(o+y$=EWYcfDrykgp32mCbu%~;#=DAXCcXvh^$554(F^|&oJ8!f z^l)z4?k5lVCpKjMlot~Q;Y%R-N?sfAFHp}S0~b&y7dY~QBQI@?pdQLUUdqWQE)r!G zNPZF2Be)KE{HuaTiXXk;zuT$5)<15G(wV;no$tnGt&uT%Cjh zAtm3IQdSnSu*3-|W88b0*Gzi+&FDbI{PMyDPqLqD%ikrywj1{UFRcH;x;WYvxctde z!(={Geb|W2ck(FxWFBh(6%VYQd_>L@yq>Oqx3dqd`u7RWbCLcXWXG73f6~{D^lu~o zq<>}2q2dduvKz2Nmobr#-GTBsY2@4*<#Qs>svZXYYsfiM^skHlRp+EULH)h1eF>%X zq2%YH9x4`s{PXaygtpc5uRkuNzfIYI_Nz0k8j%;#qZb6XJ9x}JRn~9J(f7vAKteQh zFTPgdpI8sSZoogPgmbE;zSY#>CB__QC=@(VW{o)`VxRbUxzSBfw@D%EX4(~@caK9a zG>^RN?X%PM#o5hw{M=C!AErh3d~?(mF6W!Ux3ADG;0v+I_Jufj?XqO#uee4XT+1HP z=>N9%+8<%BUHEM(-(_7Tdqci>^-I}_jP^H!qA%!RJng`eH+3wT>b1k#XG^U)J=WiEp62rm=f zMgEYu4@J-ZUxJzi~2`@~@|E^snSqV1FMsi8EeQz3EH& z=kK3pg7v++C(R|jX|Q#cG*8(7#NWNAtjX5D11jCvOMBC0TK_uif1<17%1oNh8k77C z*37K2cF0}R%+CweV2pEh$mrv$2=a@4#D+)yqyX5w7vsn?TNzDbX1 z#2Z4^f5p|u)rEST+BfWx@$5b%R#21c<>cxJ@Gkw}EiLPe0Pph5 zzEvN*{{@`Op5y)mEsi)!uN_L&7oRCUnd~Qso+hp?yII2)=>~~OK`f^?;74+XqCre2 z(LWWHc}{GNk$oEUPqwd-tkp}QRkdakIp+|2x3Vr!F#*&Xs)V`sebSqDb@n<<;Mu=T ze*jw+u}_fy#o)ZsUV|0!|JLon2pndepX|KC%WqRPUXtJuS^<0(r!(b@LIXH>X;f3WEJ zSQ`ePT}R)jdX(CIB78=DyM;db9p~vt+ritW7j_Kkv8!~_?l3N~=SaCmulYt|*#dX0 zyL-p(^AiKv5tiRVDtHXz61a~Ud-1@20c<^MH^ZYfOPXT*8Kph_VF^fG^G}gCf?zAy zZwUpf0sA*#J+9t->mozL9xK*sUIn%!2(|?|GgQ8Zfqh=;Ys0=zEHNLnEPmb+|3lA* z?(BJY8Mt3L3f?7l)5L#kQBNHpfBiUE02x=L#+4ozW1A3U1*Iw?b zkDel*O7ihAKS`PW^J&3P{7dROnKbeEU&t97!*ya)%uNl9&?Vlp7I+w&_mZ+(nxrhz z`=9N6@L_4A*tKt?eq*?V9`2*8#gvsmIRdX>O`4$m{_uAJUkrR@0z5xNnr!OSKg|l# z5D%=TGCp*g6l@s#rxCluOC=5VLZQmhp~wDdib!*zq!}DKO&j#nKh0dyOpr9#>W3<) zg>lh8%_XEsmNeL$g-Rnd-#<+zX<|u((Lr+!XP)jpmv|AQ^`$NU?w*H!8G6#Ck8Q*v|d1>TTg8h`XoHHZiw38mnG|sceatqI)(hVowzZs)u zx>Z)XlHhcVzfkESNcWLSS7D{A4@wsg&AshF7UHa)HPlyl$Varv;y3Y)Ul-{$Z<0QV zwoCh#(ci^f3Rd6*{$uvRJ_mL`upZt8w*ue7yrf`*^Zf|eXMoKOf=!{1L&3fa?9{2cJVk~-5SRp&bTG8F9Zfeir5{P()h zLOk*7IP>O<Rvz8m2VW?k7PygoF8hvro+M70S(nqaqnJD{3TlT58v-|HgU1(ICj@>7{6yd@ zsdFiH7k#*@xAdX0$8jPU7cIxT=lymP`&qV4r#Z)KMp~}S^W>p))TK(dPV6SHJ|>`5 z9iE=D-*>sbp>9dakCK<9c!~$7%u9+&sV^FwQors;g&5^Y6E5>fz?crX5uOOdL za52Dr3LN|_+OT2kpp{Ut1A%Q5Smb{N+X8Kbf;~apySD`vxn04wF@{3H9syS7TJfD% zusY)@6zs>q%3RBQ(gT|Uj|c_(cVKr5Y(g(=HgiWP*n_|}0xNb$HN>x#@mYdQPE1>W z`{P>^)VfUixRkY2D4D*rEUmNtT&7R*Apd$~mzTBZb z$U2bt9v422?lEYOSnZh#yvPt0z?WM3${kv#m1e>j(quv#ralLH$|8N8wRYX1%{$91 zZ!~E;uh7!FkWDtjf5gwS6MOlQ$ng@BcV*chO&J1O+axk&4f!pAj!q{ptpm2l!wd$wR$C!5hBW_gba-mBXV@dMr zpVmuSCuv1aGy0`7nDh3ZCS4-wjxlD{yw^YNKGIe(CPS4uh_oM*R>pzgM8#qe`d7GN zpVZVBif)6vGjrV;Q-#-LxXPeBQ$!vJ(WYmB zeGu6CAlQo2z&;J^Mqu{^!3vKIm2W+;Yk-yh5L_E0EnJ)Hy_gY!7UZuS@Yh#98QS6VdB;kb?Q5DIP+aAm-Gg6bl2b|~08fn5Zw(4*i@Gd}zGRVdg5V7~-5xUWLN4FT>jaKZf)3T^;!t-uBMQ7E_*#8h}2xZwT?1@~{@ zUIH$-Z$iPf1NR(os$Z-*$rF(Eqww;zT*3VIJ>Y)_yuzhPOCjK12kuGWf^nH5^brE~ zFTmCTYw}@R*JZBn(UVI&;PL2XrJr9wHhbZU%s?A!sx{>EA+(}o=iiaXCi0Lm+=Z`< z;mDXGX-qmR(gU*Qlr&CgO{Hld&05l!u|?qj#`57Y2K()jzCZ0{rD#VKf0nt+1xXNjIi{x3qQw;O5ejZ1a4z72Y0>2Cl4lS-NS*moUd;M^Iw+S4orTE0frV zQu<=ib9#v5s?MSky|Id!FVE7SZ!#`wkRz4+*q8ssHGYomlFYRw(4lIRTDSCv{Rmi@ zYwK-Twb!onZKi!X^{YTvXpc#BZfAc>e`?rkX~t~N|FdNLiGCIQ2+i)NtZkI_Il99> zc>#Bgz(R9jHhn(>?1RACa0g!~LN`JkO*rQ0bmg=@|Nj=UaWF74me z24L3$JDGGt?RiOLs!*`M2KF{!=L4&B7!}Z4DA@aeT@37Pzz((siNspgQv*h_ zwa*~%Yp8F3_)CFLQSih+R`AgE!J6|g3bat4HPC_7N9kCloJ`Wil1`0(Q}+}CZX$3l z;ClL4>Jb8NEO6b7Q`Nu1yF$Sw0(T6!p1wT|Tr_YUz^Q(%VEzl0-$3Bnfa~c~#z!c) zllZT`1Du-sb&;JywBsmnF9RoYdKWq(d(7;3VbipL^zCz8d!ci+M*9T#7T|lv))1#P zp23qjUhT2<58!@p!A7XaIICuqsBAj19p-3423k zI-j*K^c;0}!fV37nWWo7I+<$))?AZ)5O30`zfM@bz*!CnV!7O<7HQSpWr@(cyL5ZH8J z>uuO5aIK+tOVaeE5oxBL?e(kS>n0v$PX;&>kAi<2k9p*gN**@deeuGk>47@>^#h?h z@TlhcEZ}6Wm3g!H1!Fv}K#rf^Cx2 z-^^oEteJ;7w+X(W0mo?) z_!nOKF|d22e%LIiz88H?DA>OPyBk;;v+uIUEBPziuj{b=lD>A3R_Zc_{=8zoqekZ1 zcJ%B;^SvQh4aE+rz?A`VeU%QdO+4wN=JOtT5>dM$Q@dmu$c^hyt*GhihB||(2tjx8+ zeR4V(Vk59W2lh(JQ0ubO$q;LRy&BkCfmJ;3bTY)Pz|H|y%}1w`9~J{AbFCV)(!SHl z57z)Y4cL8@FZ57_{7}l6D@A82cAf?{Gm1{2!PCwySCCH{`AAuPXjN!XXxpA!E&(pt zhWoC$E@P6z`23@uDRtL;B??rpPX)P83o*N#TZ>P1da1w2_08 zPGEDM(LGOeL0?p8HL~Yn*zrtCh~wA0e-vl>Bp9U)O;vWRAz43^MBuBGYW1zyaC6pK z%whbL#Sf`$=K6*1vn(6uGHhJMFTi!u*>gUQvC4?8;=j;^Ap{DpXaNbbY5F7d;x!nb8TJ}$Ys%U{l#srsz! zX6%*IJK?$RfjOPxUnBO$#l#d4I|1?gJtY2X#J6>@HzoNwlQ|FYaVu{*=l4eP-*cin z9ZKoi#(6RAslMhg&Ny#9NA?8e+@@iT$1i0b{|P?DPC0v+HeQq6e4O)aOR)Kp*gy|E zhzUdNmn&ZD-h51Ko-ReFAvz4(=3_NBGC$#;@W%@7zTsN>kI=1f9!~nPL=E>Y;vAjD zSxB7S*hN0yoP*9}74R2-}9xgKvUCxe`;zZKtoKE&FMQ8ACxg4j8nb`*1-GXW+h4Oi+>g?a{oAz9_Q5kYUSh>zq5s0i;#+9ajMdg#iN9HizZke| z-tTakK3?rJOuFEl?X8@_tWCW(_S-lL2S+8OO&W)7C}-;mJxZVY<(YGyy0ICGda z%U-UhF4tXR(p)h%j~}p4s&Fs%j5DdJ@3AUC7wwzjqUrQd-BhLQ{zMY9lZ3L*!#)2xb2hf$wKFfXDEK6c!xnO zgk#jDCzhNon}{s@XX-K>{Cx$T$707g7k(<|Qty{Dql!}k5u<#~2YB|cN(n52N0bt~ z(5TP?hp?Z26aPiApWiES8gf(m*w4>;%u(|kmoSh+i<7YwB5!h7RC}Y{Ci#+fSo%w_5qB2UGD*bmY=d7tdY$K-B zGSVegXiFbqe^v64SWm(~E8&S%@I=X{?yc^555Co%etarE0m;VPcK+Anmm5*K@?ISo zP~^b!(P6X3wP=Ag#Mb=O8PVwETNqb3*FdfTTtm2)zO{OL%(_QrUBI=B>jAFcb9HjP z%a!oUM`lfGOrCYoV@A~Nj}M7j`S_68lO8i>Pk(Gk)TGCT%-+qvXZZI%|NfVMyZKko zzuo+Me)P^IYe)ZSN%81EEb)#0z=KF=r`wN)=f5iEv^BWGOUbz^# z!1R}R@=@Y+;QN|{Ppj$2v{%l=34NAxeUL2B9;J2NhTo-}6=h%>B4@2@$n6dI-ic4v zm$6$Hwz39()P8>eUtu5r>w^9#^ZsA<`)2-Y#GQGFcYJ3jm-GAp&qdffzkSQ-xyQNo zIfkXR57g3|;n|tnoPoILdkWJTo5}uVoo%UF;Q4*nbo1;A_jUQO+06^ncDJ9C<2^i) zv*YlAh!eh!FU?TyB6GCCk7Ql+#U+;gZ36jSNPZswicWOxUD7U%c6|_)?G0mm%34I$ zW}lF5>jUTpfNOJSdv%w?`(bR385c%iT=a?jb1=SKVcIU2H;1#x?4j{F>iss%{1z&2i5E2n`sm&(agV~Gp8?R(Kws?Bc(gOuOAIyPTWx0{ukb#MzNIbA!_7XH zbI*sHeS9l@EdF$@?wkgROZ6dpO1*tLj6NOSm`0xp4R_)nDt70=bbOR=B1_1(N@!K& zETQMm`2KYetk85j-vq82xWA*5kU1A$va}L;M!xz3^t%%Jt%uIHMlnaTt`J?yo{{h$ z($(_5i0{SR+hy-;BDD4}A>?ZY|$z5#BgUk9DSy*uWD*4O5E9n=Fb*Hk0kF@*AtS{q4 z`bx69#My*hp5?c6W^EyU27Q+GcioIdmbFb^TFm@@2;6!(J49ld zCE~{;^f>Q_7Cn_S)>A2mGRcEAkUq2rroe_NA`h{flrbW6fM@y5ori#jE_z^nHZ1b* zJkb*d=aXswOW|J$bv3A~Ri~kDFStsJd?z9A(P4>+`%5!~zfZ8?Wj>Sf;I-eAsfUb( zu_`}o3+3#I{&@!HC+SBhc;-xjJq*3(MgBFx+b}#)&S6e0y*Wejjk4j2@fj4jswiNN z^uqiXvZ3NZLJxnONqjVT(a0FBMtG8|^npTrlRIV3Ok*v%$mLslfc{99wJtng=kCzf z6>j+rzU#<|RTAHtZ{lCY*y<4coLrd?AIyUv=E4^*g+E@x{5rD%erfXFx3&?x3O^MC zA9vT+)|myerq3tNTs~)kich!9xe7*|b7J~Tqkm{2&XGDp(oMQD(pB~Is}^6|LCj&* zoC_y@+NRGb{9XBZi{Car+ivmM9)#{M5?@>OubO`c@DX(L&(HW>gdDEULHBK`>OxaKHZII?JP`=3Kx#ZqKiRw&7@qOPA**SGP>9=Of`Bd7xf3XiDaR=|- zd3VCy`rv|BDCgBxVRK(0ui4(H#0`AgkgX9bJIb9$EcdGKI2&H-5;3oQ;Ud-!E%eKJ ze5A_2mwBdWxHhSlZ-e+IzVL(aw_l_W@<;M*EC2Se?!O$Gcmn)n@x2kA^Azj3S9ss5 z5BA^PV%E`3Y{Y_RnSajZe6XjepFF<|ZnuYTANpp49_5ZgKmV`jS^4x&bl%v(iK<`Ajv%|kgF?pDwEdcm<(D+) z;uC!oo!ggo%;;g7uXzgB+sM9qxN6aVxrX?<6g@Vwf1h8R7630D!ee}eBRF-?t*`z zzuK-3j<|<%4)Og}$Do3L@h(2bY4DkReXzuX;EHrN5c^bOxz5$JT_xO;PgA$<8D~CE zz4d7=(6&trd~lx@nEwOf7=!bBh^f_z{8YsA2A-j($>ls(@eIz=?fr^P=6=Ow*{?YB zIp=?+Pvnd^B)`8{IHS#kS&1`lt4~dTO z0&H20YiBkeVm_32v0XQQKC?N`{y$mX{WF`r_WKmxWls7DbrsoJ)*@H&EOMmi27bh| z$hjg{{g7u_kIeg;~rWiAS)wQ}C24HN8gkK^mzP*g^Pz-86MfB7SsNW1$C(HC#&#_V_xAMpS}icK zTXc3az4y@fL#XH1%>C`8+2deraBj88|6e1gb-*(s25}Cqj?X*mC;84?J5TbBFhnMf z@XH+U9wO(`h;O_$$NUEGJA|Crj%<1X<3QlgQ{$oE*gyv*`l=&`7#k6cjfKQ&hKd9xv9evz21aG!N+0N z3`xYmHJGn7;!9-l?BQAGxy>2wy$F07mlE5p;q1UW=&gBRC@W+qf2XgaT zbA9TiJucRb-7j8{(fwjN*JQ3KTo-1v6JM+QMNbC)!8NTPb*Hc4emmEm?(WH{@V_&i z@%}qxqqouVE5F8f*dN(9cvz4Bw!|AgO1n!2=Va7l1Mq_=D^4mp!>)!U6|&Z;W-X77 z4ZR{be2O|JX+t}({p*Qixre=i6zU)99MKauyikA1j~#Ja(S?f~CH}fNphhR)$Gnia z(c>KMc16CKa8X@c;=Wfdsvf2%RG*;ia;LQ}xtH?x=-O_4Xri||hWjN3TCMmw3?eoo zG0IL?=GPCO8YVh^)$YHevsC-F@0F#S{?hx=wTPek%0XJq9d2TKQm&jWA?@7vYkc6@ zua$2?kGt7NxPOV>eE%)FNlVgqhBnk)xkBFK8Y{2~O1_G3LB8($Df4vollda}oU%9I zjb>~a+h;@e+Le!o>^}<6OD2YIEqGVH9OifA59H|;<=|HIm;$rM)K~PLm4>`=Q2B-I zdbrmwM9K)2R|{(>GmY&R^7wbA$zD-$!cJrRgQ&B~9;6@GJ0fn613BJ_K7;e0oqC{B z&a;wr0J6U5xpqOP!STB)sT*sHgQDM%I401*JkeomvS)&hrvF-@0{#*lLya=c^?|HI zV$qE#eMmX9+Lo#XVxHG(M6VRAQ(E=|Q~%TaDRJ#wqmVbjxrf-N2Ip5*@xGOJ@6HVg zNs(3l3E)`yR!d!_ZgSRvSsrT}rFT;0eYN-7<^9Mi?^|uz!+yrrT1QO>#^Oe$40+_97sIo=tj!^jCJx;{C}2uzDx}H?bLe-@2h!#WoLE5vypfE z2Qhx01SbQ@um3-hDG$?+=fXGNKj~a*AQM*Som;&c8BOZ)CA_A4uamt_gS}1{Yq1E{ zWNy}GgXr5x`gSn7DtJv$-`1}k(Rno0QKRO5ks&Hitu^%=N$|UT{PK&k^z@713;zQR zEJSDXD`Ep&4R5%K{=bR-H@0jp%yk;o?CEtG#rIp!sajX=Rlb0$I5A*2AF%&B8_aKY z69bh!-y97hV;B!zdeZ#2b7BBRV^lmkn<{wj%q`&6d!A zqBGTj+3rOr!@I1t-4N*zle3K#HK)giOX7xK8$|Or97cq z(QC=Ptjd(JJO;R1<$MvwUJ5#UvrNX3l(|WjS<<)6(v6e}Oy4rYqJI{q#a)BkIHriW zBzE1^_>fr8Iyy6@OX{zG8Xdq!FgCooob(-6pvPhlHH$qpsndOt)?9Urx^HH0aXz@c z(tm4HEwHV?LWgriUX%FaqEAwNF7u6t`6kytwdpwXn$SS*tDc@YF*v44uHTAj(g01% zT=7MOR&&&))!Yq!1bz?Y3j4@|+>^ zvRUU7Rv89mxTWqrb@QAMJ)(L?W;&r_pn{_e^z=fe-bBTXCQNy@6@Zl<&6#J5P7jNNu7v?+3EHhG(4Q2LT* z6-Ot}U)m}9vKQHx$r_=Vv_GCStzr0m(smcV!+GEo+H3;Xg?Ig{dviH7p9&0f|749d zP_kWy)W3*-BY96|%_ikBXDn?X9kiHm8)?n8*PQWz#B4oN^o`MWTB(zyjpSXk(zU?Qu=l!!r|8g5Eoo29?zQ>J1-}}5!XjrHTj%wT6VAFVp+2(T?y_}n z(l!$}!hi62lD%$|=81(Qy!IIKul#p$Hfk0ynw(cnxxVq-;WsiKi{Y74hksCqO7bl+ zamKma=mR{dr>}$3|Mk>?HWxESMd$0H-dT+AQtB&byvSJha6VKK^HQF*5n6gH`k>=qcW>SU{Pi|`D|t&< zCA_!7E3%Gr7Cm^*no8e~;C>YPBsR)F=qpM06FXh8><^RoLf%z5^LegiKGCp8_y^@k zzJ+`%B8E`<%EXwhzhu9FF|6_ZE&gY9=;l6B*8BR>6zY*of4s`~^C>Iq8_FfFWY*LA z(pK(&;@j2%q=&CYV!JE);9URWCf9UJuJj^TrlEiIqT@2xuEfx^`hl3D$aCXYRYnNT zN`PYzyFktZBDR2AY^20iO8Ls<`X@Arp3a4yPSX4Q-V?6KQFB!c#ysJ*tMs|v$WbvW z_M&_y;rIFQdufMi!{MjbC*(!vxkI;M{Qp@SOge`T2tOF*)Z(O%boxkr_u*eW zjPKH?-*okUCwBF`XuhjhSHi25UOLB`3nnQYZxJ+`NBiLMlXRYQz~>^)p!ke^LX+QT zj0r^3|7uKz8s}{vcF!BYxK-ul$ox*7a>>ig;~@TY`0>l$;mviYdg~88eS%+{)c-u% zB{cphHa_Nj@=5o+OUYB(?B!oMFu&$s>&M-bFXOw65gBh*9mfXrw(`RBHcQ^ObZV@_ zUb@iYslrD!;9jO2wWlIun0aH4=!N@zi#FJ2>EV^6ZJTe6(bbf_=ZEmxyO4peWBenp zm~{1;{w=yvb_TiZp~{-jlwG;A7nFGjUP27IF7L_gOz1J)ILUvWJ=3)G0|%rJ*>?q2 zr`;k)euz%yBlP{Ur{7JR%=X@Pj)~7NA2_vH>_sbSo3z`=%x$iZvSn&y*LvhU{n6~^ zch0ut>Nr!zUDhL4yJX%7A>+nk_pfAHIU}a+T0O9Qk5*G2silvgJ|e>xiCl0GyyJ5A z@%+B7FIfNeNwZB4Tu++zb7o;rak*(vp|K_tdkUSq*irnNH1PaJpC5a2TbBMH>T>Vd zBYiAuEc=N$cf*G%$CN$a@>;UzonBM+%%xmMB(d_Kt@mqBZI*gvQ?Fqsx;NhjE(JH) z;6~*wIIXd9F~VG9EbqmITTA~6**nxaV=iGPiP-_bp980|A@ zVxGs8V{fo&!pV2F2a?P9&J+58mwF}{%zVmv~D`M(ONf|{aCuZbN5fI^TLMFA0wdYTH@oGb(n@9BYL!R!GXZ)tQj4pw-UDw z+a3Br)<(zCk*l@So+;K?agiru(_Cwctm~d)otLiJYs7&)eb`Gc$LAB*J2~|D`G!7} z{+0Gh{T>Qxs~RKl|peUv)Odhh{HP#dAq z{lRq0Ihp1jHFTS$$NP(US8aZAti>~Q!HvBR-#N*Pi^ix z(LKy;KXqTA+7CX3Po1f+e;CwmHHID!QI`?eLS-^H3qK7tj$|B4`4_6Pp@m%k@-vn_ z#V*^NLt2sp3s@h^a}r~~M_S>7Q=hfIx!|?NbgosdMAyk){hDLdfLK|l!>=|O`#r+1 zHhCj0ex>HXU0bdG5?sTh4+@W7($mIXK4G>k1bv|54?772pU7+LX~@kU2cD! z%Xi`RBlN?HuYMO^TPa)kf#^Q4*FKm_dtJ-{S$f#g64qb2kLu0u&|fa$8PH)Xe2wwE zN!tT`OZ*?``(B|jh{uO)rjb7sC= z)~`KvHa+Tgd)C>srFhEjo_6%|l<%VP{Qsanm-MU8s($q;qCP^0YG30jcTp5^IN?y}CvKK;6^Gly~$gYq8wALJd~FYnwwZCchjj=asWayxS$W95b# zYwithV-a(q6Fr~Ml#90Yv15u3vSSi@V~%iWm4&5Su=8cDEV_r5BufTxkj;`kc>L+W57S?>h<7b#nchdGgdSzt3 zP-9{~`3I*TXs4ICyw7}in)D0$r9Yl(jo<$1t4=c}7fJhqW$X-O>>IFEod*8FR~xeR z{eQCb#b=VQU%1GYuWzvBYx=jpe7(HdlCPItsHK~8R&$y)XJIoU`rTa0RWkN~Ut8-d z_;ieGlGd!`?TgH{r`3;3=u@dH{rS3su@*MO@@dPXO~Nm)Txic5)J6LKOtL^Bb(1+G zmHabF&)AKbYUgwDe~^#Q&d2Oi`0TBWKRIu<$Z5)r#0wuAh_~}S_dm!ttzW)Tj7`bc zmd`e6wmiE2K3hJs`J%|9)1j&Uyhzr#|ICNx(a{$1`~lBJJbSk2b36kpW5uVVJ{#I* z|E1I;wj-{xWZsi;dfE0RIvv);6^scrrrh*}jQx&*_SiSqFW+s$SoW|z_F4b7Fs_5g zS{-Y48Eb!_ZZg(VcsKEiOd(@Ob#-*B0>l;a@~Y zfn1Vd$=z}EtKj!Zh2QVVTVrhevX2!b`b)97lfM5MWfq}RHu)+#3*ob}eqd2(^F;DU?(EsMajzYTuZrlg+whDq^`S-J|IDQ}Bga zj}AKD*5fq}*3u)053SzQcy|rfCQF_lp_>-`+(;P%I`Q{|4s@Fiidn}}r^1WzITd=S z{k(f#1?yT>w?x{j+L3gfqxl_ao85*M+F;J5^tHK1YRAZ$hhFX$%9C>t>S>QbY{klj z^;?XczD&=+jHyBsZF#nim*@ZGc@J@?D)HGZp*^D4)5Ax_Sm``l#NOjt@`LZjpg)QE zG}=*f4s8)#obnkK-Ilab`50%Dhwy1-OC=} zObbsrw9&9*{LkPyn|=8`ztd`DPrB`J_q@Uj95p)!Yc)QXwoAs0tnCf#6ozT+({sMC z>}AXTL;<>Rvu=aN2eM?`qL&r9B!)T)Pyfe-j+&3qotg7!@i=Q94IgLDqblZw)FlqR z@-q5whJRU;q(ARhr#9b%Ui}8XUB#vv67x~Pa z`7N4x_J)ByQ@*YTl3K=htl!%`PhkCG9}Dbf=-rfE!~tw3o*LEHp28hj;C>?7E$0Qf z$L$|i?JxaBQ^9i1y&}&7|8JYN>h6vX_E^-JSeKzE{|K5lF72g1!Al)}BZ|IdT&j4$ zLZ9`?*ht{7uIN?bAGiN6ehsuE9(s3;{oR&i=++f`PobCg&vUw}D^`?r{%*H5XDPZB zy7Qz=*`nw~XuV=ZX{QCRjVqxIbKKcB8QIu?l+i|oH_=fGzcT68j;Ad6 zt3-ceP~TkYEAPZ?NbiGx*&94ZnD$n+L zHS9A|#6|-h?^xE%vYri#^WpC%K6E2`d~F86cg9YK$MC%fxG(uv3GPIGbYash_L%XE zi(6=W9eW*>;8WRertmJbSIr%H^z{gAVA6nNuclMxxtG#Uv$jBgEo=Glli4qmvmIH> zA3}$~*ow(Trj;_h(0^8or-QSj=2cT4HKsP;H!|VKsy8;2F76!68s}y1cXJ-~Z@J#r zqx@}*6~FC=`MJyu{ph~(J&W!o4xwvoqe=I?uhkb$^2ijCY#540zJFAFI~s@>QC3ZRQdKir|5AI^w6e3vOi(RsA#TQ9B`UNB{g8TkN0ClfD#LM9v$Y2W={vlzCBf9mv~FVd&P?eyC+< z7Zw|iPW_kovI~8ib1Zp`szgSDRz1+_W#F}nGhStlmBs#>tf|q{H>I%$H4goJ7QCob z&WpxB;qW<;Ue{!w_t_Nag1G^Ia?>Z<4ef7WE>L_?>`NlUea+BeK=J!mu%CMc`?>sV ze4LppR=1qn5h44`MZZ0s9c|ywmoU%VB-LowdJIVwPH~5;5=(4(uelb#7|gKJvVNc~&E;Fw^2JSau(vzUF~l7e6Xkw2Z({YK(v&820nLZOq10d1 z(=$q&X4rPe<1uL0e7e7R4rC?C(@L zrp_Pz*FvE?8Sn7=So$&N_t?t($>OVC;Pa5*lntct+5UDZZU00b1TKZEZq2F9$8J8g zxqj_}PHZEbn^OLKiMb=ztqHV;=DQ_X}9B@b8h}^ZkV911o3esk39hn!mR`=`uMFDu?!FgO|Ogk4gXb zSJDpgeKR)t0&$!XM}5pS++^x4c%V+^`y}3Pc4+R(2M&t|L&AsQSJ>8pCIx|iNK6Mf&L)o93Hp1{|ky(sa`=-^t zPg?k@nf74cv`3!(9_7Nj&9txeP5Z(3NsByarhUC{+Bd#WTIOIg?Hhg5KL35va*m*x z_RYR&cYmL>qwKVA^-cTO_el$XH_LsyZ`#e@C+%1}?K^$bR(_wfUOVky`=(v~ebP>_ z)4tm`ZQ1upJIPM_x4vnw`aWqV+iCyaH|=HLCoN|xns|P%Z`$eKC+&1=jbi+xZ`yND zlUDg6$aoj~^)uS82l3OP@Y8ymf41Fk@zZ*nfBu8_W$>7Kn}5Em{@c9sE#8F()xd-5 zZT@*s!PxxsCEkUP)!V#tUvL_mf9_RjZ2tMIN@MfSKd5(`cm6&&51W7fx5~rjpHHbY zHveo??>7H@jQ4uxk;C0v3rne=Wq%e|;EL9oWnQTNz}L{4syFQVTXw^-H^Lfz=S=AQ z{o$O3r$3(2@W;n4Zm6d&?E|&0ddfeP>S$DYf)w(uPhWO_+txf3E z@b#(U{STB?PPxCd|H*v2)~t)>UMX=7cwcS*^N~j4Tdm}MH|dJ__a%Niw+6u{19O!1 z(T#SRa^7#S;qj?5=QzLp-pLw3>hbfS^b%)5+Ix+iUScxH`%hFJ#7mO*h4y=Es;_Il zo&FHGlk%L}xwa^5cpN^|rgViNQ1TszH)sld?YG&_yp zmm~?}9 zPehKcr@jhbhs@Xy#3B)#v9BgLleMYTQ?t{rzCb&ov4(A>Zr`x}Xb0ECR{+;qK@~nE zUgRNfWMXv$^PT7{<*ZD}XC*P%B<9t>NF%hDOr9M)3%=^tS~&j1e#ahVm+FTP>~E_F zYDZd;166;#r@p(b@Ayla^zgR&9%aKL^9r60s_&eMCHb^pV8Oqrz7Mm%Uu1oMUVTrr zzfZNkKcl`UX-D>ukMwD?`j%>a+rzhA>f1Tiw^qLWR(%_%9Vt47-7eo6)whY-krr%u z8(DWKoSq4vCs&4+*_FH=$}ig(tsRX0@tWrLZJP>9rZ?VLa))P&i?fuClh@sc9jv>G zxUa^`*oPG38!f#Uww-_j1SfoR^DMG9(w%2!iJyLbEdi1#^3e#rSVU2n1m0mt7Uyc zMD1OLTOASp3tB1@p2jy^d|*TQt*bLV2+b4#33&Q1jG|x_NJ^yow+tWS_|LX9h z^TE&g?Z4H%7w9A1C2OH~_+}gFB_87S=(}3+>+Sh|j`jU#e3$Xu^PO0H0x$Y8i80jk zoj51*eIeh)x4Y+iqV;_q--R#re8=BT;AipOv@cQhiM77x@?Cg&4?O|{*eVcuM*}ga1cWjo-`~&uVm3=R@??1Hf+4g;c zeIH@p!|nSK^qW%8f7ti^_I`LZ-mH& ziqEO_nx~XlUaYDA|8v*n9Qps-bJzc`&Ro}`*C$Bd8N^c-J|yuL-4dTC%-6Mnz4gT- z^4%L2Ebg2zboIT&45;3SE%}CUU#94xU*Z2N#CLi!dXW32(zJ|xba)bbX_4+YqNA5H zcu&&xBiZQiLY6@uQbwe$+ul%GmazdH%y68NcYZ#}jVFsWh8;GvVKsV$s zmF|X<#6>Cz^1mexLRaE1vb`lq_yIfF``)=Fp^E3NJbQQkDj{OL&wClVOW_CWiCb_z z&#QT^X76h?JgFd=m^Iwp+~d(PUdT0{>n1M6S7a^|d(!qOtxJs~!;V)kuD z!-&h^DiA&|b80KGyCg=e=*JG7uVQq>^DV*r_7UHNrw5lIbHSRyKJS+UwXQDW0L#9J zvU&d|R%`y4JWrgXHGe|Bo7TXar)tf&bFTc?j(GP7^uMw`I5B&mSI)v@KQ(&z3@!S^ z>`T2{9V7iOqL)DyE&P=uw&18^xH}veWn zX}c%SQ|&BW-eko{khroV8wa81`vN(Njh2Ho_%K(lvF5UN)*0A~c{`ay45u#fcjvHo z#(dx~&#Moo4zHi9*VF*t9uw=Xe9=>Vh`KIvy8L;6*_?3LIhDDD*c+?vcq22KJwV!( zNQ?#xpCcO253r^Lex(zgHSH>(t`)3d6X}nY$UNw?EI<3Qm8aFex3cb0y7!Nfu|J`H z)4-?1Zm1;PNXiuaNKA%9Q`vK(Za)0bMBg07cVZn!zwa2~*C<=*_r>4I6`SWi%)FJh zc;p2aI3wJvPdS$o_Y^r^VoOL2=i!YviG5p;jAZ0pP_30tYm#zBA0GVA#klXH|2QwJ ztCP8!@n0yq{qgVs^!eu4x_d-{d;5YVowFE&#MG&N3LdZ>9uNh+elFMY($1HoBi)~s zj>{1Je?B~5wao*}JuRCD2u{{PlTz0;+?7qb>E92oPd&|EI6jhJUP?U0*}i5uGyElF z#Y4nfY%dUhI>UcCdt)x}BQlXk^y-uLOmB@XpB@Y|f&GmBZS2!7>MT6tT=>rR(j}eS zOZ^$!;X6^ZSK70Q_71sY)f=Ce{-SdZZT_ruQbwemM!^pT*5rS{5KC$9D|&SG%kZ7x z_6y%p?H9fyYnxK|imb`R?qA}w6{AN#xv~J>lMfHdgBRt(lP*PXe@R2P)6&^jL5qh? zd_?%abh;YTh;48ToIDGDK4b0DNuM?VBRG<8$ABp_X+n6xP-r5q@n6^@8H2PKmmLGl zOAIjC-^tQP_>Gz$S9o^LU2yJJt$?xOFY{*%N+#x+@I$>iVLWpD24XNtyf<&; z$e7DrzUZuMd};Od36ZUL#SCs;8#95u9ErUZsjVw)U>y>PUFdfB-uB1?_=@T`=0;Z~ zR7G!0h(ONHFOCQljMcpKce9)u6jw1aP{H1*$ZP`(wHn5)8P6$9o+FT5_^!+IU|(|) z&!^^aKK*fP53mTmw9<1uR>=OfvvX>jqjRc@a=et|8SC>V>6(8`OZJKh@H+E*T@G=j zZ=0&tMeYwbnC;Fl^>^k&Gx^fjF5jFy;v^cY^h6^&xte&Q88QczgFmen{Jm)5&nPL$ zDAAHJH7qYQ=S%X+1&4Y`NoP(+bz%5VwK!D{`lM>_L&#RNw|~A`81<&^tV3AiMFhk) zJBxaUNxk7Q9}>q){zXvt7ag}vW&dM`!J1Chomg<4e(LV0?qw}$)n4j-7WK~49o2`s z*WR1TT)!yHvfp)4$2_Sc>peM#;$Cft%K3EgO-UV^8iR(ZdPQlZFK>YF* zgtO;-EWUm7_3Ae=dG7jp_0z|)%J1EWF0=ILsyB$k*O^b;%K|+&Ge4S3Y+d+nfLn=U zIf(BD-z$kD#oEnnta8jPBkiaEUiC(P>GhqtrPDGbFO|>b;p8z?@`-e-JRO|gQS=Gn0dIYJWShd>YWyuo9P`z8rmUqsI(=5 zZwB9_9Ui+a5SK3?kKiPSP>-7GO~<&1#?*g!Z(8s`Upi>42L6{`hgKHPm4v8Y+6 z9VaGfw?jWt#~O__VwbG#&HX@aP2o0TGF&@tVjz|Nx7Pgejp;wvYZjuPvih;2d6CoT zDEPO`jk0FH1RgsR9(yr7b_Vp81CO=n;{EgVxHH9n>UNHL?I>~YMCL*+Jg8#s)T6WQ zW-a|)G&-6(UIguw+>qT|IZR7uKX`|>X`&e;>GmC`h#96e9^E@A(8}c~=M4J0X%o*M z5Km6pyZ8Y1MX|JhsJSoObw75CyB`@6Fmd2H&x|Xj@bbQ-h39Yb=r#X?&SfF{(z!QX z!dyx`;OCGZkQK$ASA3tvj>Y&h@vMtS%#}Kb96A3yv4^3Z)K&hw@y+54gV(>J{%=1r zAn-$UNhklQ&Hlj{Z8r1oj-;V`rVmRlFYG4X+@2LTbtV&MN(+jUJA?eXiT@_>l5Wq6 z3nXsT>$QW!W(^xzJ8L-CP_B5cST2`=PKSFmR}9xct|46ETm!hATwz=~mxC)!H>wwu z`nG3IoxbFv$Bn4W$Bo(3h{67L(jS+oSnZj_Wnakux00HdEa3lNll}ngklF75^E%I0 zEzRD(&`did>NOJvc>b>>&6`R8vt$Kn-mt#Ueu4XPVEG^QXZ~Hto&0BS0rsHvZ}wlT z@3Wt?(#rp+7CZg();(%3cSG#wqJ2l&n9q;jUAtuXJ+(`YC;VvEZl2%f+MRIatYZm7 zXYF2?yyPa{Yq)Mom^W(@_d>2o35BzkCPdHLIr_+~Pd3yp8N#x3QJ!DmdUW_D zv;H|eeAd{}|D1I#@9Vg(9e(kw6z)E*jOwIf?+5n*?>R-Zge8<{mrZ<;jN zLkvI7r!CQVcJXYaxYClQYd7w8Y)(Kn4wT$b(Y)GWbjVo^CCp<+#RTHRvsd99n)d8j zoB_Z*lZ>2}3{Cx;yTrk3pRG0A2kqXZXt#DEv>V$qrq45J7d~+gaWWi1PjI*=b8QC)ysdKg&vF!PYR+I?hE zM!}J!3^%eYdbLb9@+>f!#JdgPiyc62JJM#$)dSwrYJ|rpr|wB;BadG^hy9tucT#ly zny#H3x=Q!9x;5en;qPFNn{h+6c``p7XWSfT++09A&Zj+HtgjN$@wXFypoH~S3HT9P zy>jl`@LMioU4~uIj+ABR1#YWGw-4-U^j5b}{w;}|+06YRfrB4-cs4XGvxIsuR?Yi2 ztO2C1*d}G>a(9tF0zdBI*nN2<<^g3^N;)Z%`!C5$qfE}6$uwA3#gmWRCB58Z;oa!g z%>LdAKP_WkY+Z4C=el^Gw+()*);MBQcLnRUR_X#Tdi?=#CVD`861%XcXf_Paf)YEr zL0WT?Ps?QOeB?0uIQjb4ha(2j7VLL5Vpm@y^`UK*XZuQ1R(ZC(x)D2U(g`o}LsM1c zl_h+MXX#&AE6G}a5q5KB$Yk=bnl+QbziQ?n|MIdmAa9CwCIu>$@{Yv{!Vk<5&05!QLFBgwL}!ppVMyi7a3oG*CEt-aM_Yh zbRHQZ1B)I->YSDmk$B(!v<%5t>Lcqo4|Nfr%o6SfG-8AsZVlV7Xu%<8$Qa|wEv+EE^wkRoiN!=e$s9UrB4syg^;u|;cyvP~ne-T=RZeGt{?Yr*@M@024 z@SKv;(v0_6t5v|qJkX%pS^& zEo;h>)y7=T`6*Q8-$0q|@R;}L-;&Y3W}y#>OQz|=3eMC=-D~AM4ISCYfsEutRwBmW z%5c_sdO+4AFTZWc$U;9TF?L9t!TT>Ez9sz4TQMNeh;PdQp8Y(JXS{7^kAFM&t$L*Y zGJRvh_4Zhk`A(+~>iAy^yjDISAbx*-`k|I@_)Y9cvA<<>2rjiQlNOChfpTC*P<|!l z#?!Yq)4q4Q?<(x<*9YhJ^g&$XIG(d&eM==iwDdt5eQYr&g_RQ z=dg|qW*-di>4OFIL4w@}GNuLp^1c@Q=k~*Yl!^a@#(&uOk7G|2dCF=-`lP^Y+E7G0 zC)3W|YX%?#TI=(x{~pxVqDg_7!0oZ|W1jy3j=nq`1hZjMU>Y!%Y&(`^oO~)(eOUno4YBWc(o>_M6$C5&PLTaNQmS zAEm9HoAu^)xBa|aZ~l^RHO!r-@XHaI9t+gwdg|6d9n(q^=jMmI3gVxuC|s1CK|JjT z%s5g$Vs~~h56F5=Y*J+npOPyKti_zS%JP^zv9+Tcyu4xwPu1|Q@&zq zrz-O^`g98Q*hfrP@f8ri3^m}>adp&$-W8{ko+jmAJZd|yybK{C}ogL0Wjl??dNMVc$ z?~pN5xx(9dy8P*vP3$LQzm5$h=cgszIl#0D6rS;Y*7sj>mLGhyQT79C3_V?{U>B{YNhoF~zgYGG;ch}z7e!kXJ z(s5^D$tzFZ*v>xkvyRw~3TQ!Ss0O{oR*0h5A zGtFz=PS%%GR)$Z)8vbNzLfVVad%a|_k7dcC*Qx)XMOUu(_Hp7 z=N0l#=&5zCqoHeVFmH%$+{)TX#?tfLk4A9@82kYrzNK#3DK-_J*bzPaArAg<47@Cd zH)O&aB<@)Kid&mp@Ca;F($hP$BR-sa##ZWf=UT#3+wBdZUpzm$-P6x5Y24^vmq@AJQJNmlK}#1Z#~2Z$t%dp-ylA zEiLeS_}=j;DSm%VP-5xj0FMjjKG|A)6TkB_pt{{J(R05b_o_CQ#Y0n`kr1=&^1 z1keVeRtRdfS`zWwhD20cT19~bv?jzQqtPh(EkUe>af=E{T3bPF1(!CUrM3N5!(to2 zwopYtk^J80F7r%=gl@m@_m6qa^W5iiw{y=u_uO;Oy%#yu?c8DSd!7uz^dOy2zv@`u zRXPD^eWEl(4h~-KZ8(vBEAmaoALKFPk0&B`D%tU8;d^=wRcvCfda;GF&x|va^*Ge~ z3^fiVLMs`Eg8Z|owQdXZ!UAbS>bRM?nzUyz&!W4kc0BJ4CF_t$;eywLYThasnYYTk z!b!-f6T7YN)>{wz<}I8kZDZSI4|Ne6=Vs=tV&8m<{w4YKCyvZpHO42%y%=8f&II(&M0Cv_=%YQE zKlEZP-4pJh|EY2N`ZL0Rqx_Gt;N2OOa)PBo~Tw%Ty-8OLpcK7g} zfmJOH(4DpDeIt>{Qokf<%i7TbAM11NCp+vZ6I=S%Y2Wi`=W}WAX|(%PZ0S>2uk@<9 zf%LVm=8>v>pFSgeE%^!$G$m>t5dP?j55|JKneyyNm>Lw@bn^(UchL6R4nfa#(6IqJ zHhHt^d=7ipkvr(3YHyy<4*xXhlMxvz^`tJZ_1&D~`M^7H7j%?*d`5b5ms&Lbv5s-N zew}$;=2Du^%fREEBkhfcrJry0~bw1j$}lx;N8LQB(kQ7G@Uoj2yY_pP=34kehc4UMVG2X z=DoBybid`N@~qHAkq>$uBr|dWIO=tv5P71~X*(mlBPN~i@LjO^k{{u*{)`<7x~_TM zgonBbC*Earzxi-Wd#k&1M=z2Bm1M~3?Z?v$+ zG6|YS>-Q{a$eajM%$KWw>`G!!k}J0?yvMvY~j zRsBNf2z%u89ChO|wJ&a8kU8oL*q&w0#f1HdFqxM*TL`aenzd!Cd4E^GUk+ck^WBH7 z2K)69Nf#S?voCNu@A$j(t$cZ5OApqCV&}I#$)gv)<&<5%%iJ@V8lL4(ef|bNKD5EF zO5Y2z{x@P#kM!w_rYA4wJf-|qNdwE5ds=+GopEw@a4~+J4re)4kta5g`c-dX%aL+J z3pvBF6P*aZj=ba!?Fr=bFzGdcSLHp&N%Jkr9_U+?S>k_}`}79;lM^O8X_Ahl@iA>L z@P1eKVH%odo$$`o6>Lbga56k>4tcl(j(AJ_(|l+ zLp&F}KK1|1rnFGn3!PnTN>^d?T0@x~$|`N_c^4b!pYZKCnyc=1^WoRwTa=tG@}LUY z;y7c%FVF|N8{ss?g%n*f1o)f+{XLKC*TuJ9HeSW?@f;hki*HBzYkHx59as0i zn{PE;eA{Q^U2}ZA-8Nnq-~MRh%|AZgb{nsYZ@;$ju01~9X7lZr{2zgL@_&lm)$tYQ z?l^rxWq<4?+~HD$Z;iC8*h)8MJF~w47y9m0S$ACTRI#QAUxvP$a76XDyT^np?_hl8 zyYGQe*b~tH1U>0bj-NT%Fpu&l`0NyKgYbD1{LS28Ed6&~wEwR5g#W;qJkkEk`*`|Q zeEuRPQK z@*EKidyy4}eC5m`d0sBh>=iEJ+2;EeX-au!r`F`0M*Z3;k8k~XE&eC(W!)G)Lr$HF zJtQCb3#})8%DRNm>HE;@rnmAY`VyVg^4IcNPj@Eep6yxiHgj0YF=@Kzj#++>bL)xP zYDQdJ{RrB}x7C$hwAHKNqzu(DZ6*84;>Q3r?|(hDTibz*Yq_N1GDlJURM!c zB|kopd5emY72a`La#N@)Yt`!gsI%Z6gK0}CNUo1v*-(7%Q-W3;46uT{cZo<#B0Y6 z@e%Eeemwgl+FthdUW+^zJyDm>zb_Bp);<}biO+sD<-LBCLC$Xa#=Pq`bdcwLp1Ku( zop75{Hr=1=TL{CE3cJ12e{ zWl`}5{0s5nmv=Km_xGiIa{ujx^RC_S5#_s=^8ISw{E25AL3hhs2NucwM{-Y1#&`^|ex z=qu{*RZUt?jh}4s=DpD3&HK6LeVcioZr;;+>G&7e_~w14jc?w6rt`~}x%0&vC(FO* zvW=5J!hfNvXU}J9zQ&ynQtnNmuWB=yn{dwP7HC~{gY#9boHLPCHLEsThwmX=!d`mT z)AFfvcmiwb_g5_x|KQF#Cw((5K8$fs$r0h(FTVRzY$V68zm_8lir}Ym_*LY25q(|O z!o(ISHb}7{NLhn{p5eE+KV&3)BKKK|Pt74PAy4l1c5FW_tVbNimT(A}DQEqPtcYK$ z`{KL5Q2P+O!pDaVB@IdQ_uc_@xd}P@^5{EG_Qr{G*w7uOZqITi{swvBqt3D)C7*v;(~y27_Udx}YglWOIGp)6sf~Rp-O(n#kNFdq z&bpp?M+*Bs9B;w)j$Way9m|}!`NQDDW!&)+D9;JE&BcdfDdVO&>%>=9qjUz&ESZ?k zS(7#Qhr;RTK?moK3h&^zb8cRE*IedDwA*mXIs9A9FA0-xV$0aaxoz?-@5zqFCdL44 zMn{&>N9T?m8BlM`Mn)OZeoc6gPe0`m< zdnhmbrS4PC=NvKieUDAL(=&4hek^nTi#v0$9r>!Anfdt0$^HVV-?D+8hOXvgJ7f;i zD-?!4$IZ#kAy4TC@Z~o7kF~7`uQOlY_WkFNNgb8l>zjAV-KgpN+Lkq}u)g@m$4kH$ z*BhBfyc*`hxgNn+b;2uMr*L4nw)hUk6aGx+7AFzeO`VgR(4;xFoPR+bE1+!>vi1md z%;mog+3AD^M(vp0`NW6}{yuGe2tOF#7g|sMoHhOqeCbw1xT9<^`&ht88_N9l;8UFY z)SJ737>_p7r*;mLef0X<1nMC+!IkWzKFpoD0Y5sYo90Bp-AS70B@5~}S5)2$rA?vT z=g%E$%(^0_#Kq@tDDB%ez9v!6H`*yv4gMYM`$$W=x_?QqFlj`Rw@&Tp-%~MSLzB}w zKIrLtMr>GlZ{K*I(<9B_qfY6%?G-`p=5aE_#wB@+Ka>Y~^#Q)i=tK2BPp>fJ5VERQ z7}>W#U zWzq*SBk#qfk;j_o_P$Qq%D$}Up%2B<;|1t3;P#Ys2`e)+dWJ9`VYSe7I^*#X>Qnor z`|LN*Qcp=U51HoDvs}^tB%yzbUdNHNt4-PubwU3;?|(-B{LlJLn5fcce;EH#ruHAN z%&~KiJ=|rRgs+I`5PtY28Q;=m&%iPAUX)swvxWU6QqMgVdnQWQT=tFC7=99d=%0eE zZ=|=yN4<-{NmvG9HK%)9+R`|u7r#$gSJ=(CQo~-ErXJ4N@BcUZ+I#8wi{Nu_)pzqP zh!5vnnKI--CE*qPM%{j_aqGiQL&plI<(f=tjY0a4Ynf zgq<$`KJGB5T~-n=GFOqbK04NKL2q>SJ>LFx%unllsZMwc`WSQdeNz}0 z+J>cIf5c~S3HwBru&$k(Hwhi2IWTrGw$_wzBWdMfYn8OtEc@2s>2doFk;StwpnvQe zcG09IgPj{hA8RL`jEgeI8sR*=Ey>ycchRGg(F+74^U!P14emxan7_%HxpE%o-11x% zoUu@RR4aL|L|0gXFGmq;p(6utuUO(q+AF@xAByfk`nwqKkn7u|KU{a22cK?q^Mj!y z_+75cBwy^W_1j5&Z9iYoN^-CfpO#w*$o{bU;JcT-uroPu6n$l9gWjlDlUresG~Gz(D=(e2nnw)Lyq zSl3?W39n8r2+CN`m>7JGJ%Yp7Z@06bH>mb1u=e9gW&E3pzawj0Qup2IPWa;lC;Vi( zv-QWroUMQ5y!y4nmIRZ~W5xG<4syEf#hM)P>9Tv(cCz-hGr?Q@IP1E@zUmmiE7@t; zm5@-pnl<2$p=-R(>f7ziOuhvj<1}Y<#;CfS+|kbH8pg8Bn}(#lIt5=#_RcyXXXf7> z=76-r_u$Lz=r48;-aUJ{Hb6 zB4wNRMaMe-J+nLIlN6raGQ;FkV)6-~U-=g4I(L^(SK;xzB>Jt#VO_iQO#HK}X5I7R zu}1n|ec-14N^gB1%HC!%4{OX%z^Hth z&Wd7gu$VVA=6NtXIyyMZeR32t&tlp%W{pkfdKXh_F^;US;}fPa&4G*9YiG)Hsl^P} zn1{eHiEeJVDnnuH9+wL&Zkop3ZPRL%{dc-<(=4V`W0ryW4K!N6^lX!s(g$XpX>oUG z+^ygw4Wlp2I)m?OUb+7q6>kCG6|MIVh~^cvX>8DGlt(f8UD_khV&2zbbHG6B)1#2=C#iTBSj@(r(R6xfOno4v<4v=e>-$A9qK7FS%Ga2)EM|Xt z6!R$<>fRj4%T!@!SWHuP6tmZ+(_5z#v>0bt6tlx(@_VSTJTRKZde71aI-k}+gXWk1 zHjP#{jaHk+`8uC|7UM9lHf{c<#oV2s!g@wAE6UEa^Y zz=!)AZqV~Y%ZE={T)R$dFSyuxt>(Mpon}q1ojR}mfhKRX%qwgfh7Ufln6{)SCalwG z4h+vyVXYQ3Dm99!vFY^IWsbFjz47v~YVt52To<;0s%J*RZ1#8dIiq$i*v$V<{l$s~8pD}hmLmC?E`csGud-@&r z_cOPUd5+kN#ipn3V?UUjvg!p{548H;z$mG;!%COvbkQOYRq_YhC!_eo|xE4tE9 z;?EneeWl*4@;0daGOJkc2g?p!{d{KV$;C3TTG`;F|0zfsTGoAsRC-NX4R zI;oWFPf|YUA$7aN)UBAYsUz7rvU94YK_TTkOui0d8~Z+v6LZk2Cg+fRozN^v+|A&!SU_E*hKmk4QUYe2HwEB$_sv!x|T7;M6zZH&FG(^dlj3 zgvqqW17G-$JW5*P&k~y_=lwTU9qkxrpbpF&4==gIEcosCF+ePqi=X{L?PuaYEiQ)etZ)}0tvFQzE z4?r<_pug4oW=;&(BCmtbr-bp3MSrSU(MH+U@|}5uvgrvwSlX>0XZ_#OBUe%`{J2;r z_U)Sj56YZL1P4zpAHX8-wpA+e|3kFozMOVzD6#|J_VWUC>szww=xaAjrB7rzr=kC zTps^c&XI?*6RPrTo)9jf%odw=g8t;8KNT75eWa=EdM2Mj(%&mQEH*Zyt4i20>}4`1 z`V4yy_uGuO`G_1nh;3?i58ni2Xo=YQ#6P)|J}P$|D7)JJ#IW4QBXNYje$$U{GG|+W zG5t6rYI}QkvF^u$Uxodmt9na%QZ^~W`;;LA89w{VUK27Bd=p~J*Fo7u-bkB@{ODA+ z_Y;**f){&VGkKO#rU2!Z_{&a^ue68c`x5y|nzk;gKU|R=eiuGCdR^CRFaDm(W?h85 z>}1t$-Lpm3M#NV|Gyh+yfS&QwH`K9u) zSVf(E+2_iB1AINRBA-95`K*n#2&YNg2!_K`X@>X949|Q^>Xohibk8<*+p+AS6&nO+ z;>z9#Da#KjOZ)1)aPC(HlQy%ClzR_rEzDhW7jgF_a&oiWSHSbefHS*V>=Wl>!ys-p z>6UWV2eKhLPNfl+#~s`X*W0IXeF&@KE-)1~N{9IfYvayy74}UXmOxmDFk8Ooxw|QE z2tFjxPI&3_)uY0PDCZ8!A85kv!22%VGcLyW6TQlwm+ByUI-tp+WzJghsqNGkr}?9O z@!ds?Au)Vhli`fB*dM|>@MA{q>pfdk`^DfkW2dQ-F}0?LNsGJB!EYH7nmC>DwjKZW zy#vM9ll?-BJ!`SsjKrq2BOHSV_yBi*J4w#CApL&GUi#%9oV7KS!#BE@8Yh(;^f6yqt;b2RA2m=% zX{(tZIt@x6;u|t$*00)~h8lC9+!oGG5S?+H+AEP65gCQNR^zkqtIXMk66frDI~p$- z-O;#`GD$yQ107=Nm!EFva!sSqfuC%9oZm%zNE`m{o{q-*>#;R|_yfBRd)WVck8sk09^pCo zJo~ox5I-HxVB^`GvsKMK6rxK=eC3N=S~KgaOE^m*rD@j3tGFYAb}d5I#J1~Z^ah{d zf3cq`KLXPyMfc03eDsyE@%$73EB+&~Y57R|!TmL}E>=3;%^T(+JAzjZ7r&y`8H2IG ziT%n`yF$IM@`q(DF~s{%;JuX<<2KO7vqaXvY{t#5+H&K8j@cjFE`G9IkB#E{EBbf* zSSaO%F57xD-pbgg$0K~|;Gk&R zYuv+#zq13#FL2W{!U^VNSY<+oW-|5*L0^>Aj=F?hssxGwvFAnsnDa#Qzzi zIvOX!KkrqbpPTdBWWT{y?uk_WeqB=dbiThG_g(h($r+K~`)|fTcvoSaa*ZYZ#wpeNK4V&z|nVgnu+8w7|=lTMAz~x16l*uC+MX_uWihZKN;fe4YB2j>g>K z#-1wU!Qo`q-Hp7yDLE|rMgQt}8{}W~he~t{RhDadD}DbD>YgLDe$h!51=vR{I)(QC z?phW}8GiJ>qs|Vctj!KGbH^};wZ>zO4^S_4KaH7tskNz-oCWVNmbZcN;d5LQ^G)VR zwPxN`&b;dnj4%5Rb~K8QsnBDorAJkMIGwuK^z$iW`R~(P9=?(Lnii*&Fs~iAWM_KI z+r+n+a)Y@KjC^~8Z;A$QXc~wNdXqB(eonaJIb-v2ghv=l6_0$PdE`s_bY7w}E`z-_ zBE$Npdm5UF$68$djp(lB*hy**c8q(f4?Zf)?`6(fGfkgOAbP5AYcKW>_$udf)|x8& zlTJ$$Sc}0$qBQRi@XxO{{?g`ky~152p=8ZYc+s~gCB1yR!x;>&?Wt_L-eWfVSvz-fzs1|y zJC;qBxre*|o_!XU25T5|tnRxO-IsbT814@(3}D}oGOxLpF`YHV9drAHe?JQ!BFg;* zd@l7Ujw|zjBUeQpOT5LjO>Uy^z+C3Jl7`Q7s?w7>wNriPb}BOMRLx$zm3Mb=580Js zcWRE^n^DHvrRtx{CLiYuR4)4S&-9reW*L-G z`q~a?E^~zkZt*s(L?5g1hHjO5%KX4rdY95a6n}O{=c<0;C&^FcpQ!U+!~5URiDG$F z#^%m^GURZyKdxo333|v3bO#?kpy)LV65*3F!zVWjPhdZ|N7>ReZ_9YzAD#$t2b=K3 z5on4GII!99e-1urB4>oBR<1O2D`ceT&cC8;A}^D(@Tp(+?c?~M6yEDkd#XCs_X~#= zzZ{R-0nU}@ZXZ$c-sl%z)=j)p<^n&CqYv}+`q+7TcQ)Zu-qiEtiT%wJr<31G zePm3iLH3?`dRMmS?sPUepHk^;F*0Oels9VE>AR^%;3p)q+RA_bE!v*AvLfj2YrxNA z3v)6*^Y7`3m*!2ZWuJq{ojlUr-SHxV+~#2 zW1c3mN&CoXK0ICIE;idh9B(clEvXlMdY$Ak)1)W5rpS_V#uf=LCfw(w*ZDZpFL$l> zOY%`SnU73o4+J{-ErOGAp;UAi^nqVrPdTZB(UCjLF#1f#R5{bEYyCpoO)?|D|KYJl zD_cIBitU150_QZ1$wBTw!?C0|OX(35{aM z*Y5mu#BUedUUMhg9)7!><)*Riu@({4k7CBzc`@Ux+_f$9m>Sws)&?f9ANUaaf%`LO z{3iT0fH~sl?E5XNxP`eR;{f%3^a7_r)*Ik2b*_+vl@vR2HdgAZoatVT?2>UK#q@=d z#z&v_m{lnEo*b^6Q>=T zuqi3tRBI#|ksAp!bD`#dvOQ%)u9fz(ah2^UBQlS$JR7ELPZ^P`39IVmjD7Vb{1CA} z%bXxWze=Y6pHI6#GsH=McCRz@xobT$<*dJ^)ENsmu03yITX5RKCx#X;Y)U^Ah{j7U%ViTFPsyq7r*?SZXmY#Z-8?nA~f7gKyu zm9F$V_54^$_{-%Tjnc1$KQ4Gg?nYH}hEDx?2lflvf-`EZk8G|Fe+U5I|+WPB|gKo7c-{MGwSUkexVei`p79kKJw&EqUl=nj9# z^VM}~&L#G-X6NcuzK;q!e7Anz?SCUKb|a~CdImIy=M?s{)bKAU(|pQ=t*2gWc}_KF zh%$#Wa|Y5&Q{|at^M4{OyovIR<6UU`67f}9Yf{56@+^7OGS_hq;>Tk4rO8~#hdi?H zOT(|OPPXA0{lmlT zb5Va)o>c}j*oME+Kb&Kqrws^a+vkk~!Ws5?Y)&|pXQ@X&{^RQ(+kXE@97Q=Gg>UUT%d5x~Yp0uM_=h=&KC{l>qvgYq$Cqo*u%FKFYVVGm4`j<( zV|=J@rterEYx>dAEXIdR7$36f>xX6}h5NVF%_^(--r-#pH%(m1-6%qfUrl#p{W!eR z>pc))?4};uWNs_6eUqQQi3{e{4Nilb2YZx^A9p!^3o>TEiqEXBe`lGtXV@>UiQhL- z!hVGt#TL-bSZ8Qk@AMxS9^4IWU*S${^s%wAv@M6WMdAy$AWz$i@Y`741wFg;rC2sf z#^&f*18bHII$T6Kefa$OW9BqTW==B=9kiM;*%!7l$(1=m)8Adl*%XY4=;&kH+3V7d zJT1ij6bRuTi(HanzaX%yh zIS(cya{4Ace}5NSv)J#)lHYcCwZIoz@cOof9QeN8d1W9r@H=MBH2v^y(i3cMD0JZU zGYlqUPUsE$ii>+=AZDrq?b8e7x<5b%*ZoUkE zs%JB9j^o{8W!#kY31heER1TSIyvLXx?>C{=!0~gA_DM4@G9 z|7(kX+{O1X_-z&+Iys7e-Qr(x@g9T!rNx)ZJ|~_2%itAVRurf(DbGRt!jx_S{aii>~I;BT?`QhyXb&z1+7VC(y1gTKb&9oNtIO7PHudTab+V4*ECMe~NGR|z<1 z+q}N7_W2Z98CL0LMlK;;o0rtF$fns}WA6f|=oaG_TVOH9FLtrT#Q4RIw;1CWdovj5 zi66E0L6*EuvzS{n{jaf@R+qPjTMRx^QqH*+v$21aZUZgmVU4-mVp7<{YIriuVs>lH zOpCc*kBd?sKNvNxj?#X*MHZ97I7>Q9o2t_sFsiRz;n*-s%SpkPS^RhxztZ5Zw)mzY(fVF& z@t3>!2Mqq37Vn%E#ZR~R8(jQd27kWAH)&c(eJ5M|3KxHy!G|n9MUMf3A8ql^y7=o1 zek}Na?9FJ_{ZsHKS^PE^KiA;%Eq=c{t_`sGKe_lz4StZtU$55|CH+1cU*E7zubE4G z6&rkt#T%baoCeg9NmZYIQt8m z{$h(o#+mdt>+&=QS~Y)4`CBahUKf7|zci7JuUPyjSN=a^@sGQB4u4hnW{YprvRKkz zW$`b$_>T?ElCW|k1<<);#{16wv+ThDAz6w8SBi}Bw_|si{qrqQc z@gc1b2|X{c_!%y~&fqVy_>HhH~gQdc+l3wV|O{cidr z4Sv7Hw`qQp^mo|w|L&%rYw)`*{`ym*<^PRMe~7M=lt10ze`oPc`BD59i?0~0!UW&T z;NP+M)?gI>GmBs7;=g2lMCiZK;;$bW#XoQHZ@KmTo58P(;!ls_e`N6&y87@ggI{Cu zdD?y}^mzolqQ6)3pp^f&2LG7Fx5_;WT9>=WrhlfJ{@Vs$Z}BNwK1=%57JrqCf7Rgc zuy}Rutxo@Di@(9ezi9BcSbY6i(eli*!?;HHt7N4heO2MB7 zUh)51E`M^Vl;WRJ7C%b%w`h6>EdD1hevZKpxA>4dzGT|+T zevs0~-y}`uhU~o@rs^m(*`U*_519Rhhgj!Sn3(;L&*?Oq8;0t!UHa)?z)6}f=rrpC zF?(lM+cKQz+7osd{FAl}j_yZNhDKWkvo~=&ST!$>+jn@6#Tg&8cT}2g-S6bPnhzQs z@D0AJxp2(B!`p2dX5ZmYEhc8);f*?-=)S`jEGA~(VTDb{>^oemF|C1^eVJtzWA zfkDS(ym99zQvXZAsrlefwC*AE{RhFyn)c<;OZt=0T(IZsG+P6oX`ZPAr}%KcOV6ob z6rUe+`Knr_mk~LS^b}uh({k9RJDxb`nXT)G+BVCK++@lyDXt77Z5hlS;|g1bi!{$k zIfvRZoMY3=h?JT#oJ4x6%rX0m%tWS^RPrUu5uoEIwu~a}3*_ z>Nk&R{A69`{Z`&eng_usy8Y5kbBsyzF!pxJygzWgJKx!3@q1nTDF*+E#qW3bC;!pn zkGc4P2H$4!O|E@utH$qV^N8xN(pLQp{(XzTNXru`|1ZGP_xCsS9UH|b82o07uXpW! zEjE45x3@fY2z!b2>sKtk*_}T=WAWo%{62$k245)i!HxQxlxLO2pXcH~GWaLJuZr8d z{~&nPMrQB+`(QQ3o#WqaF=p@n+hA0_`^E1-+YOe1Q8F;grL*{ROTB(z^S$037rt-t z5m#oeH~57XZ}x*py(+=OC;J<|?bd6p!Cwo$`YX-}Xw`WOevVB)X50}!NGZ=%7QgZA zX!%PleyCfXu)$wq%X5*-S6{dIo^F4?)8J=V{3w^N&a(IsF8)@7KgZ%rUAyJiEIvlB zm~ZfBSbUpH|6vw?m79KR(L(?IzAVuR1ocI*J{?iS< zFL*u1x&5>Q-!6q;;o>J7ycfLYTX$akDR}s2f5T#JtB~@HHu%pU>d@yPT<_BJ&o=#^ zyXl`~@O!~4d%n@rgdhH3(~r?B1{nN@-~-3tpN%g6{MzDw=+d)~!EXbv`pABLc7mk; zy2iIQEOzl8ga0M?_vv>HOLcv%{C|l!^gZr1)BWNgwi7E8B+X~__x*u3UB|!hokgSi zhACQqv*|oxafdZ-S6n)e+3$HC#qVMZRrEJDT*>PJi@8W+wnZ_noq4&%G;7Qji%D_y z!)lA!uQB2Wsq(ts#oS^s6Sdy`vc+8F+9j^Dn7cJbY@sTh(wu0Y{f@;nYs`-i1+uq47{AC3*1LRb&NWKX3HyNWP}FgZ&~ z>LBZA)OFhd)+djcutF2|31Qr!uHp`xBj=)_(-8leLZ?B}8@8l>x`avIYfRWwgOj{h z+c1NZynjg8<{`ckPhqC=XLuZ+8eguwXRG%g@*X1puFhFIdfhJ--Q-NAJ;S{CStM{i zK_cfAaObEwV@c?CF?(BNFTfhkH1m0K@#hH5Z{x1j4=HGQkEUe(vj|I(`;?<;=Ub96tt~#NFK4{3ece8aADy&$|mj z_iFPzndcqm`AnWyndb>SSE;t?eAnQfVN>SY^QU6{a@2Y%dzEGFcAxTna{29IXqC?1 zZ}DlCyE@?YX61)%d}CydT4-c_SLDo%_C$Q(j=VP6ci5i8vF7Yv)S-&=2R*tCX6?ea za5q1>%j3h|_)}D|FR#J&JJ(nII6s1ADO>Y9?d2YPI9jF{-xu*4i0-H8gU_!yn<7B| zvuH2tZ}}-_i^|y)oZ~Tj48HOma~(NzP5YEkwn5j6e~9w8Yz`dOHk@q2O7W#D6uDli zb;2~k5vJmnYFXb$aGbBGd{uflGVxvZ!|tOn`Ms=am2r-9UMM{Tj#NFyMR3q$m-en5l$3b4SoxPc`n)8Am?OL z?^dU3u<|`iuIgx1@9n%p|6cYzV~BcB;9dL{g0yR_pUDo=cffZnbMFJO{u3*q&+&V0 z@{Z#Td>fj5C-67&;4@Zkn;O0zb3n6Zx4*o4xr<&gC&aE!LmYv&@#$?c4uK zx@DC2efECabf;5i@e{4x)6uwhsnek9a%yh)J7MknAM3Lj&nLcC&J|+6?LPJ;itO|I zLPzpaeQ)#MQowoLWz->qv%BTo>2KpBC1XzcHXWyqa?Il{h5VWMZ#&$t=^LQW_?9@C z#F4uNXA(!wbr6{;e&xaoW&C>vY2Wc^yK+vE?8Cs{W<%{1e{q1lX0R4p4rfOHE9jYrCnl&(t}CII?F> z>g=PgA^5~;!q3mvr+nUqdDLe)@3N06sk~x?uP~|jEzYww?-Sp0^2U!?lwGo%b2Z96 zhbQEEN*9cP-a;3z&>@BUt2j5*>77y%TOYf}+f!bC_^N$%vtB@VaX8B_78B0{Qa`JI z_>AA>I{dGOHYgv+aW-rVby*9aNgD=u9?I|fz05_;SbGJ&PkDsJ_v7yNFi5_3yn2v) zFNPKmRouKGoALBgo*%CG{sx=(Ba}z-6us|8{NHmJhou~aChS_mRp$Ps9dJ??xx-D$I2QfE z>SkLXI40+h%#yQj-iH5T%UnpAGpUE1$HN|Fbq-Gm87$}W1Q@6Fz8Y8m7zcg_`S{^0 z+XiRAYp;59Z^+00($`~Uj_6oB5^8ef`(eg*(RE|>dwcI)h%)UB<2T8FJLhe#>*?H3 zijSU6SLj?!+DV)t9^qVfKRCv_aB%*hl49=Hn88^Va)!E`mpY$wEUx{dGxJxR@%buu zvz%7V9T!)6)cZ=_pXQxQp=QqG`yBQl*H+i&BylE2ggrg#EF$uiI*Z)c0}b=2-)}s= z3Fs*;vA%N$Ib)%X@8~Nno7tPT-kUPsL%CEPmUx2cF?5mg50rk$xuo>PBj^hC0nW?$ zV7~03Qulq&lDrE!uQH#rCEH0?`fE93{0{Ei6FRJce!301rXl{($g{4$bxcj*uFzhb zyXxcoRX;j^5;}h}I)CrAUnL}jMJCRGH#DDQs{SNpeuX*;FNs~&^7hMw>A6p4RF{8& zu=2(IOUl_VFLNL{!zo$qE6a?Y*}WEw%&jD?Rg_iIe}XWXTdmAN7gzfq+0(?gCV0!1 zWe4w%@h)ZjC@Hi6MPN2}lw?SKg_p;}YZLg%x3_4st75)M*xSkInEcoAe>>+Fv@h;c zvV~s~_tX`5ybH!ZznnYly$iDWzZ}_kIcEm@kcCC`*&^-?@=f&>_eaLn#DwJ&Hh{2i z4RM-FE2kb|-{m@yw{rJ~jI+K(dCul|UU&%Kqjvn0q@9QM6<=dHqdGexcWZvo$J0<+ znQ+86JQQ>o>*P#YFLywD@G;-8p8Ms@85xx0Fn+a1%E)VJzriInw+$@u6_zCXCMTvR zEErr;)F|_`LE(0MM$v(SiO{77zdw=JpUEq8AmcD`3po=Ax~p?GcC+W~WA0J5m=eao zm%qhPE}S2CWUe>(`JBX{;AOAw&KuER(Ybb)aGvf|&eJXNZ2j?E&(<93vv%0c$DOBp zh%-PO^7-nv^Wn2%_-zJ!Hy!>f;w-$cuZ17YS^vV9KEnNcPXd<=9-h3d&)ToRaMx<& ziTjT=9#woZFv^!%@J-u5&Z_1`gu!e6}!6MoE6@_AsC7kd&e^Kv;m zOYo}<-XUE0QNlKvurC`mzpu>Y9I#xcMf3H*$PV-UQ@+bQOyYQGQ_1(Qgh|>fPqBPW z+4;7Y^o5TlybOL98s$$doymAQ`f=VD!6U-c68OQsHzvZ9mFP86e?%dw&l{uA*A4nSLNlsqE`^C>cm~-PL4_q#CznyQ(7dIqL z@FXR#o< zcGXW#i}sTX;QRC8|6=;V4En=#`bp8+j%B)^oJeO;`eYA%KdtD$vHEg=J&U3*i%wm^ zv)tb-e)95f<)_?rAmfYlfr0^!+FOAftUpc;GA`A6eZ>=E_+dKyAZIW~y#C_L2;a>2 z4E}uy{^BhDL(oN^eUbqU2PhgY&ee9ekJyvx(C(cvSqgJAm`o=#SumSlcqC`bYmacp zo3HXT`iS7OI3HwU4`-%MJBzgYt9T1e)$w$ioLd3E*l!hlTkmy}*PJ8!LAhHQUUj&K z>>bWE(z2@aULLDoO`|W%SY+oJoI|4K8A0Y5dCW6{%rj(evI(A*d4}98ltjIR#%tLl zFqZhz=T&^Z6|?6^+DXOdOzmJ$#}}T@lK9*$SNUnjY?nB|Db-WGpp2B=RFV->9tEAm?d6`k>f za(Cy&&)4N#vZ*e|SGjP5123$>j`KuMXQqdJ)yUqo1jco-UHy5uqxSy@<~8;J%Xj&f zXuf~M_Z;?m$@gKsbbQ$}Ecb6n{NKjJ-$8u&Ch_g}U-O;4C&`y3aAt0SlUk4>FDDnhyVn=k0{IdowCGKYsDT z%CES0-kVvRI~aKijfa0QZ6WvAse93-9)UN zHY#^F-G{9-mZy_BpDN0e|A43Ete7Rl|7Unw&UCRnUH8|H*=g|fAfdDB(~4iSwX(IqJ^jN1?s8dFb+7-llzuFEmGPe^>0*=AV}j0qpx_7-eiNMJ zmnAsP)XgzroA{Uf>P>#hDbDNy@_ifGA@sE}V6*I_VvNX~>_qix32P@To3Px30hPWN zAK@&2Pl=CyF^4|#E$(MnLf@Lt8O`Ol<(ByUPU>o}KY2Gle}b?0q(08feExg#FXNc_ zl1Lx;GiAN^WWAnKp6sNqW&fwl=YpPr#b<&&?DZud^$tj`O&C}_iT9uKJ||&dr5t2JHZmb2a$COBkmY10FGXHh%r111-P}DQ-*4pmc4R_9LjTH2bEdQ|Pk+-V z2PoV;aG9hd_o;iRr=%t4gYDuzlOXNnOUO*_Pxu#<@3LrKx?Xxb)8)C8bfj;bm5^PT z$C%^Re*kI8n5gr+z?56)SbpiFmy13i^DXI%mnGY}*z`pP>UagFoI2h9h8}LZ6ZrlT z_5FzPbn}xBA^SY(hdC!rkEfm2IKKGq6m*)x=sg=JTDudTv3ltP$hFm+MIe3hDemVL z9t^;1H)Bu4wy64vyh|TQp%29N$!oy0nSN4eFulO&`GDs6xsr~-lo`x1Y)!VmRTFl( zq@&K{ar@*!Ft)#~0y9(6F&KH5@_YhD`gT@a-#bsR^eGuvZQm=DJYxEp`J2m2sBwSmv)QE5$zM%7Zl@;|m3CrEk{3pL5`c3;18-%~pMK zvv;8ChXn~amH98Oi1tH!CzCFN1#W4`KYD!P&2e=%4wfUljEkSUey#mT#r+h>o5S zsY)o=E`3yZdlL1OapVl?Q-&rozhS@R*z%J@!36r)aMS-h(33VpcgTqRZm2HDaN>QL z;EzZ<9ros^{0B(CB(KhWO=N(Z_vO8u)H%q2edKNPEths-uj*WHsAV_$io_?+H1bT7 zJby}_A`|AOg@X2*$OQSej&IV>Hlw>rU-LaLeJwG4aI~+T%lu&)^M|R7aZ?!UtQgm zwj}s6gFg*?DDm)w&DfEJ7u#8z^7ZhR_;2r5GJa7}68)k?@YUdl^7Fu(+|?5uE5L84 znbLXwxrenwvAv7_*d}Y1p8mx{`6VS}B~RsE;b|U!@)OwLW&Y`VqDsl5_c_Z-%Om$Z zetXweclxo=;|GR5Z$lq#6Ud5={hvo|W$xLV2M81TOk~fr=)|_&Ie&G-Bh*jkuC}hf z+})w6fxj5wBNArf3~n^sRtr zK=BlQKF@&U1n88=yj=9$?+;_`=4^*^2!*eNW{K%{MQPUcoXFNqbo$N5I>t)+9_k?d zCwBd~CwwdC8g<8mr$J-kfq;&?ttm=Zm+u}mbdBY$hX}JgD>NnFZDGQ6JL$Qs@YFTX zS$Hbno^61PwCg%DZ(Z*7t2ss;;l=Q1GItSI68^L|x%h5)YzyCoru%r8xk-U1sdCt+ zAM~^-Cbf(7@UC`swF6c3<3wm5& z=+PBF3N2SbAED7OLnAwuNSpq<^Rxu!XddQjGEbYv9Bm47HQ|j9;e&V{`zz;6b=NPu zqtAHCYk4KJ3)-Z_(B>g%*<{WJcz|c|p{T|tZF!+KL9g45AWb=+&GMnpE8f0g=&zVre zTBE!-A{+gt{0}1&A7UNsLDrWt;$-kU=;?a?;ohD3CSjtJxM}5Y@R@ubCLNon_>aW$ z$s?2}Rz6cE&aCql2hiK2_Cd-bwxFqmiB8Y`@9BPQLBshk;GEMP)KPp*c5+|eu7pI! z%pQ?MbVxamR>GG!iIuYMzmxkB<=dy&+T!^}bSYbQskbfrgK=f=u1$2_zDNzaM(j8- z;{^QpkLHlFMshZ7D|XbH7(HVxHcIhz8SAOZ`TO0P2gTNDdCiO5noE1Abwc8aY^tf$ zy!a=Bmoswhn&v6YYxCfZ>r6Y_zA%e4WGzb4E#$kTdjVlG9$B7}FqwbG%gw2TS-H7I z^31^gq}FbQmX_21e}p685mc%r_Wo zllOy>^#sA(XUegU^Ec#OZ1Yl22aL3Z9alx)RpSKXgRF%w$5yqEIa`^Baf5N+t(-{;QC4?e953@@Nq|@t>GO{h7Jp>+qR#OK!;v(KDD%JTK}_ClMYiquf?6leYhv z$PU^|&ijzNe)q-PXCn1^hq;2D52Z&QVBVwZDs;yWv$Ur(uDdm5S&KZC^@0HNcpK+& zBd4m(UC5HZ+Dh?A^**Cx9hxHH*imE zn!mR*#y@Y;hCiYoxn-NUA@9qA@jos(*7#e(ZJ8v$%ShYy-9khA*@VUS@o$)NCBesA zF60dCZ>N;ZVZNUy^F7+9jsGOSGcMXT(}Q(>=p?cy3m=xZyo1sr7p9DnF|h!;S)89X ze2exAz5Ci^x#w1%3%9;DIf?MMdA{m{*Cx;K3=ZqI9um&;JI{pp$+yx!zBU=ZCjI>J zYm+6cY>)oG>fmdW^ZXvLo@W$K{MSaXo@YdUNAou2OEPDvcE`6P;DZ_Xluf5jN$`U7 z+3}oVl|OI9hThbr(|33z_WOg*hVj#(yR5s*d~Y*;8U9<7(^gIiEeMR(J`8U%rxE$v zUH-!N=p3_~=!ZNnppVTKTgxWqud(&9G*bNm8p?kF8aX|jXH*!p5n2SG#VE=X8&`d& z4QzWz8w8=dw8s?Mz@{zqSM6nJub!d3YB$nXctd;1E6>oqySl}eLFX|zY|A450rHNP zpL|pp={r3<&zvaD?!I;97Zj*F)`;O_zx7S-2_J4|?L28_X34pp)U*+c68TRX^VX?_ z!Si{((~~~t8ugzs=AE%qg7@ z-oa^id3%j$xZTV15cT|Lr^kq2^#6Kr-R%j4<)&>D0vFh~7?GF~6i!dju=^ zuT#%GgAxAUR?oeHs_*o1#)vMFG~5Y_oiSFv6k_+*e$V*t_i(=9@rRxX49dGOp?Bhi z!XLvIY@B@cv?s3Jo!RTU9zC6JR1aEp;S|2BZ#V02cMLk|!li>Azt98kdHjVczWRQv z`(5INOuV6sHcq~3+T+(wAzo-u(}mLSL-emdbAFc9dG?~y=czu|*{3eH>}izU%3_g? zDagPYk$p4rqp~dt*;bgESW*oAdLu{9hZds$Re0{svHJfnjeZsHGu9O^qRXqj1wNyb zKZrhj>vHBC=G-#I7d1Za!*=Pv9e_5G+1NFfk)EB!@ zKl~|D@bgJjem=|xTg5(M?J@(fE7-Dbq^$A&K0hT))7JI(d5JJR7PZ;pv0?=p_wMVx_*jgn3u ziG$uc(!|+eFpI&6ZC9eJX1?pc(O-t0+9 z?w`=7_-^iR4tr9QdxP!6-1=EC?>>J|&a+^CjUDIOgucbkfO$szFtAHpvl<__Rrln~ zSan~{-scj6jC-vzF3up|8SLjM4i*OSe=8nII>AX!>JsQ5WUd}0y^-i~OFaE6Gk#o~ zQ{?d#(}t-&FuILuu?Z)n`$g9ypPC=BHi-|3jCJB)C3<5q|NHSBkv$2?{Hza?Ekn_~ z^25RF29@~mXCm&Avj_J|FH-cte+i$8f#`g`9!|f{-t+_~QEs`zUFL`TP6@SeUrB2F zz);H)d;vatvk;#t?or1d&^&v40Dbgp3^JH-F{z5I&H%|;hpK8 zFzYno-Jjy)u?ruM7x9I9-Lv(#oISaA*bSY0q1v&Jr+dlI>w^!v?`x?{JumV^KtgEZ%baC|4$FfImqmr$f>9%{wL^$ zLSK;wkKJW$6&KOhzd@hBkiLHbGT?k{z{P9#44W|@*`WNbV*QY%pWA-_8g@AC3+2uq ze@2)`^^=Uqqm&5M1LjCt9=rbHUCBqA_ETM?{Ul*_UQ$Lqq+hNg%zK68A$L1u zMxG{5(K-GZSv;_oeKl%**0m+xLwX{&Y(8mVWV{tSOAWq?n~~EV($6&GV4*3;65`4C za?UW#b*3yxFm@Wj%3Xh5w$b!)(Khl7)^s`>I`suFb0aGkl4w_vg~53hhl9jPqFs63 zkblzV9Q5Nfq3=n|Z@L=qx}xzPYp4_JV#VkXcKi#NdR#y~;^zxRgl*P!A1CvM?Z_^f zH|{|8$ULFza*kK!6dk&&_K-4{k>?m>=93w=>p%CjZ@ld3}uyl9M;$T`{)(6O@GH+RJXIc?(iOAdJdQsxlH&0TcY;u zcGnW#0wZ?78tPk~;EcOC;qZi4y`>A1;F}ui`#E~#+QmsF!O1yk<9ZY&+q#sgyV>;l z`ma+TU++O_K2O#N=B{bM)T|LJy(u>&co-9mpK2`rrZLz(;DK0wZ@cc&Roz7%Re>-6 zK}X{RXdr7$_MSFb3&MG%zTxqdaP4=d;3KH-<3S&gdDS)#@#gOKG~E2Lr(xxHye+mo zpPBMo`qe-O+b8;(zVkLTh~=3jU_@p}-;nS`gF7Fb$lQ;5I-@u8+|HdyA01=e8~+^7 zqBTh(x5P*2>7Aa2nrF0~_ET(<-O)gNF>D_D?$Z6ZkFkA~@l9mn6_iDMOC`^0>(rVUn0IOo4xyJWSYPX_78T7E&YGkS-%fsL+8TY34( zZJq|1-{9k@Wax@{GQe<&MNV-U&dnL;luumk%`0BKI-82_wgTW8+N_MCj3><;Vj5U zhZq2VwR0zC?h^E5-ZOc(cVV=12S$!c_a`ddUz6@G!t(p+ckO>7K34c(et--!<9Gve zraa2s-Tb?|K5E-}J+?F3Zf6<#t}A8BH>V-n$xiN%o?nP=CV0WN9~0j+nX5FiPTDhl@|~Q$Fe6=!385%Gk6-W8 zX{SdnKG3~Pj33{no|e{^Q~vmQ*~Ns#&&w_{^_2UJucBVd_|0(=DyyhBa-_tLgO(>{ ztP;QG?@e?X@QFy}j=K^cb<%CodE7lw`OfH~e5Z9$zI;=@wYvhq76I7XB4pJ<9x1 z`wF>!4TlJm@j>pv6B(iWsJV~E=PaG|YR}MuHH-%ibBmWKukh|ok{|t`jCql~R}<&g zhEF%)lf84QJ~u+b)94#^|MME`=Q5uz?dz;-mpk0Ji?^EbuHD>y+=O30bNOcFYhdne zmN~aQpWV;eh0NI!IUl^p+$(9%XRl)3B>So5TwJODHdygBw=22%Mgc6+ftkWEs#GQkaR;Ps7JKZ|>8um`J4&osX zxpVNrIkNwDK;*n5>P&?r3ghH;!rW~zlflToW#!{d-UCeDZLF0exqM?7^0H=dQYKtH*P{ozR{A z)ad53efNdJ9_)>huh8P)6`B_K8L2R}r>ClF)>Tq|Rc^Ozw^26M1I9{zLW^5KulCm(*)BDrAID232#h4>HD1B=>eJdz;wsQA@>{rj@ z{)1BZ#R&`we|Wp@Lv6z}&y)+#Ei;;NRr(63;%evxd zcuCeK#CGZNtWoao-xe^-X&sc~J)kAiCWJJDGub+R(#Ou~K`SO0wK zCwtSRep|3%MEf1}wEgZEjS$KU_? ze)0r;AoNxD{iKQgAKxLbuI8ba2_KsESmE&iWw`<#bgt-Ma@K9kpZLeOCe2eAN|o

|dB3tDo}div+^ynse8~>MZ@Mz2ntc&ib0mZGJ*y`+Sbrj=R9b=aJk+oi?d?t3H!J>R{6hnlyd0t1kCD&9jo6 z=CoYLUm3!G#A4$0Fx!5j^NG%A+t8kwP)K;X)Q5G*u=cN zgilpk;KWZ>(o*}Hm>c=n6D9mtX4=A*RnlAObtf7=UrSfpH^i4o_(a;}g|B-uY&$;3^UIV)!k^~(UrlRWOj^(L{DevC zS)Su%&PLj6(9(`ZwLc6Sd@<#eeLS)U(3Vr$Lzh$AYu~>`uP0ks(8_zA%0qvDhxgcg zEPw4I9ceR52g_eO2)Fz-g7%g1Q{pO5$Hh{2j!P4ZoD|SekbyYlK#|F7dQ#OUN5x`eDHF#lK#kPVtxP`g98W|6QMW88EyX z*)W9g@B9n(iI)w1iGK<4<7I=7@c->PIo;Ih3*_qP|DaBLi67{qPP@C1*L!@<{;u?^ ze^xHUx6@kkkbV>&zMAl(*fRdveiYwM4-o$o;>WksJ^u%Fx~iKxT|xMp|3RJ3C;rP_ z)aktcgF21xrcR>>zyCj|Qy%e`c2TFCF6tzDbu#m4;R!pwT3w+`>7QB`UA@OZk zF=3(~i%y`@K!1uoLoAQ)Ht*0~$Fil|_C5Z-PpdEeJ2dF?FVbM}ze$5n3=R6k(BS-k zfd(BvIGzUGtrv{N4q)f4?Z_n`^FBXozOuK^FYCSNiX#o?H0Uqyh0s^#wvWkt8oRyl z1h%9Sndgq>n_vP4^8gsTCLnX&`>U{JvJZ1Cdq2dsk8iNr+nvoCrT7LP2D7Q+`-jB` zL)Po=Io(~S{RVR!*()!0f7v&PPr=M-oWCdb`>xh8Lvp_3?Rnw-bFg)(a&?XC&PFYL zOLzu`~vE7PH9Lc-b)P=w0OcDn=iQKf` zE0~+*^DUWg_=U~%E$UaYx8pvw@1-cUHm8#=LZ25~59=n|SWnyb@WR{@{CVrepErm8 zDQAcrN$`!3v=YdFRmDR1Q1+#BmjdTQ^k*NxoDZ>miW4qK$lkXRz85=S`L?PS&d}Hw zG4;up`L8FdE>?zHTSCo@^t9Xop#?%)sh7xd8zwgMo!AcF#KvsHHnB&fCMPu0e?I5j zut#Y|AJ&o<^(^r%TJ+uweA$w-m)t*n-pGmmD>9u5b9@_a2wDSefAvSz7ZL@|pR_hyu6YHeS8KWji+e%y3e$6N6PfV&U=w0IP zL)*rccNOtNwC&4_Y})a)f_4pncQ z+{PKuwJn}orTFlaftUAjhat=D@)TGH6`(1cI z-XBX)XKbXdK1XRwx>7b>+n#Xrsa~Tj3>Hqq1S} z#_V@wt-+I1_Y>^%qKDXTn-6oABlQ-4P9OV&El;h**GhP5?T|#pQ%!vnFWk|Ky-(9t zUF+nR^>qg2_jU3EeVu^w%GzuDm-q*OT|B4+Kio<2brN6DQuu9Pl;5VqKSl7-*Wsu0 z;Hz`-0iA{q=+yb}oALp*_Nr*vdQ`Rees=wPdvR&jPZ#K$I0(QS{jb1SJ;`SWzY@=KWUBbO;#K-}64d_mBSc?eyt7RdwoA)u~fw zb*jobrLzn7XlF<4QCTZ)!S3uuyA7XMXB%2%(I9fVl`Xz4t42{W^zr_my{gnRrQ`oT zj(l`{SGG8jx#sA)|DbQmS?tJDT)Xr-&-rSkpNc+xA&eH=vhhWX4Nl%mtiF8z+iuE= z&M^JbH=-|&yWpD(ed*E`L$5r$1f33<#q8s_pIypm&$+5%5_&LiD={g| z{SXUu>m<{P>K~P?uD)sCrtCg7Rz+@@YR@iFs-zuF$;^$A4{{>&g`!`|IQ|85VTSH} z8h&k(y}woUWYDv&Gk!bi96Z#i^UFtn4CK)YVt?s}+gD<%l^i6upVTuKz0Xer|6GCb z&4v77;IsyuYOLRpK2aW7?vKS}PxDd4;wCFMmK*{`gFj}%AO5<}@dv!MT)8EsD&{xh zOFZ8OvmpO8S<7bk*Q*jQEp<)qqMpw1i4AGMR|fg8jv|T@^ z2ec21G-6zqcg)F~?LGyW+yh!k`~OKChtS`KZ7KIgTSo|ggENW$bs-xicK-l8j(#;5 zJMBYlT2Pfj%uE0e<0Ze8K|4z~|5|0qk8M3tskcw^pKBs3g4Uq>jU+~jxKQTpdl0Lp z>y5NoD{f!8|8Dkf2FGH@#Rk@LmG!2Nk<%=dx%l!Be_yXhzdb2!#lJYg?$rAUmymL%W3~w1>{6Xwfz~&Pia|dpXY|=Suz|Y5(bRNh;$t_FGdUnbEWZ$&;Q)RkHbdev6#9V5 zK1V6rGphRW|LO<)Ic#E&sw;$F+`wABfcQS}DdU!w@=v=(c^iJV6i+42)rcortH%`+ zbM&QW{CsqcHD)D)`SFr1tbLa6b2uCSkv=DKWCj1zmdQHk{(25*VxN}JC=IVV(5_Ue z{Hu2<``yyEgWT)=6uH$E4#*TdaWguH7Kr(R|2ty7q|X>JUu)qX1HTgYRfCKz`|4bu zVXPjk$X*bxBz>&@@3GiCf%l>t))Kp1eJ?R4fi>VF2U27#A$IOyr)Sc(D~T6VkR|CM z>WcNWvurWEnnIt7?iy!TfU_-8%8>uHHXKdV+pxZiHXJxa49yc!Alea2q>C^Cn+_2#SaL00&$%OCa2Ho>L!F^|4pqprBPq55(E`|2l^lAHLZD_%I` zAkVTIF{F&|Bu|IPrs`Gxe_6`T)m!}skv(Phy~OcgY{&eCT$vJ=dmn3$VuiM>hl+`m zed}WCP71%n8_7zl-Sa6e|u`Te{oWX<@LQCj{Ry#EjHg|D|VE|-0`tV7-=V<&|351l_)2PZHI4@dFL zxPDIh7kyz7aax_f9eJdEP|atwZ}+)9A$#*}g|vs~>c{e&*g5o<>uJ03Z7sNTV5%Z9#47b0=BPF$xpf{jCAxJUO&iWL^0L7<)#Sw;DSVqYf@kr8XL0(o z9<;ISN&d%p+JwB*<^4uWRm*?c&l^Ac|Gs_Y7GL`tPR=rZrE<;|nmw+TsQBy%=402pzU7UO2c59}D{Ex;xdAU3}!OHF!)~G&B z-7hR~JthBL#CK)*hc;t_Xq!miOTNk5=NR#F=i=^-eI+Ds&(Gz3)g&%D5F5^(3vCwK zFZzG-@N;o?pZq_no?}yNd+}!zGgNX6Jqka-N8j~Ps)#rIsLdShj0=%*TkJLB5qUPt zkDCeGi!(EQJQIJV%qdLQ+al$9)QzD%vE)G)zgXxW)D=>{ygx|2Qr8IHOS}8fMskI= zU8pmrKttj4v-5tMQ^wd&>}q(keVDr2H$}xSV8TCO#!d`kJ-DjdiJG!pw-a~H_1g)J z*aDsTY!-7f!eau*)<7A_?I`yKe_a{i1M+f@ljm#`CHAI?dR+ zuODh(32g_xg@0v*s%(<)TChoEo$P*7oSXdB6Z?Y?d49Ol^A=><1MTe@QsI`?$q4;woeqWw>0`RWqncNHC3k`o*NIP6E z-FBAs3i3|c(KZLVw6zcJg)XU#>|J%wt@e|vMxMQ0X1dKSD2 zoHrS5>eOdN4j5}?j5cnQHX<`V>*2TQg{Ciy9Dsf~%;QR3@=Wm2Kw0VUo%?GK`YXP* z$Yal|`aIEQ?8r3iIC4IHB=NvM0F$hP_2VuMUw%T}6VONQQ&^uRIWALW9Tqt=@%!b^ z!#B9l9P7qtK8FW8(HdJ#SxRO7tY)f0Xx9UzYGV`?H+UW9;MV{>Z&9 zhxLBM4&(npKjq!QfSjBp|3}^`z$be7TMJxIihLEAG{Kv!silt_{Xp8k9^Co;B|#?( z>34!hZ233J;9b4V=pREPl|dpG3iS5I)y?B9c7*t0hA?jI{cU2^8j)wTMdZn8>Fe}! z$ycla^IVHEh&%%yX?!F0@ebA>)D_RooPsQMMc;hJ15EK9xRiXn33b<;hs&6{kBK)H z-+3|oLmtv9nJ;M~57mWr?SwDn{dx7%=NjHg^=vL4nhAEilBZSh{KW*}!+3Z

*ku`;9Tg`^Gtio)zAqS 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


^KIR;WztgVYF|#!! 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�a`&;QFsUl;8DS(s2pq3*}l$~r^6yzZo* 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

SazzI+V|GOpMvh-Ag%A*dk}jmr^DZw#9jkG1 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�Lx@QgY?;<~RQFEaa~D1M-_b!T$=o5tF6VvsgU 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

Vo|Hke9hg)*1+to7Y-JpStkMtXPcEGNglMD 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

  • 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%0DssGlRPW6bBgs${<#CIN-U;f=Ytc1F^y(D69D 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�Yl)NNFwF#M;U;@ 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

    l}+2<3UPm>pWYU5aZ-W@SvtS&KKW&o8x#L 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

    !pFE*ZA`jAd% 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

    N+euzf<(Txnyb^Mlpg-nrR5 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%0D;0rt6)~5cg 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%0AAbN@aYRt>{jJQ=0?ArP>ly8 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

    ~FZ_rAa&_CWTJMaVZPG&DtNy421Vj*U<2GNUL~ z7Xrt#;-3szsk6J8LHuzCUe`9~Q(|sq-Za4te5f4ZsA%JCq7b#Mf@+7Ktr6GNN&%8+ zv$@r(k%D0##hrbBvzfOl@Rk(2ZKLFxvmG0$9cDgTjh}|GZxug(YZ{-gG4t~?2I;&X z=#z_iF0&+Gv60Gkk9uirPW8{T7<(!c{3zL>Pd3Q7SBl-+PBdV%b#Z=#EtTC^2e zX{xMGt+%LNdT&10GvB)^6z=gajqQknM8d_EvC(5&rcm6GIW)$>OgiLZFy*Dis?}EG zg;fLbCS45N5o-d$IeV{7>#ZK*P+>f{wZ&CkqS%1jth_mnDo(Z3kK}IRqJ4d`e%-ZaI$y$@J@;Kd3W4v%WfOA(?(iPyW z>Vx0D4{PT0X%6!??(iq7n%j6QDUfP!Ad!{VcSi@&6DG-1S!r|ozqps6xpwf8Z8 z8~=y*(&ho4^Sw2*MAZUPy&)|Q`-btONS_jTfhO=#=sHpUUI5pg^R`Ke(k|z6$_zJ< zv!GKTRzYl=!Yv0%zOPfzfQaCGzIK}{e~L(EPY}tkH6BE0^4&0afP#fOokQeGk3&hM zem0l2>@kpM^SPt{OtRZtHoNVV3am@T`5-&JWV+sYNWHfTi?g+t!|1Z?GFKkwA}vb& z8OOkdAbSU)31&OuIF;J^aXM8UDEGUhCb&BBt zX#QCj*D4fl*TeN9+vu1M{PZt-qX9sxA;p)CH~vcTmgZxecm4L=?Lrb zaTDav55EZmB$}F+WmJD08@8>wA80GNYevxY*_-rewatI79%lnKey$#e3U=MfUeS>& z3csy-z;(vrK)~*5uTL*D*Y^u{rQ_McZ9SM4yd!q@41&ibyx2P1X3?OC=g-i@St)7fv%Hg`tSLJvFj(^A0Lx{|?zsS9+K+U9mFET=Q}` zoe|_pSMOq`;c&sHhutep@=PkqBkSvsgHv9JfXB%sYOekw2sOh*9T1}GK=H_?D-bmC z3WS`wf-~1E5cc>A^!)*@K+=}d4orAV1Z`{j?=ue9HaX0ht}I;{#s?dz5w*X=R6zB& zUXvi!`@F$C>S%f)d;u|4P)w7Nn4n7K+WHO_TS30t6QbIebqabH1vhXY>rS>aNq$rh zeB$#=!t?6Yy$l6?w+H*NUY<~3ex$hQPzWktMyFsee2U_vy&yiwXUd5)H1(gRomsYz z*@=h8D&Q* zqT^~Gm2QmcWKlHb&U$%=9S?IbG}%h9@B0z>m(6#jKfIsLLdEZYOJt9K;9ym*-ZSR; zJqbJ$ z5wR=$_pegXTjEcA^(<09LIa88UlhV=|4pd+c^dgvd%r07EA*@hv5x)LR|)y>ZC|Cf zyUPwWxC9@5l^V9rIS>i$;p@IAY>Fzvfr=MY#lz`Flma^BxgqcIxdaRPK}yxNNg$NM z66)cc}pr>9rEs)EV)}_R%db()QH|Q~ahn6w~ z4LV$5I_Gta`Wd|gt0$RROY?)<^_F7%-_6<=EW6^XK3Gs-f(UqeMz z(4w0RC6b7zar$vO(MK2bm<1SbEy*rJI^~3UT%==C`*f|ZJr>@^S%|USv8~nmF-gAc z9onebiPKwMA!K6bl6o(QiwYiL#9LM=w%+qZD=;wWT)l;zb_*RMdVI*DHnvxM;x$*3 zq%RfKgd+0=Nmwe~2}~W~G9M!w`+OzD1(@(FGA~-KOU$h!mlJ8LFCaBmk2w6tDX)7X+lCeRg zjxwR1UO|3YP~b&keT9!I7t1nUBhf>3X$1P39Uhyk$Jg1!DXAhRSXjiw#L0>nS$CB< zJiC?&#_hS`wM4T;R!bBxTftP5@P+t;0!hUB6#{``xIc-Q=uc>B&uEq<_zM!=5eU>X zcMwS&p8xYEY2e=wqvrmGpeb@u;CNzxz+&h5n`6AEkwdYB%IP*VK5&TJS3N?Ki?GRq z&x44^LZ-0YgIS6CG=|-sLHIQBV@1opHv#Ttw?r|mRblLPZ%ehOj_ZdeD zCc4z_F$hbRX4>4zZJmmC1;^JK%<7tDJ<+fR<${h@bQ+o(Ht#Yr6eKtT3Kwp}>A%gj+!R^`pVsI-YuNn@HI5Mf+B9J+ zz2K?}(0aRZn!#3gxj%_?crR^a+IKNW%Gqq1(WCN0B?QG+G14!X_)G8w1MRcQt>R4n z94}l$CpoHC)0ATHYC6K?W|)Y1m9#(^RY{X|pDP+>(QA%c3&GZEP2I>u+I^;X1Iy@` zZPGG2VqptIeY-}Ax24OI6wtG27hBB)M|@Dt#73;CX2fi=P>@)$u$p1j1fn{RH3|aj znV1HDHHpZtXN2ZC{yn~(TPz+<+T;C-QTVfIlrSPTjbcK2-;yk9z)8Gk+sz2+wR2{d zROia)jHey(L$bFZai`*-t3r${Pd;D4w;-S3>@|$y`TVfXFWcXQE{RAfig8pf6pLAr z!hp}i@RcOmd1SsgYMw0#M0X^rua{He>QC|X;_QIYJzb=fS5tl~#4&yRN{PDsvtDq* zFE+sMr9|)c4wy+s|HrS#XBtF~mvH-L&!U#F>#^$WNHH`WXx1EkC=TdBSHdF*v-VY_ z7%pd{c8AE^DkR$iLTs_KO-%>PRQoqdWP4OQPFP&S=6#&{^LzcLe4M%uvYMpCm+FP0RgAtXwF33yB z?-Zo7>F%{1#R`&ga8~i!x$to{EN82E!QUHkk5zpM^{AMj_vn#>)pP;CAlPE7yMw^O zJ-C`$Y^iDOxLOF2P>uc~+=?Y83qP!J97Oi@OL|+zy+O5SBKNN3a5gV(YGrB+uqe9@ z6||#Eb3s-ZCsX~>#Ogi0!5LVcQo~CSqE>f_LtxfDk6O61cgtLylFvsFh1Jw*4XEhf zYPF}W(5BC77iiOq-tki}tqvWCnX~7}c;W;8{wNhhCBwvy;%M?VFZdOkp4pO<({v@4 zUMN3HYRv9&I;!R=Sw^^izW@w)l>q!^25h*)E8oVAD>Q)=;YR(y-$SdSeaLqAUN6gF z(+EXu_8U?_7Vn^_%@j&LGQZ+Y_WrLFwVg_4*J-v;vZq5K1jl3efHJ9hLEad2 zE)ab{!3K&M4Z;R0Ee>~}IWX8_xZlyFD|}5;w)SW;JE$_Pj^0rXngI~rUw+!mv3L<4-KrDj?_A#FF zj1N-5aUqJpUTP~Ig&v!pL&7hp5cNii+{39eMrD;BP?{%=T>$=qfFuIt1g~zwmB!Qw ztE{wVfv}uXsb^CH6B&Srzd4lR`$9d{0g|~CC!0$J1<$3zMm5z^)dvR5*iiUU)aLW~ zc}UgG-%tSM)C-8tZA4CSf(2h~{7~Ius*AGd@a!ex2cBjDs{Xn2U&c|3soV?ro8MbZ z$)7H!kU2&X`_AF+T3tEn=J0}!_i^iTK{;jNY)AqJs+_VP;}dqhpH5^=lOW`9I-w^p zn&^+LAWO6Yu?SjF{q{&UuV}@+u31UFcZN?`fID$ac2GF;ykLSfPxP~HBhcy8I2&J6 zSp2#X=R0M#R`W!EZ7Y#l4K+o@F`zNqZ>%iAjNPox^>0^8*?Lm~5#Kn~zr45onCy)TIH>h38R?B{kc4 zy5bvGfgN{c!jZIa97G_-QQhBMz2`4tcPl?E_oFXyZ=!=LdMzH>^qGBRnW=t9JQm^F zBjsc7h9X+zKSLv_XhnOL%baTFPiGt3*ww3_Aa1ebcy@eS-I*-joN6n{6l0foc7qdb=)`C?r>%0%R1$kgPmdDnfm{e`is8C4*@%aDUY0-?w zG${%$%_9LIqyD={zAyk5)6OTDEm(|8jPnT^=ON^p6ExZ*YnS6kLY!zLivpKK&L@bp zD90tS^9d3&ug`+T$csZ{MM(%O_QUimTU&%{{hd#cW-C2ifj>suZL$#ne z3u{oMzAX(!gSeVSC`GdL1`_rAOgEmeH9CTdz^qXSZPiuNs~%1ACjMpDVKiJMyz8et z!~vBWt~s>Fm8kPhw{I{s*&3H=L^do7-@4f(qM{;{13kJvd+7QU>bnUl6;5$`C6S`H zs|`(FAC@8ZtVK9f^g{B_6%yKqh(>bWu!Y(^euqb+aRoV;$er}Vx-aIG4*8*IWBfAN zp2DQw-<2I^P6U&YO86-JmD|flX48SgG<00<8%Olps|WVd#g~HA=Q# z8Mhqs+`Aa6$A7T~nIoQGZ+tk9(#MJ{fkfIG#w7=sJnud2UbT@kKkzF{FLT8?Z<6A0 zWJPP&q^)|CRxz+O{cR$CL1$TOahGSNM9TQ59_b!c6`jVj6D4C}8iVq7Sd8fi;S!?{|cZLc3|FzGT3+Bw4 z!)W>?H&^`;wG<^2G;HlYWxk~z>59b=;VlL~+4oP!$Zzkej`p={kYG{U`SR!eD&~Kh zu(_i^=WVAbJN5&Py;8E)QjgQdQa(#Yf*#odBL(|1ejANCJ$KiDe2?L(a1B)CmEl}T z09t^&rIObJ2_=jwZP`aD8A=;iQ|c@`ZW*pyxaFPaDQq*J-M;B+;XalJJJhAm|ps@V$XerU;qhXQ1di2 zfqbFErA8!7g{Fbly2dedkfK$st;hsgbEx4wfe#6%y-I6@ww(8be^XZ9>CU4?2Lk(( zuQd2wom)Ne&$_F(3m}wj#1Sg45yba6nA$787AttL35w8`F_S<48E~S{Ah=(OJoxmr z$Z-zTioBNEi{yQ;vg`qIo2+ye9&qQ;>R|c~;m&{=05F4nc*T59bzs* zFY9{0IENgCkYn``rcFS#wLQcC`_^;%Nw=@TBoB*g4FR0WeUw9ArDZ$Dl;|^2X5&?~ zQ6ut`9V^yhRi#FSS;Sx@l^vjSr|Xpa=sHI0JKZ7UN*29M?bhlX%ip8vy|hBPmyU8& z{Z26#X|laOdce?0g7^c_J5<(SV0x{Ug_2cZ!jr)RL6!gL&L3w{qPP0Keh?4WyWH3Q zmEUw)f6Mb>G$_hDLdX=5e*UUm5e+d)-%~nRnonaGr19iMBE90nL7oXc?NnFDQ6VOF zr9Spuq{dWNG2oyPj#jU7i4b?}>EA3GxRVNR4`N2@g|%8XO%t!0$9 zuIVi*&XKx8so@XBom8C*4pS@%4io+!x%!?*kEgbCOECEVmpZP*W&Tj-UQbwew?2^O zoFklnb1#APN0)}fU>b>>qdl=yE7Z*Pwe!vFuAu%3I0nhb9g<@py`T(Uc0q}$#n6mN zs_2S?e?n~Mep96QCV*#c?dTrdb#v$HZ58ZYAYa5{v-4|@{&DxQrocN4%;^>6zV455 zyU;DkX?7f5x7XHl%%@*87>#2SLvW46<(I8Kg{95+Rn32 zVNe$DeF0H@y36PX3XlGuZXaSPDhJ?fx^ke?C$2C;rAp{J>G+JNKfm2(VD zZ6oZTHaVNb)xk{Bfj)aEZe`y+m>KfdobJ0vz(J^xgD_FiO7V`h;J;S0uEsSp2m7dX z4H8sIVAs8mZydYs6MWOK>$Xau9Ki$07PgYEFbr@k?jm(I{}SVnSX}AZ_oy2uEMqZz zP_oWKR5cTbodp=p9a*@BS`oB<6wf?OZ)NtV*J5X(lton&JuzgJoUKjJp6v);4KHL` zayVRO&cgcU(yq;X^u9H?)9gpxF|sIE*1HOGmP?^40s}AIlfvm!_%%Pta?!EAHsVTS zF+T-xoR+Tv^xV_3%L zGe@mraP%3Cp%0e1S?7`j(2dd7-R=(5I=D+QU`-x}x{E1fV{oXaYd5V?QNh7jjSl#^ zPNSM7)j3Md2SdpK^VwSiob75Wd2V(drSQajSqHL354%y*M5;R^0zMY!`>P|ltY*b} z=D3v~TF=&984_eX<-Jh6)n>TkEwQia^2b6v-zQ17JD$T!7%~F>G@+1r>Rog z0u6&sVZ`sCXUT?1Aq$1)nReolm?*IT9l*WfE0*gyo1r* z&;_bK|GtHApb&Ps@a`iepnR(T{wZU2A$Z^nFE+cfl+SUm&%KIZSf@fF)Fq z$@HWd)vhV<_z+bwXo4U(ElboZE=!aM^tdBT6Dy}M%q?bq&m{I^1^GTFwbwD zizwKK_%eY1hH>&GDbyFDWUtL zcJZT=a_X8g`HWlyX0o+wiE*GFm8kk8=0w*|*TwV$K~;e4>~A}BSL(2WQy|UB;$QmO zM*xZ~avnz@YXpdTohT?0ln~U7Bjb-#IqCH-Ga^lxKsRk#MV01MJKL(wk|XBoxhhm% zD|SfC&Xb7tPeYVdh6C#AExH)|i=78i521`=<^g;x>_Qfui^1wiWg$u&p}yB>Pop-I zetT*)hhtAPyUTw17cQoKEfjz#7vdecV}LZYz{?{BoPv7ZJZv^Hx~lEYY@oa?UA+vM ztr?R=QQmL#yuo==v|t6V<;pqv&fTA`&rkJO*uhS8b!l zimaFKb^Br{x%c8qL|V_@jV-TlT3`?&9fLNGfB~F$nFfRx2)$R5;`1zx1}@^NU)Hia z-M$?G><{rm!KzeQnn)&m%*yYk5t7)uYywtNrt1XE342EwdNplcom+c@PZzI^)}~8O z#=l#i&Mg~hYfV=N^!EEmHk7R!c0P{jh({JyIw}C3sGcXg`c~OBv~s&DLW=&`TOQ1c z_8nqRS7R;zcg(jn{Y~Q;Gdph(OMQ{p6?e*3HKNmLmoCafot`Y6U^gc7(>O#!p^7hE zFIIs`SZ^b!`6#NlQI;W*tow8{?d6DHgrY2f(8D7rj_4f!*#SajgaU1kVn&%Vh~Q#x zE=9pmBOuQE4TPIp(~IWUW(YW$IGjQanCPdshrq`+lpfLnS51`794{wO!#PZedbyDd7Qj_7zg0gQ|GQ89!@ICp5@S4J6pI^!u{@PW{C zP-rCKGayj70&vQ${l|-e^#q{TC5Yo`OyQ``MnY+)(^GM~yC^vqC))2WZx30F=5qOY z2bVojpdDgD-Kt}f%q6Q*F@`au8k#PJkm*?a#GC~JCwM_2uJCl;{zXzY5_|Lj)ABZn z{m^KhdAVi6Vl1nqwK99}MJRMfB;1g`62p;>;u}<~4gRLYo)DPc%bC!#693nuXy}V%Q?GVQSIlAI=PB zi!=FFPorlDNkd!uUnfA+nTct4)?$>4Au+#xLW7;@OM*<>A;Q#`z#=uDa1uY=E3Czg5alWGcFzkZ z7c@**ILr@cB$}wYpF+d?{1@x5u{PU3isb3KB%z87mI;2QxS2mwy^^}Afo$!quLL1~ zJ)`8QNkBcLB9}dt8$dEP4++)DMr)X!-B70viS?e)44~CCy~P=3+SFS)f462PeFYz# z^~*-U8(~liT=|~2H89f(s#zQ&oD1uh@xgAJO~d6!1T?*6Gb_ZhhCVX|n}f)Fy7$HT zbZlv2QEzGw@(e&eU+zEPCpO}uX2ybLm@)Z%C=&l@f%yBVn&>qAzp12uU6jRWWER1AlXz|K}i|wP&~1aCw@D zYe4g{hiagoB&wdHN_rbjF^Q^qZ8RJdvTd|f^>wB&;%*x)j@1V(&_t9tV&nDh7eWaB zH5L*xd_@6d$A9S29bvW#+V1JO+3nldpc;}88#LpQ%D+vJluWk?1ZG#l;3cC)`o2q2 zdz};Z&}6vi^B24zWC>o?Z?6v*8I;uGfw9_Wi>xBrEW+uh&?-`}XXpr(Rivbb$F5G; zUV)pMub-e5;;|xT3bIZ``h?1gR$9KNioQ>_O_KonOnNf$mbCCQm`Nh^J`ka!(L|B| zC{g@A;aHL7h$r*vSdsk836SK>8!Hm2=ZzJqKSf*5n}WI9ui>ri(8pppBsl8W0}-Id zFSbSL6B->Ob%6d$sr#ZMuce5T;s;EW+T5;9;rq1=7RlNNi!?{P8;pWkbVP?<c$^tq`<_i;%;0%0pB6rien^zkASbe{K zeI^U^{R9gVBFpIpq7Y0W!igk}t;?X@L?&>P==8XCBuU7uBiJ9+$&*3ZFBu}nC4(sb zPYPRlY|X+}$XD1%PKM|uj4-6vU;F!^)~k_*luHi?N~|O$~af5 zr^X zNrRHD{m+m08@{m^wIk4{VJs9Fnwq`TCQBD(Y+HOEbwE)bj2w+`wHVtzw&;&KeIHw7 z)gN29jE^mjMhw<*9;QSj=U&Cp0HD9Hg+JfqKMvDh)1G%E3YXG?C?>{wnK0anv16h- zM89wvx9w+6XT9|^mu6yX|G7Tg>BPFj5O4Mi8<&%ZX?o93oE>2xCiBQ#6uIa2a4_50 zhg}o=Vh?9!YbTK+dB|V?<5XMAWsxR00ZH#aJHn8dnoEZvtrJmN`9hc$ispn_3sND~ zbLB6{bqA!*DSVPh-WvLLpE(79g&&lAL>uJ4<5wfVLCN8U|G+D3IF9z4_>(% zs2JaGt3mtmv$ubTiL|Ei_oZM`HqS29i+yknXKK4<7od$pzs+9Pa~qK0-H14Oa$R*W z&dU7<#Wv%tP!p{240#Lzb-iU3X(03bs83w+>~K)VEl=KW*JQB&b=AQ+))?!H8-qmU zj{Y9aZ;_0CLyLEGn~<|Inpygn`FS55m|Ai*yTlU~ERb2YkN6(dM9Q!Pxs7qKcLx_4 z^HbTiV<*vu4#KCXBIVRTW0zEcbxSM%TAY=y>}Tam(Whtu%F<<|vbFliaT;f(RnQ-! z*wta@T;-f=hy?|f#Gdsx>Q#AoF?6(31^cH%wel6nE4p7iT0~b^PrHV^tYqve3g)?EC zvxjzkQ>kXM?%F!#rHM_dz|pdr$ky~PgxockRht)f zIicE9a1xV+<Hh+gz~VU!H$EJt#$SB&S6KA8v7|esSnM%ez;Tr(x(Uz+!lLE` zQeW=Yctm3%X~AYrS?%pwqxxzCWTFKS_+!xsB zDK_l)HK?dlBDEl}5Jmcv{WRtJ{aRCyD=)5yjU4~uIMC)&bC%_d=3IHqru0n%eC2AC z%dzquu^=1a4KhuffS9m9(NmXOe^5q$FE%R&jPW~pyax60d}t^Tj??iuudk0sM-euD zvd%PQ;b$4HJwWAH-L#gi_?9CzNjOmc{5;-%*UWzR_|u_wx?Iy>Z42z8ZzEzT zUyl%rRQ>|mDzdBJJ2hWZ^0eo(9QUvfvi&Z#7TGXCZxWCGus^#lCp|INotBnZV@5^t zwQn*YyS(Tn17Ok&Hz&#pr68{~C(0)U0EKUr|GusN_w9#&-}e0b*75I~=ij%T|NllK z*VLT&@2kA)|3A{wf`7O0|96W`hq}m69f~ue9#JW~fYF)b+rD`tnr|MFsP>LXjI@9$ zk&}I2$CwgLGL(NdCFU%?VL`Rm#6_sP=LoVj>LJCX8QPNoG^PD}_y3F?{W56BP!pc6 z$}txHZYvS}NT8>$rY?Q0l6H^QUgkaD1{X%zwMEQILD;PNd-hBuS7-hl$<;kLV{%zF z&fkubk=tddU)Gxsv2R8S8BIlD3uR(m`SwQ8Zuq_txD76VbBxT@5jW0Jo8>BM&}ox~ z)S`3+T`N!|EzV=#*Rh5hY^|wpF$QDLPj~mBq4$j#Z&X|+F&~D-)&6HGxL9h>E_q?_ zJ=?}*?+aftRF{cU!e{M2vmF$~?jjvj+}=?gR1Hq5(NtOqLX#kDYfZ3W$>c0PNK}3r`LJK4V&j;_0(JNTyIcj z)W2cFk@M~995OnhuUBX{C{=o(M=w#_G$l|)hS8S2fW<*#5G2aVj?ylykl|$f}V_ip0JgPEq+h=r=Piq z26j})krY5zqYz<5%D_VW7l&u2e^Aq>#gT7)daKrCveD(AgKScxq}0k8j&%lYdK2!a zbjfLC&<#V$Y*nen$W?UWz5NC)@7BBmCZ$PjwfYhQjA>snO+kyYQ= z7bAXdci?fBoQ&L2$|L$~422n;^vP3qxYLLkVa3LvN{tD)VYPAR91P#m`6Ie!P0Hds zj`i2_?F*-AsyyE^+I3OC{PHTN9RF`lIqBb=GR{}cm`ERj{-u~xUf!iQ+!;17QTtQ% z)>+z*kNA%@IFE=_P|Rjuvbq=vK5mh0q2^-d@kj&f=Kj%j(PsWPlqrpGCYPK~1DBw% zZTm;NVECYB3xCRRtobfFmOpLKllydwo|UDw<6j56?;`CMBQlJd4hUrJ z^6xc@+(BCrh|&LO8nyb{9OTrvH)$XP&HL_XK;8#$61-6q)f!M;#&!s{X>1o^`wX__ z*k-V8!uBz2`(ayv?;1?weG1GcP$D#*W!F)?K`;!Mp;&c8;iDTc83J+Qj$FN@!|*!@ zISDR({%UD}pYd#5F8e#sQ~ix+D`#BH` z_yjVfk0sHI_lGH$eoZtPX%j8NpJ>gkSZnDlZt2HW$_-~~aPY_m+LsmYy0VgX7TkwAd1{aGR zt1!+NQg%n6g@4fNf5n*ayWiIRZmPu5Pk21xzQ8G%iCd~YPmf{^pyUFcKzn`*49Ltc z7?G>?)oCCZrdOdg%dq&@p_oCWy3%*8N%_A0y&%KIfi>vRfwd&h&sext?0T%dKW-}M zZ;vZDM7f@%^NKy*pI(|SF-_Yw=KZ&Vm{B2IVTgiB&6El*(Kb|Ny^xy?&a2{W=L8CM z<)bP5_2#+1mbFgQ>4_qHz$L!f1lIV^3L? zZAkKzHnwgDGyf9S?eB#}cec0N)2?_f-k9!3Jt-NGr?GwhCFIZO@^j_ckPy?-W_B&W zI?5Pn-JRuP^l+?yQyxZnqhR^$!4!&@R z5F179qz&`(3P$F^F%nf&aE#b9G;Hmgt4LaPB?pZcpiZqR8h#eNhT~S5&~`_(&^unnJuoNNh2q5E4S`Jc43+MemK>%n{!?GZu3j_y9emnkV!8o zTSa;e&&|_kx|R*gZE4Li-pk~dr7n4`HT@^M?AW8pi?UoR%FHhI9D$SDyYSakh_Xu3 z^;!IpOjki_R(wmA@pdL(kjk!68-&9^K6xTVZAny(wdu6{m3~Bf$a07fHP3S|B8WZ_hBGcfUEoL2z{007>;>wzt}XcQb#5-8E0A_H^&iQi`4_`v6h5o0no>UdkY5y^DUVr-^pE-{(Hgp+e>!xebbGvX8&P@gu z@fmtox}671>}SMbnPhFYEPVts!rSt!J(J|$@=R>%ZqHPmEYriW_A)ePF&<&pjp>Q> zW?c+HhdLX7^b}~F8;dDDTQ^{MpvGBs)n7GV&(V)SnxTwp`5uRoQUqj4y2fv0y-Lq9gFf;9r1lan&!Jd9iWqsK%jl_g{Hud&N z(~RSBy!`qziR1@#>Kc!CI@4ly+2ZPsRSwQ{+4VKAN852`vLRfQo2Eu(06tACZEuqT znI(#|b7jx>pY3#wm7>AV6JLFnjvlsB^X}1Isr?bwup@N`IV0&p?@YatIJKud7rUdVtap*^D|(H~S~GxZJC&X$J_=#R0nPQ|Fys1TRK3_W z$gTJ>ETHLHnB;gp=PD4_+h5@#$|zTX6uq8jXTSEj=iY(tGSi~r;0Um_3MWx=QAwc~ zal`0wZd;gBhR&xWTq8CADb$YCd?uD3K^c#zNfD{18I#-5V6Qq-CIu2(x-=OO*R}R5`dVF@EgiCEKQRD?k2Ba9X_xPz~ zd;D@x(jkNrYcL&mQLM@P%X9l+_n=VB{M61LRH`o-uNe}s1>K#^{1Q|JPwqqg@GF9R zZSJrxRz~kpH?y*I4*#%Y$R{U{*{y&divfZm2erjls4<+>L}MPwW!0~m2`%O*t9rO5 z_Hx_6B-uZ?qTGC`t;Bk{-z&`PYJ2)9O}Tx$|3eryFAFRE?04;Ea^A*YSd!vQc+HN3 z;Qjsf=!VRaN7!+vWfeXb7ozC9Vz)QkF5#82b|yxCZYcz5Lj4RS72*}p%(vn`ezmzO zG@gYE=yz7=!SOnNUEI*a6z}I(19Scui#si=fxgY7YXF`DbtS`$USHSxMCV3t#C3iL zt8FFuXb@ka$MtjQX*lS4?jE51q$MNcOmL^SX6jgcdGNpC;^dUkqpK!G)jab_icl{- zC3*DY-rDz4pVn{zzsJ>vYjJO0>gBSFGz`u`ug{D7zmdK&b11rmF~Z|fu~M_{L+{zq zL9+30<;g7XQaQ+W28=@$}-fb|Lk19@CI7(2x5+mc9h8iQ|3$ zoy~3%!jVn51tAIHk}Kg55YPmI21NzD5Y!@A?*lYZTCZS0NnJFb48z2)S>S{I0Y29?;G>a&kCcTdF3bduKBF=Ba~1fk#M~nMgcgHWJquy# zI+aV-@DVs!_8s?HI6F!N6RY~$oD_QTF`^Ui9g2(!FU$3XkG1A{0p@YYj6JyMpQ<|@ zLAZf<=*d)5vKM^es<+OPX>HoKNEA|uWEUCYW4&;1dn)?=d09@IA8HJ~xcgl&@X@?a zY0<6@@*OgCOnZ+rQwfWS51$e^1@-^)~rl)=dtqEX4ZC#WzcKn{g?D#G%* zktZM{HdSkWFZ2ra$*()#A;8y!cH}VZwB#zjh*EX7(YWe7moS&T{bIkeU8D-@aKIAc zy%-HTPloYT$RD3xi4KlJ3f?nC-Fn^vr7)A&Is0yua!b5rys`9mN6pnh zOG7maE5o7JIyA!xpQM7AWmSKB6(;DcN0g?D#^cuPkJb>vcc-I`k%>Ux;Bsyowi771F~9YUCwwD?$ehK+78C9B{INrrWy%$9n9 z$0mm(`E(-g_=r6eISI^b788g_(yR~@A3r5% zOxQ7@rVNffKwfmh2VjmzHlC&V#8#ebz`9KZs8J|1NPhN`-xk*rBm%V^*+{tK zzkll>t=~HYoRIkJS~0dP%JmAx7zE<`q)cbAqwHPLiFZ<0hnD1;bZo-YgRO&Qq{+hj zRf|FW83<76$(dE~IPtI4%49HJL$Qe@^;ykyS-LQZDiiOm$2BEsy#ttOccrtR&rBkw`IM7CzwOI}9k34Cz1B*W62(fmYWR%5 zcSV1#wF>LooXXy;{e1lW`bSP>_tt){y{fgSZqTbNuj-#Tsb7`div#TmtJAXM^_x*# zM2j_O%ew#lyqkpUFicF)uC79%?QnchRS;x3)BQQ`Nt2-Ff#l559eyW^Q~BN6mB_XU z`m(2`GW+wAUg-%?#)PHGANRAfELzqJbd8mTSb-==*;DSk)}-U zVVRpq&MT;Ug1aug8-Xzt?g1N^;*zYpy{*X5j1UuyTP^eJgVQFE`dx7%~%<({QC zWs8JMd`cGG#{lRY-rYmIFG_|DzXI(&t0Yxl3Sp5*ZyCwn#^ue`egt;<6xxwDY|-6s zcPbkDpO;{ly=BQ%PPV2Q*ka!ab1TzlhB|lQ=8cq5 z%Yho_qOv&sF)%#3L7U(mD;F~P3V4(vGX%srXZseyS}6o^v%z4C=_B42*%;e_sR^t`qYh$ zoaMO^157eQ{}NZu*uOVN%MK>Zp9jyuNO1qQQM9R~IMb?O2UpY$XV`k1sKblAK})dS zS}N3se*EIzV9PmFJvgF4#l%nyflK$ww2WXgLx-`qJc`k6L1-B!?C7e&o8pTeM_tI; zBn!wimM>eN>_`_7DKSZ{( zxcihY4sCs7@GGx3D@_SD6{Z6IUdCSmOcB6u9zgbe0cR;|vAo=4{xK!lJLV2wAh1~lhO<+zPAEw@85aCr~^L;E)3?3@3YDDm8) zMcs(;Ibx#l-~WMq=N9$v_#fDJZc+G4qq|EJf_*1mLeL`VP(Rm}p?=cLvp($bqlB$v zE}R%#7B-wd^Jj(izgho>ZSzcd9Rm49XA1Ebyg2Qepg}&Hq;T4=N z8C$<+Cv3>*dS_|;^>a!LZVl6Oi5O`;D*I?Fap_Z;N(Fs?$y_f(>kltIv0Gd*@4~5) zG3Y>9U@QJGgAIAhm#9{k!d_tYZ~1J);Dyk%n|1q_PcHMf;41M_{XGWXkI(o$9NPF0 zn_hI9r>&$#K_a>FXedu=IX_d`p1gkK=EQpO^7OaJ2+uWXe3P9?{>V=p zJ=wz3wZw$SB@EKKin|VmZ6Cnbi&4qC?hd zJ^#r17~e6|svJ=wUe+a4B=FhmFXE^!fxLxLs{nrVOX!b zoG-T6;KWA_X&RC7a&WJD49Y%<80Z)!Yy53oOYcKMYIgE?z2!Q$zGwJj6<6cCy-C() zUKOEM{?v8GE!sBfhy6o4sJGs8d)S6vMkUxc(eqe+?HeiLQ#9x=@0{H0^~stUd1X&= zLb`clniqyb^&bj)?KkEW(*SIELu6uq$#OXe-X_S~sb>WA!1U`62~QLg2XF*FtUZAO zMYfce2~&Y9|FNrCaXVQF z1%~ma6rV&LH4FpcQ-=8>bngq}(@iOw#HqcJJt1)_7$R&RmdJ3rT&(D}e;wizQ4=ER z`IJPboK468ZSarSKAnnVgz}fK-Mp+vD&DnSyc9TeYPc=dOMiS42{5F0Ozq$u6QK`H z+j#RE@42C7E+RR4uHJ#|X#!=3+yoxGTYF}Sw>HkXT`2uVpLo@Xog$^70&VNt4F((P6F&5+^>oV}7p1EoPnrvgP6YuhJ`A!hu%n77dIY8|+_Q@h(>(=|q%qK@U;Cqj2 z-Gme4#CGF-G#(Bz{kz(hQsswDZjdb?tomt-wvK!K_BB!D#?K_$-~SZC?TS^{LYm%F zQLUv{YqYWV)Yw%j?zgR9`Z}3H;iX)~&HG^|(JmThX*~UBEzXg6#QcKjEiF6l!i(Y# zzQNy=5NLd5X$ZZY*kw?dO34JHuP=~=d{vY2ZXHiYkUf!|2JzFJ3*HA=uGY9_72VcP zxtVf3`uI%JZ%hFS0$dHz*-XD8H`@gN5H9yT4b$$x3>V%3XV$cfq2j%wPpj(&-pzhf zRzH&rxU15dKMtax$`z5ivva8Wl=7aqJh`N^bZU>RU{xoS@AO3d?RdVEn})lT%J&z` z97oK}OHCObqKgC#*CU7D`$nO?k*Vv<&-f!&yr#kAovOAUn)#!@iX%7N&q&%>VCGS> zO6%f|s&;Lc;KSZ)|q@V%S*G?z4i(!~8Gcev{}+d9^Z zbMT<9DWs>Wzf#%Klm+bgibz1~s{^U3?D-7Sl_?w_WXw@MDxU?`Vus~JJ?B;bmaSxV zxj;=zrTbRQtnX$I&52W2G6y}N4)<3wdohM6T2dm(Bl+_l^o6Ru81F>!y@a1ZMJ zJJm;n$1ihn6nXLM(&&FK(8WCd-DSM>R4S*Qz#m92IgS0Q#76|rTm{dU#(gb+R~rW- zQ64#^$mjHpw6@vucOCDbY8_pW2IcvZ85%2D>Dc9I%HNtqd zy{P)5Hg1m0K|}@p>Xu6+&J(DzMjfhp+~#VB#%bd^dWb?mop??-s<*`1571dq5&SVl zt?K7a#qK_fFIlI>p2KM;5htlusFc9Yhsg-S@W+&Xu2kpT*KL!6fw1)^eh&Y{CcZP2w3*b|om#dda ze{;ejT(In&U2hE_f;qPpn_-I}g+_aHHd>8Ru6g6L_|*TMy}iIy#qHd9f!10Y7md9@ z|B4S)hHW^XWLi3)ls-ed%FfUwy3o$Vj|TNw+B57dJ-!t~him)Uzkxq~b#)s5O49N` z52cDMytuaHbHdEL@4M`p!RoT7UN zL-@6&1`Bgpt`uZAXS=rnU5v?m?0d{jb(WM0rB33}4||HBt*PfbJ8DX-VnJVr$@lRZ zA-8CK1trVHZtr7paZT%QnH6&L0?*(;69+thW>Dl=Xh3aMYN>#~1O=QH+RdC>aBcs)+> z4%wqqU-E8e*cQ+<_XJhZbY}#ai_tPflK0Yy!F40@ z)+q4zTl@_WL*^zdZu)P(ImHr@08WbpuTK_(R2Kz`qoI94nvNxpVafjZdmMiUh(TT# zItIl9XRJcTEfxMv#m$O&utBmU!d0n*cBiTY1={SvaEemx*-4H#y%asMGBlPmzsp3g z2E%akyIzK&mQ8EMFswJK)7%Mv3H#9-$imzRPk_b#dI&Jqwl8#>7$Q)e{e=iX_S-LG zKx=&7zP$1?N%>G9zo(4f*~r+!6V8&HDpU>+tpJ^4lWdO%uE8`t(9qOPnu;1=P&Ky7W(BW_`p}+ zn?YW@rk1Ux65;|5E=J$M(=%G%7wE0-IS(fN$}7C(DuSsP>cpD^^y%QL$`b^v&cB5v zbgt+iJ`W~=Ha{Oj{q^(|ne#G~NOm(=-%1k5SAFuXC^(b_!Z2H8UG1o=<*ccL)e zPH=Pl5#Wb7#lhsAh%?(F=Fh?h^J+c0epfmV-PshbqQ7woABhBd^qYSb+>S^j6^=w? zG7=QEJp+J3a$z;lk&ZPPd8oJ!hKhVZSvvE+`Otod?yi4Bqf`JsY2vCtX9O)zVv1aB(; z2BBLw<4*4Vah#MFF@d2rD&2kU-AOk{57!$+B1qScH=G9U?D0E9I<*LbQY6k)j~+4T z#TT#OzQy)Uj)Z7`iAVvo8?T2v63S*^O{2%Pz4%cmJ65V$6Ds?_4uj!NuNk|Km6;QQ zmn_H5zsRkTIW&0M0%lli{8T7qXeb~U;h*N($ZU`Uv)%+gjOx8o_pP()&7DaKMln;V zX5^jtXh>7vyBrbS`5lSbcYTuo*Qg$5bPF(+=g4J{JI?)bdvb++iU3a8>q)sVc=y;>qmP< z-4`LSsLxB<$uLK6Wlr6h1bQo*ZktSM>qea_PNt>`(k=B2xVE-F)Np&gAcpiZUp3yz zjdv#Hrbr{cB{0EJVY&MxJ0KEctWD-Re>BBLaQkBW=jOHPs|5=XW>1SxKl}xLP2wsa9RRn^>A^?ThLjYStE3&W% z7kQ5VB?X5i8Y}bt?I5DTUQ+w4mememI>M};T1x{u7t}xZ$NyT=Kwjxk3-7A7`D1gp zrMdZIS4-FJbX$LoEvsMi8=Y;U#|KfvcB>D} z#_}i~_oN@6^nG7;$6Vi!J3N|v0h06|weaIevWci}XK9ZyD(6!2Gp%xQ5nWP~(||z) zjKBr)<)f#TQ!OWus=0ciUc9J599mKJE+We3qaz7W*Eth%^aWdSltLGau8`>B9eCYX zLY%DOjvN-&-S?ljG8we7J_!H_A`7n zobl0FT_Dg?{+(tLu=@`Jth0h$uLD40xb@@8Ppba|5MmE#G zW&#T3)M<~b{Fy|{WD8JAqd;pLON_I{g}ftS?0L;tm9^Y<3S{kTLl#TVI{Qh)=>Ql( z%L?&rL7``%etlw(RO_~{$5i*kx#%{)6~QtIWTSve#qY0nDzry}w#taZ?Ain$$|);{7kiqr328i*+H$Gp%1CcPo)sT>U~t=_rYH10fGR{Truy@h6}VQ-;Mp z+lxxz@k+ha+FC`1tW4KzsYi2nx5Gl&4c_+*WUF4&?t^bmf~n57OvvLl9wd-q`=jG4 z@jqS;0U4J0`||m|nl0 zkN%74ryJ56i@Ak2KAOGc46}8EeCG9$e98zJI$OceG5qL`se;;fk~cM;v2zH#r&Lx{ z5C)~?&KSO?wITi3@&IKflh4;!{;IT{Mn7iDOIv?`y)~a#jREz-%Jie$$UnM-Bokc8 za8Ql=OrPJEt(bV1#}I1sUUXdAu6YmA(cN@3ckuctlt4NKA-}Yo0%{YZ)!B;k&VyQK zJsLq)T9YaD*{Oo5g5}KkbW1m9o_$8R#?Ueeo%7z*t~e!(PPcUIna(>4t0r2~>$&X* zuxW@~-8uh4mbos^Qn4P=xL(&kRtzA2|K88ac&`K}f6YqZ$zPSMgxUA6;mqLBItxT& zb!$Mh3Q&h~L_H@x5J_#-q7fKdcZ#~shtFfEn1i!Qvt0Q?N;(*EEn|xgS+V~ckjPBD zCZs}(rwS?WRv{HUutZ3at0WFj%aP)t)9-L0mD*gnMjuO=gm^TY)?fEpAvq zDa4lxo+xEgwq#TM#8u!!hc`M`WEPHwWXD9Ev-tIBqS-awh+-ggt zvutta&gV~s-qtIV!W?+jG~Omtl_6D=&Yjv<1uACjmHQ5ITj?Q6QnAY+%ZkHLEq^$a zb>O@NB~Z_dtbgKP&-rJQSNp$v#oTUw+uV&LN}*J<&w!)EiSv#9 zyd^)^PKlMA!@u3RhOql< zK26q!O<>toD%nq6hUe;wd&8PDXTGMEOMT_=Tc9+x8`+CdmU7ke!)js|)fo#>G?|9mjB%a9P<~qj{RPztp<1WcL)ksu)--`(Fjlvedt)?MgBOvnLGU(9|qf&E6Z*EmClffZxNee{asn5c96w%YH2DP_!cix18%|^@EckKP8}-? zad3+8(KSm|wqx)jpz4di_+WMCdFUEvlrtD(VHDLOW9(*JLVxIi6S?27eFJ8%M&_!! z4tT#5gQ64+1AF6}qJ))UgjHh_D7qQ#7 z2iEfxTkW3Udeajm_dP-8yxkKDZ7J!B1lY>sU-%!CG^G55Rx&DFE_L4{*2Z}&5)!{q z%P;U>QKBW-bi6g%ukM>FILAX(hoFHs$JI#|Oc^zWd_ zv~5%V#|z;6kKpVo_y8X)+@ampo0G8(x<5KVDEumim|9G`hCWnOFk_s6lemP^jR^PtV8akf{N8t_Haj zYCxT9K3M}zmAQC8FD(C9d>}p1Q>)Zlo|Fa`>wmyS>RgSPH_>5kVgvQr4G;EyA-d?y zuV+7J=OQx@yUkl#^$g#nkhrFO7weg@yZwx;`!%9yUAQiZlfH96^zBjUkpYtZ0bc4g z$@H4e4nP*fUK!TG$W<8Vg!DsSJj32khnj2MC^kSAD=Rx)IJ!LX@`8sLbkZg63V679 zBbBPRWzmEA^2+jU#l1~5^rjhO zq)EKIaMgMUY@0bbSakbGQSmPY_)eMp&fzejyZyzPLPpki=Nevg+=n+8f)p3$`SJ?V zt?uBL|8-0?o+ifqIUn=Rj|ft9eQ+n_jGgaAdL(%f=<@A%Wl>kK4BWpAmNBh}sS%zX z#PI~^SkgDs@*|h8@(7J3pQ%^oq2*qoFFQ&12ypG}P-d4uFoc=L56K3j z!gP3|uiWVUjMl#3o-Y`}^ORK)(r%ZY^!YLRKV#hjNYBUB8Ja8-sOYkj<&(jHF|bB$ z`<#MaaF}l}$W2LL^qmJ;u6o-X(=3oKo&^cNiv1_UFm2*qJKAOYOXE?AEOm%LIO6 zf9@v6+y43{o0AETSzW9#Ewx4IN7r*1k$e)mswvA_wH| zKPUjmZ>4BCiFzxqqXhEbbcrWk>$fl7ueb6J0(#+Rp_9cqFQHmrWbOo50xt!Y6PY$Q zeMbE~eg=7!VfzxbuA0$e8>@cYZAn7VsLz@u`p`ESjZ12&m3|CbgNO9`+k8>O)7T~eFa&JL=s=qyb}>}1Vnk$qA@8(mz5%k-s^{DE=}llVI|7i5dPzZ|vM z>WSBN06+ahhzf(@Wel=`UhkRkq?a`JRxc=r1WVIN6-|nRO_mSXbFaS_4s(!r-4Igs zj{Pz$59%EOZU`0RryGJ0hdq8m#f?rsA>}2Mb^8Yi9sPuXljmdR(I0gnJH7jWlk%DN zfK&7zoel?_WUhWts^7jrAF%sGoJUP+g||5bP&S}+6|G~0hmV6qz+;+60UR=xE^tmb>J zsI-+9H!b9o+aUe!HX0X!xcU{W7q@~i_|BYGkOtlgk4SoX2fPM>nb!j0@e^A>v81@= zlb{PXFCa*IC|4NGgnG6hr$q~l+0I$#b!Gkf>F@n_w?eNF`|LWx#D+!WcH9T=+($-1 z9SI-$ImSF~oW%iEOUahMKSB6SklMf`dUU{sXb(KE_1w2}(SO6_06~S4*Wa>=F|*Hj zE9Um^Ezmd*5a@Cpk?q<6mWum4l_U%l1I*YyugjjBhs}9WlDL^~g4lzSgrU7O3`WBq zM6Z!_m5n(#gH|Lqdbv^zAEu9#PbCvKlM-zV_V*10e#EeN<9L)?i8$oGgU;e-TI1&T zM?JxE>QwW{n2j_!NK{B;)ng#EGHg~DWM|lR@pXO)v@BoVXbyBC&m1LNs}{SB6bZJK z;7cTFu|QgGmKikojERadyqw<$~)_XLPey(kGNN4Ws^~*bcitdp|LLa zS7EKtzq3~8E^nOUMf?=CLf7hYVZin|wLWFC+o9^u+fPcJOF^q2(QC{SG}OG2!yFF?6IrpLqbxytFgqO;kyC8yH9b)V+l-l2EqV)@Olcx38-h)WaEYTs(W7u`uAfJYB$!zMVTKFbCFN)#Cpi*Q?+`q!n62+45lZ5iGwiinjG0%%7 zuG4Tvh-(YAbKG-{FzO0hETK-`p52901?CSn0m@Z7KaHk4*aQVNJM3Qv;HH1;Pibr^ ztJtZ7*w`*n%;WoHtUrcdY$O4cBqM-|T#AXPebE6F3~k^x;V-Q`#K!yrSHjiY>b(J! z*8N}-^rN%8xJ$|pg}u~MV~D?0Rv7aRU4jY%_@uD6u%|;|rlnO}aU}<7mWYc<2qDtm zUypN`ff5Z;*`>+-K9@`gl}7*iN*F3FoUUZKH=AY?1KGw$1f$hKBx`=^AnJ`tk;wOj zNE9%xL?nuN!R_l0^21weiTvBAwM5oa>^92xE^Y;t)RL)o49jdw>nPtkcaw85JjZT?7`CZj8 zpXeojB%O_88+H(Na=?canE1CE)iX-H!qd6?Px!GER9oq7ydmQ9T>BUpRiQ$#YX>ht zeQ7U`+0KI*pjy0}8W6||eO={6c#HqVIR6;Sz?W1RBWVr+2IoB9kn3+7C&xU)Ctz2=5rTdO0LBTSe_Q-mvJj}LhMZ2dG)$Y%wfUN%BtHq=blq~=}Rr(u#+GYhViirFgirYl)euAkBYX_sP zZ3RTFd9nhl30VRD>3a7IdFsNDyy4ic%I;YDP@f zl+H=2?CDsra2f_DSv*5fVxlDDqe#cou-XV$$;^}y^0>Uqz&0Vu*)^ubw%{9@Gp$|) z?3>N@ekt!hSO^Kah2OIH_rvU~7ke>IZM$V+wl(1}kEVUBRuW505_Gk6O%k|CH~8S*zb8Ix1g;-w=da zs>7SU8E<7~zmEs~q`L$g(U$do81ko!m;K%7q>k(PD2IG==tCZMYTf(z`za1S2A zsIG>?YVO_20$i%UlMxa!?wuzu3I==fNaB-^d7eC(xUzIP<-@~R^b3`)Vt*b#OnOu-B zdOMOt{q5mVY$}?|>l$!B`-@n23IX()TEb7jiPnoH> zefW(JA;H`6TUL!L5Zl?=v=>h56->HXEGjMY^LJmJx2ch~V0-S6sn z8ug{NJ*t41MrNEZ&8lZp(+PxDL`r>_->x_8=tcm#!+jNM}6LrFf>BJ~hUaPg#l! zHgKRYYsROnkpGp!XFrPW`hy}t&pWFa$>Zv=4y=4(uFmRwu`^y;Se=fcg(54nqceV+ zoDKI;d+MY8BY!17k7t?!RS|PLtJ|_u0`^RTEfXZ20Z}Rxm~_>y8k~%%HS_pQUi54v z1!M+w4(2se;=xTew=1ZeZ4bS&=0CFIYL=~MbywaZ$@L7&Lp1!%d?19j^`IIinm^Y4E;pMgx-ec^4WLU&YjXyvkt?#*$tcPyz%*}Q8Ka7X&!K=h!Wid!IT=<{74^W7B|_DL_4`PKArQU%#1&^sg(s6)O@f1DL%YAE zc~OSkR@uB2LKG5qZHkIsP4DPvq6K*YB+$a)OCli z%?xOFEglMI=WDu=VD@}822w6x3QMQLVT!#U<)N`6t+K%*8>w2Bdm2xu&WgY8cssyy zQGK>*6dYVpV0n}HLA-qE1h{izGpn=wnU1dD%Y7u!jGAv+%M)#4n|L|K4m{uLm2PR) zC0-LR_m2jxug-EY8eHYkz{+xOmV}-3tw=ktVD8$swuRs!V<)Q|g$>z}_3?eI^EJ(m+!Nz$JPmKhS6Ecjzzo&`)A_ROo zhl>k+!LFLau?9J0GGH7iNVlN~Hq*HPNeSoiGG|Y|XX}J)Z!+5|Cq&(n}JI&&fjTZczmnLaY$RRgahl>M0Dmi;0PESG-)6@Qt~3hIE@X?@aF zT}y>O9n4|gJxhavQZ|2npeE(%=rXOH=eM_~{y2 z0i>QV(!%U}mS*sd(!lf$LewenPJ73Fk-M!(vGm1wuV@@?4h2zv_n@9`(5mh2K2>z9 zldHK+WqKpB4J6{UE(oZ?I2{_}Rp;Gjt}7hLGJWGnRo~4N|P!lTUan)A@Whu^h&D?_u1yPV!_;m$S0oR`@h&(n=L1d>fRdD`k8V;UL zKo@?&TsQ{q>`*sw%d#NZV zg|T1xK>6pFRcqDUpSw=-Br6NNhv5abFUw-I4NTdaGq51#%Qx}Rezkyv56~Boz*RW~ zM853KILL0V=5~)hK)aZZItTEwt<06D@&C+~Tpvyq-9%^Hr|}h>>z=%6%DyA^5VuW9 zJbzvikMfjd4H9d3j!G-6AEd~>8ZP}F$h)Ohf)sXS$y0FFK;k$mh82?A}-ZNHa!pC^9 z<*M=Zo;Q*Yi6YsQK3F8LoP;rQN-UL zCbhHYlBGY?KjiDlErgESvOL&EX}nqkjgt~gp-(X6fy`5^9?{JchvL#X6xr!R(`EQk zwYherkw#zlsandjPD}A}bupO?3f)WfTFMnOicieDSJ7$I_xDciclC z5Iin(79Z0s*czdoJ4k^7J68KevCo9=OL+hPdP~Be=?Z0m2}9o!MZ`aOyry;Bu#tEl zn9VrnY>V5gvM_5M!8g8mR#@%y;_nH}bM3qqm6c)Xwp_jv^MF4o&c!DydBjPs(JWENZWiPyjkA}o=K>59=a1g zc`@%}U^fJw8@U_Z7M2`xlJ~hhn(sDA!DEl4rpRT(;Jhnyi`@RdFa z7s!8Jlq66!JV_fBAI)vVbinrylLYcNIY|Q9SD2DjJ^a8A`IM3itCIwQpJS?||3!Q! z{Q5(ZAS>r#8niVWR&fQxJ$$kR=&hE~pP_1!HCe|kjZ4Dr@@=IuO=Xfse9X=@?&;<4 z=IR_?cz}oE?^iJPl!bn$^G{}pfP_qo6JhuVgShQ1dYInQaeO2>MdX$zZ+^*ckMfxAhMfW5v5*W=@8H3MsHHq#M)Wz#e%+1uMn`2}a?js(f$HXbp)pGR;PRB1r#0H<+8v@H7xw`nWiERxVKY%#mBeKS<1Bg%g3Rz@0v z@JL=)9GbT)F3#^Uge_l~tuh}`mgnba#9x<^+CX{h=IM;&)B_^fm+K+jmq6J0(`eb| z3;!&I;Y9vN*46acO;7VcpLnungwkqmQ%bM@@fTV?hFw;wA9v)r^wJ>kxC0IHFO|HD zN|+l;-&6KOfzBIBfxoUrNxP2gg)-I^W4HYy_(#d8q~cbkvu=7;mt9~Jv?}8>6CbuJ zhx;N0(fp=wsT7_dj*++U;ux5~LpLgIXSq@`k+9_(9x?`^T(KPX(Tx=UH%jg>KQP>k zqsHDVQ($n#V4WTj`>|n2>JxUBIYzOjNnscpHYH3u#Fi}WPc6x?Ek-2%O~$ZU{W2Pt z9iT*7=b97;16BM1&m_aP><6MeWD4EGHhxdGacSOs+|a= zI9FnciyMG;4vHqSipW+8*<8$4ti4p0VH-fB4zALPp~&drLN0F$(eF=dP1k z|Ka!3RXnX}fq;$_SFA`ZLM>MT4YyYEIvgDKQOY5W`>2WZ5VTY3CwpY$b!9hw!%Nwp z?680*SJxHu)ZFu-sv$DLc|W4< zINMy|B#Qhdb=%wWjeq7%kuWvGcD%gDb;pMy`adltbJt*WTV|W6y;$iI-}pNrWx2?9G`F zVC~-$n<{89ug-BQm`0<%H=2KA+}mtBdPy6+k@E-Gg-FRid^xY_lN+PDXQI)sF3UT}|BqHFl!@>PKf?hJ<0hMyP8z_n2Z zQi7iyGElBc(tz|Q87OE9b1E@lwj*KGFw2WZbNNrmpK*y>*bAiJ_{6E=UiG#(ZEM6K zGF^)^PV@JCswj8Xo&2$FGu~${MBy{HmA1IB$s#yRg#FM3fhwDvfkD(ShB!(>_Ihc# zx+COXd5KM@lpziOfo6HR&j}$}(@WO$&*W?U_h z0k`ybl3k^dEig9T#i_E^`gLTC25p%okz!Y2n6UWvY#K7G0$(9=rz~3=&yMmH#%V2I zFN?{sg(D;8P`>+>!F+x?KdLc(FrQI2Rv@JNav>{!6*VF5pEZt zL`m`jgY)p8s2vG%;|uPH+;+5$RyL#`no^9z7^22Pv+iF=$JiSqvPb-f1FJ{7*O{4o z9qcpE$qS4x^tPikrGp@DMH2kF5X*ePGOq3JwGIeVtKweAPIgnSDenjKu_06Xb=emH zE47>zmjb0Mhf?tK*ax^F2&$m}MX$WCgRjog0O*P0A;uC*Z>{?(u-&3RrJ5d7C&Wu`QI2J*{e2ydXBUW&sXm7tv%G^s&BG?#$WvjWWukb}xgLmPcmR@8 z$|haLF!o{zFbXhdi9?+;Zp5QAalk+gx}Em~p91t++PIlGBCN4$w|{>u;Fga3tb0I! zG~BCfk%&_JcMJlMHVuNH>(>W?PaWp8Vos!r3<5ceU!LC&LgHvlM9T2XzxY$}EX*## z(i;2}3Bt+ z8x^c5UCE9?-1d%c>$bZUJAwu5V(+~rV!;N8CFjfe-RC^dx%d8&Z+)}Y%$muRHM73* zzW20{&Vwfw$o{Tc^O7!EY-Aq7=vAC3DhR{fQ2N~p%Hy6k5ILV2g)|iuM}masG-%Nc zKyZFmLABk5W%;jZeBqpo(J!0Q3Z8I41`^qVC%y?BzVX} z!kth8lCrQG%9l_sff68|{NrHT8y z1))~Z_)xD5^=`o?)eF;?lI;@8&6igHhtzlWhr{9@4nK+9O>!m~OEG;tv*{moaE>m_9@O_{PNd#PabR7c|Pbs3Nx^XF}CS5h;-JKLm0J=hrq z@sRzHZJPpA-hvs+HYuBBxly_prTr2MvE?gh)vX0dWgnany7y9ey2{qH3ngCiQB+k^wCEm2A=|7|~wlr2F1XQ^7PnnQuQLq*I&lyw~ zqfA%Vfj6R`xlEKl_7m36JY0mug`b@YcRCe#TT6)4CGVVdL@Ebv>y%HV%dk(R8*$;94-?h$r{{JfT z{!b-^NiiTSa*mBeo#E?6P)$(s(mEmKyLxYbaJ-OGpPO=0QF`V%33r+c7^BYl+3#2u zXqUQC`UG;0}oA!2W(hNOYpe; z$ur_jZpvPVCd2asFT~g(JJEZ=025s6_&^I>;G}rRbsD{?<|21=FJp+ZwBegrDjs`* zTLK_n*>qgiJWwY=iXK3>ExW*FbaLW5i#$jdQf6AxOsMoG?H(kR#($hBFv_^Z=`!?y zCCj?rh%%Dm%nO9r9cx{T5R1p|#bbBl!Y{WGDqgqiZA3C~*4`1fu++S>p)IT=8ZL3F zji|Z?gV#OK(`|(4Srbk}o$#K01bg^@MlfU}6oXI%QY7gD5Y`!nmIx%Owh=7&v{+#y zVkBPIw6RE3Wg~z^Km;}H|7ZBZZA3RoGmK&X_wWVP-jcolpV8}oSLgp4dgcgLUb9JF9?yq5ed#X zA`uDYIY%UKy9&xBsCWxy6O@k}5zZz>pyCds=rj}@Qd9#4mlSP>f=7zhK;cM=7DB-% zMI}(sq$nQ>0V#sa9$ZL@hCv}BbNgS_0w6?wZx79xD_WroL6S~wOfqI@Seq?_Q0q-h zHVK|o=##izDp%JHBlv>|mg3o!L4<6hU=~HQAlW5>Q1ixVMiO*t0-=+nY1k{U8214h z_F@M*X(%C==sO`f54cgWPy%HT3W<*fIZHK&%4W(X4kG|I^C-&q zLCNs;7=L*qM_y6adz7LIuBC9mFzD_$tQl2_oV#ZsVgu-2S;)Cd10uGA?hppNw_%9b z%aq$LH6ZyL6*L@#bb><>z-I5E^It)*{x=YwRuDd2 zE`1_=q;?^)3x-{MzX;-;T|BXi>vnP0E)Ltp4!c-q7mMto%r2(e#dr|X5g_E7%bI-r znl5}LoZfsTg2se=B{%?;Lqyg;$G;F9#fJ-D2>-skFNAkq*Dr*8T-W`W|0vLe{X3x^ zyxyRRLNyR)0}AHt4AS2Lg#3HpAk_6!AguSu4Mn)$0!_aE`~}?aC}>^(1tD4n|E)4` z9PU{HB53;gF9hK?%HEJziMsZ&E5TW)tG``=Xs$rMUEww$zpnw%!%GnIrT|#s9B4v7 zT#0bsX|FqSE(`fBvaeDMLi7jhWJ~~@@Sz}r=AN_fq?^6L3wF}Qt~kKu#^DUN`okIa zhZTGR?Lul7BD-MN#rH-K@9g4Q2>)5^Z-jTD-#0=&#qR*-KOQvUQ2SL#22G@cs}KeX<}C;5FR|B=a1nm` z!Uh)KR22BsuAMl03HLh-TGxXhgd6&xZoHMgIk=}8L{Q1uZ*YRfLyIU4PS60m(hE*< zH@gCH+<~rk#Tl-G%?G;p2txkA2UfTNn((CkDjc%cojC(nVU2y21t3H-;40+$z*QIx zBFK2gz7xH@K@B_cwJQ?13cM`j1dNwH-Jsnk%r5-xqKjP!?1Hq5w$mWq+QlQgXtImb zc2Q#&+wEeFT`aVV5)jgS5c0L8x4Wn1)Hec|LI*yv%nxY$=7Kf0$@0D5@QF_@QM}ci z*eXPBbDGz%RUx{7n8Wr*SaBd0)-GPEK^yrsBS?sEcD5#LbH#lIWx@i# ztjF??U_@~8I_ZIhK{)^IGaiI$5Lf`p4{$>U>0j_`=hS*gJ*=)8ew_z~f1U<^Q~JD2 z?uw5ehVkM1UdWCYEZ9BbyE`BiUk{2>5@zoKNDSr8zw>De* z4C>nqhkxj7;4ZCK*KMN#He`1ud=w{2RAu|#1}kE0mV@s&o0Z{2QWvZSc@=oJ$naz= zxV)6uDif^Dl7&3TzY&P!iJm=Wm@m>#V>XoQWn)bdJC1A7dv{g2EkC%xa{y;Z5C(5b zjr2bZW8%@^&_CW^1x$wWZ^}3o4t~UW&(;%q{BM5Q7nq$kmMN>9n1fUp=eVL-o+?WK zehhl3O0b|CLc>+EC*|`HFw^;Y7hwH927laOTa0AJ#`!3^|7-?2gH6tl1;59YV<(+8 z^Bso$w+FqGqA4oD=_#s=Iv=pL-|vbR)pvM+H^EGbGJ^&fsinuXDx9<2fQ>~xUEZSA z2DGfN6no1;*f39dcF_tu#pGmDyfP+MUH9rUs_hQEn{8v)8UzP_JL^r7$+?0)dW-tu zPfj2C`L_#wGxQBM+t87poCvEEU|cJN)?p%<-n0l$Ds9K+a<~0J+9LT^ zn}_OrKC7X|6VlKc1P6Y)FhfdYGIB0piFM*XeS(v!p-cGXiy$-By8Vac9?5c5iA(kW zZDu;Ss++9`4iS>4)nw50^d?|;EHArSB^cr2EqZ=qs8DuesEg|lWhTEY987mIIEi@6-8^^vn?r zg3q^dvHuu~CCVF)(x<|rKxQR5+2ZdGj*a6qN`V+$_kRbFm=z;Di464v02d2-Lop6? z#``S_wYa^BC)kHNCtr&*^{U;HsBD~fqI0k%DDjn(Q|c=xkCCsO81(5^PW0@Ro zw~>a%(w9ywvY!_q2YuWC=^@1aXP43Q&eAVi)_M|YUUhlNU;w`lEtXyhiN4}_JN&=| zC?n9b&S1SS_43p4%iUh~^g>4tGhd--{(^VE@4eB%CPm38=zV-L0!KhkY4fflsd`hd zoR*Kya?kz_*q`Rm(a@y;iw3S#oQV;gu_2bkcow>YxUum{-OK$5XZ421aK3d9q?}no z<+^hj5aJygGi-`laU?ayo4zCUqFH#feA*Egri0u|%pxQ$m^or@H5}=ZdIb4SeGh6w zvjl!licTyig|J&zq+b}TsTDolopCq~u)zB2Ch95jpw?Ii_TtbJ$9w427Ng4z-y)?H z!chX5U31(uTNqt~<{`7YLP{R)=4CyS`a~aRp7#@*sQHN*h8`DWN)pkrOGC}P?Dgy& z;TvO&qXFN&N#15V{1bVjD2uE=W4!`4seS4BhsrYP*@RUYd4Z5&yL%K8G=Mq$2}6IX zFAI%2uwP&LgP9NE>Y}o9B-Q|E5@hdMSA3<+1eP46H zt3ADvjV~OQ%1NMM!HO2i* zA#W@$eOcz0f@1|+TJYXKVPd$H>WccC$fqW1$R4t1Zh~>%S9oxCya?|7b3e5Yv%FCQ zZte_4(V;ZdKuHdzwcHDdW1(CnuERE)Bi^im6aFNgAwc<4k3rnnq&qsyrB;WjE#+~9 zuWVX%4<$V+0BNSgv09!Cu~c}p*`E5MeG#&=InU-y$t!@rd|<;2U%K%iOC6t$zsXR9 zboLoCVE}{y4k14oq{dTWtLd8U27Qwut7^L;`TC3=J*w*Z34#xIrA@(z?z<@Lxq(Om zQ{^pi{M1?2RDY?689fdti)Q17$ligIPia}b1s~lAMX1Xf1RMzeja!Knt6f(j`F_K} zqDg&kfj@Jz>N@{TDk-&Gc#iO)cY;HYRR4e*Hz_F@Ix4!^UwF2D5R)3}ak4Ir(dic& zD(N&MWuT2;o{ZJclMY$_4J|s|3_)3z31jgYYkAkdqF$SMAwv)mTRilH7S7s$6A?^V zDC0k{oipSc#tJdHv6B#c2FAE))fUcJ9KxjnZ-1-ET?v1{Z*|Ag^ul~IoPbLFJcjwr zIB*_@ii!YOe}jY53S%8u~~~ zE;dKF?t`F^XDYP3KIcAceiS+{hUR&&wF5Nw zhe}zy{m4H(hUQ9W9t6$V(9D76Q&1^{{maI@fYwZC^@Y~H(8`6@Zcr(#hSqy;ptTzu z*)Jz(hO<=7gXVwVq@lbSPciI?RvO{xgT%LdkYJz>q8*=N8^Mj5mjp+3z6DYfAy1Kn zwqzfG^Wejlt6HEH5cos&-(dAx*t8s)W41XB43vCJLoTuEp;tHvM?Oe3!l}(`d9pdQ zVs~_Nm~82(vz1Y&EidlgJAq#HNiK@W-XHyKHr6{*FB$hMFkzrzPm3dRUffh-sDDNo zuus4oV=8u`r1@-by=cj{euC}CPO(lc(Zi}vn&ELNb;sf^mXn(1SSh?*m zAzChjs3CdQ55g;U*$+ZI74GI`3qM8Bxlu^CsxEYT=??&f{paVoS`{Q-JPh@>9;H)* zBR;O|9;3D-E=*348Gd?Tf%@I>dF_TtO~zXYJJyj~Rr&+xm-!d6HSet~ONC6iB#oTc z3eS=yLC;EQfmof}TcdgL*gFySdwXz8ht08kTf|vt2WOFMdo{w+W@?x}Z5v+|jfJk@ z100@nksl2l=KS(VP+j*H4h)?GPs7ehniDv_?mi<4>6n0C3p0ne)#17y;L-TkQEGj- zgrO+bo#Wz19tfP|D22^0&-xjLrI-G2;FlMJ1!pIqadG(N>p@)yDwkh=0@Nx{dHnJ_ zj!0NiY?5`XaKffO-2q3h)j45;&olVah>H>=*E|}LEi~{kRcOr)kI1KuaPZsS0esdE zM}GMpaDi$fl;V5 z;y5ToUQ%hqf1r?gA*B)jZi+rGKArs?z+Z-qfG8tk37B21I&)=L<<;d^)E|M=f;xp6UB%>l0bBc7jh`_Co;6+{HF3ht+Oj_wyKt33hx&S;bEcb z18L`ky1BVUk<;@hf7p|T0Q0V3(HCZG-Y|ZR6X1bE9>v(Ivg--Pk9pzx58{ygAU)|E zQ2!Z}7S9rEUb>nsZUcGr52E%Fop0v3T*4okQ z4p&NLttHXv?K*1de`%fitBj$k%aFRVJK>QX9IHMbo~<&NmxZH2`R-Oe{**_YQA?8E`uS&3wO)+!qkQpA~MM!NDG^ zTtP+w3`YL0G&J0WpXlNcWv-~h+b*ELu~nsk6JTx3y74I`%WB%qBX{s*#cw^vJMpVE z(oif9Y0L|p6ypWAFGh-b`69k@yfa;=9N)&;2R;6~GY#IqPxq#wc%mcAK#A<{qYTvSC4FuPyflD6n$ zS{8NYYv2W*7k1ak7io-qiJy@#?b+AjGQmL1p!37VI0Dsr56P$f-aL*kA|6a0kblx( zK9tanZtR0eE$9DX5_hZc&c}i%uXTvkn_p24xaEQ+Avm!GT?^@JsDI5c5V^F$#3+Q6 zDWG#jP6MQ-c_m05XG|dh+vsUXXPIxq7(!KVA=V@qtZ?z>chX|Fw!e+JN0RWc@W^D9p~~J^osa1f78EK?6J+M))OPpa%|yJssVucIq-K(*YYT z^-36;F4q^4)Bt!y-(X+5$>!|bwK{5I90&$u8dJw?x6cAOd$%Kn#!NFwQ|6ofpt}q|yhg8Q2xAJi5 z=uq!ef6DBGq8rPI)Jhi<7}Kqlqkh|-&J4?4TC1Ujq%l?6&BtC(ZNj z>qBnKT0l0`e`wO{8VrEdtIxP%Y|x zP-}W=1J+Q++KQs3u*^Z-Q1hX5p*ky+{S;l3;2YpFnt3n&VxyxGF;mQBD}3qCTa9!; zDOfZdX`=WwZHTDrJXPPFi}7QcY=fuxpMtn zVb$ODPYK_8LstF%t;twaMHvI2Thw*dnaqQZoTB3xZxuYAZq;c6MFX-Z!H2+)BR!3$ zK99^YhY+U9)PWZSdynP`_8!JRk;bzSMHZZ3{HZsIm2stKNOQ>tOmkh<^Z^_A2Eb|G ze!!%s;-Y?i!i){^{Fvu(-s4Ii5(&OP*Ip1DyD&TX7r0_G-eS^Uo%asQcpr%PWluSb zOcIho$l~j`oJcLRg99IMKCOq(A$EfV>%Bp3`8e=giMo6b8$5(WQyd{iUY*&u3I&Z~ zq|6t)7YPq35i#z7iekNIW0AZ&^VpMZky z{SGe|FrLm5raVKU{o82=-9q3&>dY^*b(5>+?9v9viy!Dqe~smrzu4SYN*!+_GJxg7 z<0L!15(7N)e1S#T*1AR$K{497(v$HXNK@;AaV03dBi$6JU8O}?Vd)1jpqcIm-+pUd zu+d@Zml?3wUx-97Fw(*B>kIl!AxgJW(2yWR!f{YpHo6`M9Nbp}ZXw!#CNU^WGOanV zQGoy2h&9ns7fq&~Yw+B}YY=f<`Zi$8qQq;!k!ENzE`CLe-mY+JiZMw9%cD^&)GlPr z>ATm&i(3jawuq@KwKL%}W-oGf5qzFdrl%5jY8(5@BX{ygA(o^XMXxv##5a6662i580abRj>sF5JuunK-yT@# zkhg(hj*H;QF$Jz$p+zgG7_;O-^&0-rP*AUT|U#T@3gVdNc#2Qa|)C2xPrw}xd2bAc{NK%##c^;kn zfg3B7lv}T+is+NP6Ty~N$vK>kScVG{>&D|E$p6XWv8`~6mQNJ1)?#P_fp?JV4wL4H zf&YZTrKdb$h;Bb&$V1MrNJ;82n0xMfm0t1&<`qw3O!J>Gn%c#B2vjPR!(fu{UV5@P ztEsdO1`FqZ8R~{I?N&xEG~@6Zd3}~%)R{9nyoI0GP&>;(*I+CY^+#dW^BvNQ>7~B_ z6XJCl4~@jIA+_Gtpj5HW6!B^CHnHO4;ss*atp3}?UMAb8Ng8$%cgct#8y-bwGr5>o$l7zfi^cXXTqf z*znla97M~K_Lo6!LwqMkjN-c!NNXKBOX`YCiE1Y?hT^k4Bi{tx#ESZv$(Q`H07k8& zLR>b8t1*?VSt=A7f%K$ZQm8a!wI4l`vCn)UXatE65H@1>y!OKBF<_4^d<-z-kpb9{ z%7)`!Q@}?FBIUQ^!BKMT zJD6$4y$ZbT3}62DOp8|Wg!|xkbcPrc!|SMl(TNfDnV)#O6GO156T>_A`wAqQmX4&d zANSqlFPDkOgj$6^?qawTyB#1JKJ-gRRrA5-YI1M-Tf4V*xygOVGWbO8M?PYhBr%{`(>tn>Xtxg0 zp*mE=lR}kA@>g$^KKXa}ZT`Yko64O0^T&;(#8XBJ#UP=B4%Y*Lir@;0jQCvm$pJ+g zu)Cieuv8uD&SiddNNy=R&o8eYfPZla>$EEEg9Cgw-~H&Ij%p~2MKRs2*{wxLw&+C> z@|aSDx;ljwp`ev3ix4L&!+P^uZYP}$GAK$cDs!Ko#l!RYjntq;TGVZy%2K-UHe*Kk zCK#F=e$*w6;@x{5i2N8@A?e3ZnYqPX8N?%8RJ@ZM0Ao!5CdOj?B948cyn1}ELTYng zZxuKC@}*0cx^n5~0o-wL_tn3pyt#n$Kr+3!A=VdPQ~8nRzP>t$)L8g6j0jd%X}O*2 zg#W<)Uch7!zUh4g`g&{SFAX8v^=ud?s9^Rmjzs15yEP1K{ZPS@`D_`Ef|5byf};V} z@CB8<+&}5J&3XV3onBGcSS;#3bk>U{JIw1w$@7%mS&Hqvd`dRA?P?VkglF7@gi7ll z0)(_w)>+V-o04{ohB;;VoSf#_$>zWnf2S4I2*ppPx}~>{QD%!5&y}uAy30`U#y#EW zsB?e1PMiL4!1*|HNbx2t^Fw^rJRP~qfv&jvkHECty9IDAFTg-Fryo4BMe(LCarJwU zLAcm>Hi4Kx^UD`12Kr`;Z+OW*@Nakp%@EU@(CB!xd&WBLjKXx-F5dVge0kJ@9S&%k z-~cQ@6$B?0^rw+DwmijKI)lS1p1NQufO(9qsu$qBz@b0=sX!BJ+WgX({1Z$RThFs} zKjHEUUgBSnlv{iS(&z~6D$H{Vcr%@gOj-lcn>Ow3g)&Ni6a2F7Y=CRIg%+;Y{igV3 z2hI4mpebOIAR*^;03vD$J$AOC{7-gBV|l8xucCa74EJhwY#%3+abm0F4xDZ4u?#o5 zs@FhSI@cuuYcEB;2B>+<3ooU_eX_F9+k9lKQ0CGnQ=-*BT5Uh4h1B%N{AQ|pw6)es zrs&i3!}w)G96L!(PFKy`DSX;`m_H=Kzc2^QQvBbl+pb;QKfpdu{n9 zukw=po;xi~({mQ**n`N<t2I*dDF2$-pL;f zrDw6O-CGH<#=n92rB zwljdhamkLrQ8~4jM?u$RS`=rzS6`^owzqEYl1am|rC;%VRrzYhn62vf<4-oXX{eO=km< z0NhqvwnuMiYqb*(#Oo4bBR=0w%LfCWq-{S;cyFhnsYq@ibCE1<=oAEGET?a$6=Gh8 z7=;*`GC~!x^Y%A?m%1WMs4c?i-tc?6cyk3wWvMl-tu3>q zeXmxh7k>nP1Izj?9b6o%U5*k+;gDRJ(rNli>9`RSAvr^j*y$!}-oi9=u-{>DTn2(+ zBHEOOj`h>^vUED+jlxDPOv64KR+3C}cr%#(*NWO7v&Lv@B6-^O7FBh}XC zi~CX4xlJ85ILp^=?no3hbi+HhY&Lg$@wIic+2{7>b-1cPDUBQ?znP|;MDD>gmh{g; zEIJ!DIgSg~nXo^3bK&YF9m5HE^Vd+66bvmzlDW$p^r`xx!1_Y|h0_lL{6+2+jzMIX zZ9u!?7E6R({m|-C)rsnd%gy;9?t6sbvgcl)nf~mDi%!G+bkTl4&HXb5R|Wp9wPkYq z;8oqe!a0q|EsZV_VMm%FW?*D#AKV2`&qh0#p`~x}-AtGdQ`OX2%EcmI1J6}A82vwz zWc3NJW?!8Mc{d1xTL4ZSjXsgot~d9_vckwVa?!o_tw8RI7mKOle%zV1S?ymLOgP+r4ZX5spx2>0t-NU!gh8&14= zYX<_vuJ0h7&imkE)poKEkk@_RP6pk*ww+X4It z`o}d46|sWbEJ=W4ld715%flufpEMGqU53ENt>xqKd@*je~_jEwpI=6})^ph?#i zjuIm-lHgG5)IGx2b1KwM9+(48@RQ-6$7G}zf`{Nokwg)ZI~^z#;FmESsa~74bO1gb zi9@F&S=GDgNFals_jJg;cSBGwTOU3hdH$R`9c4bshOP|LQHFIc^b|3Mz%OClvL3R2 z5bR5sbj#~Yn4sViP$%UIN%?ixAB6P2>&5eaa`&QQa^vy+ERkfAVvM3EhWO8Rk)ntdV=zGlzk~tJkI%2f|^VCRX7ZlC(Y z`vx8|>*^Vp(7P6ep11@9GW6{=_GJO)7dxo{Q~c$ER(J9!z=ATf3oyRt$9DyoC!wJpL-c@bp9PpqtRxHO0T)w%X!y>Z`wIE`m(lxU4!uPF<@^LFfnbwbnx| zRsKmfIe-3}sobe{SL?co?5O!NWBV+13Z&$cC6BKXQs+o&`_&>T7O=SZmBvd?%~yJc zf`|c9(!N9HpuxCc!hIwU2^c-AGd6mb>|yhF>ZK$AT&C5Y44A3SoulpT;^9-5hIt%D zCYK;5N*CuI8HnuF{+KC#zQH~8RdjWdhqMZx2Sz3t{Ctncm55A&ze)peHjZ>VHU zmU?B7D9Af|kca|{S{XHb%vfmwHAp0Dd^<=KAcaOcE|D#OpX|opS$w~rmv>>oadsP@ z?6`fk9l}AP&NqEfAK)UP28;f_)$=!uk<0>Zjzq~NawKa0e9Z^8w`KMp5{K1TH!Eva zE{;A?ig(qit}J0O34&FseoqDlv#yXQ+^1L_dFMyVfmfI>x1 zDoSv9uqZCjp)lTLLE|;XCT%0^Fr!7uhq-DGXxUeF@V=~|qxbZ8;Rz_4M zvCMj#DfIfhSYC9*@{+WF(yafun>`A&FF-q1XT_1yaC$qg0702_Acp)!u z`fmLQ{G^xA(Ac8OfoP?3UXk(U>T_Ps>X_H9H)Nv1+(_0rFE48zatD{56KB|iE`pw?|eAo-H?5Zf;Iw7#Gb^5N0lr@4!o>asOdUx#TzAFHAW z4T4j4q(aTb|HNh1vp3j1B-Istxt`V(l&&`w^&}I94t6uv1Ev>%KCea{xbwz&VL{74 zp@NQ{?ZCO-=U;W;zQiHeQDrQS;1bG$_TQ>Wa6ig>P6Vli)k~(YX+^x99Cy zX(Batijq7(=qH~sai3qnoYA}djK&)VVkDiPo=%;@&On%qS79283qND&o(reN$<$%% zAmt;AdvgX_4!*J3<{!}>@yByB`k39%&-;LcPqy_?=8ic&M$QRX)?M@EaqG4oLeA&M zYRkrzTk#yuxjXn>1};?8*2}%(RVbAa<{C<{5#+Z;%rzu2fl)H%BAw z@;PaLu2}>q1y>=~!z=roKpHu76jDr{b50;Ds(g-ud>d=rQO|hnd5t?=Ka0u9l8H(l z`K!z4r0Fx%Ww%ivl2%?R=!{n0rUyLomu)P5M&wPGR! zzS=4#M*d;fDQqCy^YZV0IaCoP{eI$RD7p6oJ^vJjuOBBhEg#pX%A9L64-|Bm4GNFs z{@23i$NX}TEli4X!5on^yvbIAue?C}vM)@oe@YwRv7f;HEIMcKyjRgK>FMm0zf#_*5q(N$i9i>$VcLJyrRBaAXIM zGudki3t1HDT(sd*I>gjbr(nDE8X?aKWy(fEycEVox$TQ#oo}N`#n&Q6Kxcru0l^FL zex}mUN5132;)vKdx~^BL)N-cmoW>Ly=#4yTyb(pO^+x!APd&P$Ae^D;Hz4{G6`& zBexoVgj?kUFjK_2iC@L^@NJ#+)L*9pZ{g%MKY3-uNUHXI3eo$(36PboEQuRQW6Gbo!Z(c$Emzp(!9Q6}o~ggJ%E{$z?Q zQ#A=5kMX$^$Z{lK)AN)(=nT1$hn!+uF+rXWnwG~b4ct(o&BFvEoZL-B92Xp=XqUc#q;PcubjiEHIt6Wr57e1kr#=f z9}{oxq`Az~Gudr-SGIjOp7U*5DGEFan&i`D2&QxE(K%4Sr4e2onFG$^%ahYK8%>fm zf5L`6OZM}WuRrQoaNKzDeFr*F>Jeg!z>gs3V#-nAY3k$i;*TR}v|u8fzt*B>gcO%w z>Mq5-HZiXTiVlmB(1+6%I}D&NV&p9L=qjoL4~c~VN&z^?2WAqY2?7)YAQ@;HCLAJ0 zva$(hjS_>)~lsg4~cd56%NV5{nEpZ7slf2a(qh(+0dIVl!q$M_3e*Ex5Ks2ZH^FP;F=H@EWkL z4uaGFY9Uh~Yv(ZqhG(NYY}ImEv4x2=<1MIKF5lHr?Jq6+P>mEXe}p+ICXKHqXj7d( zc?pTcmmmp8=VhIm?L$hD;%m1G0!?Q7Z21l0#K@D7BDCL~EFwg8aIK=n2m^Je7|jTR znYeYzcYwoyRPY5-C!`Dm#eikv)wWQfI0P6+>*S1stIwpnsKQEdLf#&VZ1rxKU2 z#4KLikt*MbK4-s6{nVjH4&U_)S~c*lU!W5WTK%L{f1Wbvd#b-M98A!zV1o8+LSTc| z+ZzmCwrh{3X8{O|)6y4i3GV=?( z`twtM2!y|COCa`@?TQN(pCBk-sE|hr9yeSKv#y$-%OqPw6slPah)_LJV1q70P}C30 zkxofSydeqEqIk5y98v!{4GpvQo4*Ys4;vln8yV(^qLDc$MTd*0rZiBmv$UP3dfe|k z6~ZkP-|F=d^;z2S@+#jBCMt@+$KLkL+Ie!!KvUNY>Wj#KxG89#1!I1pp zJ2M8!27YyM70ii2^$nI+-KPi2y z|7-6dQK?1RGjiI%225HVFR#aTzou_px#!IyuiRS-A8kD7K7UlrR0tlEUl|$UNsoIc zmn5c_59a^VFm+3R6f(bgZ+lPK)TCi5t1;R@neHs&x$AD0`DIi5?JnFc6`no9U22tT`As z^U#oZV{>z_YKhJ?#3gQ%uiRLF)&aS^mM@PPyh*wzx_(;H>~>4HLwneo6mbQJl`QZKvOx@VL0H})x65DdA}Uxv!A zoSW52zBVrEddQzqSk!eqeMzo4A~*>S?IxXT5hirlnpqb-6s!xE=d)6$OY?;r7CQ`_ zKFTuba;pu!MMD7Vzb|n0@X37+((WBjGCg(LW!zj3MG30}6RS!vDSM(9FiFq)uUIcQ zn=TmuSh48D)`9sE_xHp1@1d#@V@!ix;!JaMF^$DPdLkx`j#@J%sb`SoLV}~Wn%8`+ zu}HS2|8Vf4{^0&Ttkz#?ElHAYM*>a^wSRx$o{ID*22+TS;rde9AB`E9rYW9PCH2%} zB?ujzZU0`_5><|*wfY2HM{V67xOq11vx_|4KMp_%;$b^WeM)O(a)YJy8}t4OVhHj& z1WZ)I&WADO?EZ(bF=_qa@6$=0<^n*6;T%E>rgswl+K1O+;kz%kCO(3=Vt;jO$!_e> z^~ART^AUFx3;EdvbHcFxDbnE$0xXd?Es>pk6qA3rl!Eo|9p7P#I4W__?uJ-X@x?S8 zuSyZN4*4%BH25$Jl`PZTFrzBE{o&Ybqmj#acECaNpHtZrI4Et^u7nP7azFaJJ=l5Xj5DRl!F zb`j?V@_Mm$(-z_MvB!3gmIn7J^?oj^5uCdBWv`fATpAzw_B>jJ$p^R&E)&W7 z-c(1qF}{(41)dm_{Yd!opebkuM>iWQgn8PfBfxQlP>AqiE5lDXrUDTw5g|CQw?I!= zD(y4Vr^^uzW}kXqxzGy_>6ZXul9(qLZDtTU%dQKpXGZ20D8*9#LNCoJHK0!}eT#~4 zbo?>I?niZZ;;cQ;N{BK;;-gB)sU8$b8w0{n#w%W|&4rQSf zV1j>=fZg38{5=N&k~i(9WeD9y;Pk6DBp%$bfLwhPYd8W}hV=I)OlrJe@kaL%c#-22 z*yAJ8`p!=Zv+lwF$%y~9RYa@&L%^b19Dq7H>y=8&fmnoP5%O^N8wO?ZYUx&8+R(i2 z=&8)W`idzldPeO)(&RI|WUDnsyP@zbjYZPSZGk*6A|5F`Bd(lqaa%;tf3R6D zZpY1ns-Q}t%VUTg7ysppa^iqHw?^OM3e2KP;hT>NS<C(XG0`MCp(^zMcZ zn{`IqAi1=$3PUp&B>fx&lp*KXx%ogaWvS_rhC}F~< zntBpp*c!_U9vYpK7p$?ET+skjzrZq=htlEAnMYwE-{`8&KxHxCUuW6Nz?vX?uk7T? zo_cWCz2c^+T8;P13At`_-CV#^`1!?qaxnu#`r_aJj1)Y$aUJ6zdY58XIz(I$`Rhj@ zU0&E96E-3#LH%4UzhYZ}mgrcP&m;y8!LWzP#>YTgxc8W96TqYB5dbLi%QxT8M1M6! zi=fj?B)9==DaF5d5bhm=#f|NOA=llEgGg%H^w1Cm2_YYjq2BG5^VDIaxoeFMOQYb+ zeAuQ}h;Dy{g4R&4;6dV-pGg%sxm9RXF~+tnNcjh~#l9QgdxaEWS@O&2D2JX2He33> zDPMrDvKAGkF_C}2$wOKQ)EMm|Lg=%FJoTWz_3@mxTo!ZhP+%5X;rd-K^?Ezhy_ehD zwC*Eh6|U1C9Etp0po%vaD0RoMs(CFqoJ#8l0=!KzPule+hVg!G*Q(Mw99*q0)wWh# zTI7JD)F%M&!;%g$wgP(G>sfO3^@JBmK!DARdgPUS-)_28+>m=Wc10Nmm^e1`Ei6IQ zdd*M>Fbc9N}uHo&OahDS4azY^?jMu!ckfp4} z4$V$4t4rX=UP9}O&w}U8G*Ow_mzOk0YKeXSkVQu|*(=hTf1|IxJsqe5E z0LO!c9AEiVxSl_RRAy;@+PTs0uB!CO$6~=^P!=`EUHUL~;QT4Z50`I+=*znr!}eyY;X?Vb zX~U-}@|X4A4yyRCR3M7n6~i9L#zeJVNa*E-JeGJNLbSpQ36K|r9w|re)yJA9NzXfw z8#9u@+gtwLB#ABbv9_llKmiqcOXC+xjfh`(QcSpoZ%&Y6!$+sPS>nyJr746W{g_@r z-&v6)i(zLIsvaj=2mdY2r<5ZzYvaumTcV`3Oh>9tQugk*0tKY_E1W& zs2+64-agW3mud&}PyxXR^Fn7v!f1IkIF5r(UF2V9k@DzJS0Z;<2#`I`cG>ydzYs$0 zycYPUe;)v0htGZ=D0B5WxJ-Bi(m>(daPTBRv#WjoL@{~e0k}@<;%9R*;rXD|tuu^^ zzQ-HiT3!h-G;FN!BZn=EJpy7>R4CRtVO^m5&dJtg6VihsVHA(-FUO)Wy_t75D!vMc zzS(M&wB;nc)edID8^;=ec5jbjqvl(d2Paz7nFGwBtHRlmYW0Let@GAJnW@Ss5!wsi z^pbBefD)UM@^(3f!ej2j_X%uN0ZC~#Z;LnsJa{w*j- zOa2uos89KgP%v!ybx<&E`A48&t;ydH1$$cl4k#Q-^EW}kvE{FYg1aVv85F!}`3s?N zEX}Wgf^W+&))&9?2`?iSeS=XrA?xL_!oY!Wt88?}jxceW7?NOo9jg}eVG#dKJ_Xpc z=+!ilJc#DkTw3Ui@J~RTN@~QY2moTED&jR@eH#!}k*C4gXhV#Kh%0R%^~JVG_T&Sl z&5&_<=JxeJdW=@G@)z&Pz*fAZUB0gO?!%q~SsgXQ?vtiA7!a-h4nv5oI4a${+`G2u z)LJ@h7b*1FB3IPRncs*Ct5 zcVBf^DJrPDuGq1ySa%Rh0HvwqJN~{u?%XoB&D=Y8ZaL?9b}27u&-aBFI^mH`Ha)`_wtGcU_h6$R{1~x~N?^+I;4xOy$;&9!*yp5n&4S*Jp5gqB)lM#O>R<5F%oQ zk)KxBW?SW+#%j6lhZe%s&}o%hif2BjRkyHV4(ViEBl76*4^$k+xh`_X$5=%V(SPE=B7XaR7Kcxn}BOQ7AwA0_XDDeP(-cB zrgIHl(mdNUMAiO~ram7usnA&Dcqc410jGJBc3%;SpHse2ZM95wwTXLgvE+Mcf}T9h zR56vg@A-Q@*A-mgYrwQ1;hJJcY>)PZvp+OGeeY|bk%IAhOHJi(A`41j|J->Gf zErfFq26JcJ9*!?9I{LzbqQlve{R-uodLos_+d5V`SZm;j0$nG*sgiQ1=$rX4A_8>A z6BRzdD>(&cqtkjY&3Y$0tp;bAQMutF;{>QO^bk5@c`1R)4-T2{nBhMNl$`CbrGmlq zChDA%G(~xx44<(KU?j+UBb@Pu5)r~>g_}aZjvo>9#d79`*I}Jd*U0v8Wy|m+KmIbe zY}xjCkX=-PHRPsd!cEg?VPsLeo-I0qAr}U>*uU2bWBx%@V^p1~=G>~gDAd{4nj}`$ z&v@GPjb<=B7y8!V;?fcp0oBiW^FGyUjgeFWUXTUKx1+y9E8_Z0n3Cg$@-kY3h01ZX z28N#VMjK@cJaxBGYCOLhJkMzOq(17_- zo=NcfT$P0r&i!K18sn&xRL}mzlmwBn4vwlYWE>zl@0J&SV%e{yd{7n@zu02a0vuxJ zVbMjmbZj%qe=q9r%+ulP<7Xuxj+N@F;!Q&PNFx<|E2LbBN;JaF)m+}P3}DV9%EY~p zdZUZFX64_;c*I2P)HiHr+Cj-s+4K?5T|9E*poI^$!+4tk3HknDzM z$PkXz=dw!yv{O>ZE&?&xxQmW2xj1p_rAI;B?9H2ibV5nFsQbn86zPV+)?U zBv^FpYh6$$^Hht?dvfWPV$qieG;=~Jq`ZWV+am}f_?)(mi(NVexg% zb6Re}Q@-Lc{EbvqhpIkow3Bj^oRNRrz5>PHwmDiI5(jX$|7#4BE^O*~%b2~2kjTwY zMVZQS6sl_l&+qkRIKL?YUoY52Kah9SJnd_?!V?lb$==rsb=4ZUuQxRCVtvi7fm-0^ z2fpDc_ruJFO*wV+q2yU$M;$^aN4;?g!=3;46gJiyL=t@V;U`K|{u3p8Ana=|Ygg|H zn7Fe&72-VB%i>Sx_E}ks9_|EJ1wyetne@Nla0zTOOkqPY_%A#+%#l_Mz6#2)S(cM@ ze31NM=JNhLnXK(3EqzmPk`CfB##qw}ki2+u{+YrPeh6Tp)U)S3c^ZU)mAF!(Lu+{f zCVS^*P@nmfS~fT#j^()Ncdcc{Q(?R^Q`nEF`^oKyI%6mM6dVMBhEJ(i90Z<(X5guI zi+mGMy%LpN&nJrmzRjS227l_Kiu;s0$5+al4)OxIo_>GY%Je98pN{*+IN9IReLNK{ zW1_3xxRg2B;Hb^8Ppak?`x48w(nD1X9>|J)41LmCKBmHjuRqvI`|WcUIu^YK@%UrV z|JKLX5Wy9kZ2uL+s$W5R^y9DKq~8wWwCzA|1JCK=ZQ$>Z7aA#aVHl*}^+BO&6eK~k zk*L@G2q;6P*`a0NrbUPO#8k4-7t7(szNQyZBTz&zgY@^k)0RO>BUKrsDya6pi@@LV zC4;177x12J&B_eY8xk|f!4tHp8Dz4s2r<==0gn0?24uATi!@IslE@{xHq0_!=R(Mz z3`rXnioWrr;@1cQl&Z2*ipY@W3Vq*~_Crz_S+xGbPu-n7~*jz96&Ms$O4{B zG6*jlKP=!$T+tCBU%+#mu#h(fS+76Y=J5Qh@M7Hj;N>7g>ePmOXO+VIM9oF|s|BL>}m9}J!=55EFc*s1sLGxa{4+uKl( zwFQKN$4{a791%Gno8}{j`MK}0hRQt$2j>TD4*T4Yg{TNzSd1yXt?tF(CdN$H9(Z-{- z8rLyu_V?B(Lol;?k4S0tg_SwP9B;)uB5x|CzrNt#`7}WK4JE7Qpu#%LG z8-SNPZ!1YHjuxh`)`~(8l@+LJ{=1REYBxxNcSHZDeRqTBME-8@_r{BTZ;U0I;jtSO|1|H0 zUKGYm!+w7RJ&K73&}WPH*P>6N!E_;gFIhX)Re-0;ssj9NtS(twsZMwh@9boM_5B$I z@_&ZF*}t`4uusA@%3c4odWWAO9e3%t3;PLPK*yWZ6AoiPbAR?C66{gP+kUUVwaNox zrPLkd>eydsCw!;m^FoBwaywzgVL{o$7}IhWf@|;R#*;1n$BpNIv@PD6lFj=M{lSay zax6OAE_Ah@_4rtL*h}_epV(Q}G03LQF3MhddEc|Ro!pd-d{AA*rOL#CviFZW!26#; z9f1F=2K;(eAT#ZoD;0LbP}vvnZji0G-VOezTf2dh=f0+&L%o+Mw+Cb=qI$sp`oJC_ zWv?oFkg=)bZ%_*Ew%)8t?Q zXCu1-1Z(@m{jDRvf{fey75tTcUoqor=U|6V_z_3++VZ=Yo zUxD&k_7eHzM=T@=@tMXW{wD`~CP>knDEN2Tll$b0EGm&kjG=y#0oUko>;XEQAN0IithXcxcdYKoif;F`je{^a&mEY8STEW1o%`v5A<4_#vk&w_ zI-|C(NU`dCRYx>PeO{GFnWmo{Bf7ai+RMk1g(%hBXS)X}3+k6~*iPmxKeTI#n4y<~ zc=z{-18T?T0Hxr2DSIjS%BK6BtH7~n6?pA=xe7dMVh6#HfObgYJH8hYIN37(S_;zL z-q%S<)y+OsDLA^9;z;F*OXD9pCxge3QlP!dT}#2|_l{EVaK=fW|L>nlfs}v#C4?51 zBDk?>XDOt;l4FXf$-oP9x@ihK{sIRk`v-WCnts?YJgj6~1rQf(y*gbk*akO+eXIcA z?_XdLR;BwRytT!TRXhei*zde5FymLhR{#@Mfdfz*I&3OHI-_9^DQXdc|Ld_8K)EE~ zJ(;-z2Gu^V0FR^!?C=M+Ve-ogOzwy&mu!|{Z7zSPfaBAiV@=K@>rGRmKhI-$1wKuM zGp7IN9VYEtflsp^OCiNP^txkC^36LcApM;b(=QlZ6dHDT%sO702Og|6?Ii8VR7Wco zRGXir{?*T=iADNA7Rz4tGmHFio-CGa#{x5*g^1|47R%f7XP#l%rO4;fG^M#xB`TH9 zA6yC2D_zR(uJYt380i`Cg8h0zd6Ao*;i)m5m+lvW?!h^Rz5`{WoRH%y>~7NR%_8Zc zMFHeF~ceoX#Cm==bQVX&Rkb zs;bfiIt_Cp!1-zR2<{A~Fb+7Ve9s-iy>CZPdA6Qy5*`^tjRx_B(U8_8b;Pzi3J&!T zdAk-$FEp$R(d3L|FSdE4A8o+Go_^_5#nx)s%iO#v=zTcLbs=V;6&|_U;2D028z=s? znqIib`C@6z8UgOh;bvXq;fFTL=ZK;H(EuBaeBqI3%Je6c-%hLL0WQ@@uUtHH5FQyv ziFmRx;_7!t|CB`_Jw=wQu#jvMY*1$jazc$^$K%UL>Gp`z~%EJ*~z33g8I`kG*J%+iT~{wBHMZYB8YT5QF9{J=(Dn2^mXIl#1*(vdLNg$R2Tvx+W`Wj#>^zV z9%!==j_N(bfv071B*?M^Q6Q;{0+-=Y;1Li7R^kd2{XH86u(!9^>Q|8L6@x~?eY|%A z{+8fY5jP|$JRDLfL7H;*x6Zq#}D>R!e9D5Hd z>}_FyS;~N9QfD3HQ(l$CtcGlaN*JRz&VExu*Qc60n|$R{W40{>`*J8v)a(WzxMz8?C@)6@YPB1YiIJY-Tm)4(W)n- zW@m#0#nhQQZs6(|4AdO?;HIy)1wlkGO)x`MeZ=v8st#c#;sz9ZOx) zx6~NqfnKiWwiJ(y`Z+qT>F_*yyIU$}YabHR=1ss4<_*xj9{??~4le<%a{s|fBMz9B~AqoW-3@o+wG=;(rK4Nkf>HOWcB8D3!We3Fy0f( zKX5TWwOh1xl%gfj^Fjy$P6lok1>SMhqpTH*Y|M0FoZrP2q6mUW_+w7x^dX9vNK96P;lgO=qtUk{$RlkMP+mZJI!VRnID zr|UoPa`@8EmHfG@^oF-tT2QZSV^ux7vs1V&*a+&J?c zfawE>=A>A?;ZjyHL1YIr>$3=U}@COenlYNPnfoVF04;TH%JzHIn{|W19 zL_`Ajg1%!T;<1XT8*vkMqKn zL=|pI>!=@OhN}OS$n>T6)1@A~ra<^UyjmmNTx&oUL_%1&z=?FUgkDb5u~&4yokJmi zOMWO1wcNL@Dh$UMWMd>z+#+%E1_|ym$kr0W$YjJTER;uqBTtIQI`+e$6xl&zGQJ|G zdQW)^RZ9(+qC9&+M*o?+U2VwTU#u(ypEc+so{d=@&pi-CBgQpkvKBxBA zTA$^SOL%5J$xYgbIuz=6xi^hEg~m7*(M;KAcBGjJ)|uuqB<7FBTu0SuJ>s1<;I6bC zq2t9WTvz*Uh~?!dq{GH4l-qhB{Kr*HEn%Z)pVoS9IL7(+vqBz{D5f^w-w~XLX}Lb8 zc2D2wDOxtlReM(vu-l4o3)XT!oa5O*egZfD91ohN6I+RBq%o>QupxT_rO@q$ZG96? zG!(U8^)p+?WVGNIJ6Mz7g9rj+@KtMyRi*`mp6S z2|keFm>viJEs(3tUxL!;!^Yu^Djvl%aOXA&L{0O?8X^chEozGEiN?8ZG(-vu&wVKe zSMnwhf6qVmhGgrjIS-=#W@iixDgR>mfs!>novtTccubMwc>CSNrlu+QRG~e&@mC-f zOO5$b0B-665NpTu78U}{xD`SiemXuY2@x4R(xwqrMH7}0G2Y^&qcezQMz4|HD7E8NQHn_7V@$^1v8GS~9_kp9ls*NQ zjk-j`S7MR7_p`(&oSf~R&SL~NrOvxFe-WZ^NO@BhD$NmuB3@aUlJpEzxJH=iS^~dG zByH4~CUFwsSGN@I~_iBuh?KwqA# zK4ZzH>|k{2XIV-fBpC~Xfmj`GqXh4d0ZQm4K!dDL*_cG34yzpm8aI7L-Q7=2z#tG+ zy?vk{I=28-ZVQuRM2)pWtD+gb8gX-?7~#h14^3ubW0e4p3g;qjiJ{wCxH`iNNyprGM*d&<;$6ZF3U>X;Xh*qZJ-m5t~PX%7%>{UKExPZ}lw@??hM$3%_Q=WC4Z=ZiC3eOJop2Q7q8RgMl#F27_%7n6Md9 z3i$)!C?e9`M_FhLwNpZb9oEwuQr11807_toRv3RJla06ggMVV8}HqAV*NSFN)X0e@6Tm6QID1yjo;2!Q`je;)dLbRB9cQduZc@*Krwgw?v zgB_76oY9%76V9tb2XZ*f!xXdXFd)4SJzp|~>8%)mlnC=~W5OPDrm*J2{%`LqVzm}e&Pzcjl-ej5g3Zck@J(hUr`HxSHLPciF9 z9T*SOH~)jhRbz1qNWwzWYYM~D)`{uAlhx0dw4Mw_;$3ilREe37DAh8_= z~p9ZKt$BD47@zs!Wy)80FwdljrEfq9{bc zC=*DVzGD*Yd_dmxR=L#P6(Ktl5}C6z5Uaqqag^u}`UfXD0|_YhtUVh9El5$O15#Bb ztd#Kaxvhw61>KKfaNmONUi6EbnXH75FN};;SLNPk){DOb)!?O+LS`*%l2J1yRqiYKA&zs#96wcI`~I2eIFqJu+TPAJzQQc&SlBdrWR z_m-JfHKEZIg{*&xWGs6XC$+J=3pG@Db6o!JR{IS1CqsilYj{h>NsvKHGj5ibJbS_+Tn$s6KO(ETI%eDpQsaLLrN0t7xO ziEeoz4251268F_@(MWiq$jA<%&{smCcOx1xjX`-6gHamGP=y0gKy99<7oCC`Q(AAj z-&63WZ4&NKY1C1jDHC6C3>n8>nI&1xz8Y;(q&LsVp03Go&kfAtjd_Q!_dynKmEV*= ze6`g?!6I3~vn-y}KF$ZErcqfuh<~AsF;r#o%yv3cpa@TPtKWF&h}N6kSl@)6ICUd? zEl078S2`*`_lC~sXCJtXxA@)4Qq@)M`DMKP6Oo1QSlS~nn+JaTeq-(X1cpFU(U*FP z=ORg1mz3j&ef%a3OCA?tN5}fx5nE{|udTGCKA&EqSDSP1HQh3&S(now1<~o&t2=b8 z`@>8W`u+0R4w!$?r0tI+oMJxl{C*r9g4jU+jTvcJ{tC6AY$gU*Y1z+}%2Ka{y*w~& zyk(zW^hkL6vp)4{IRx2({sN#3!fc^gIFi-90%6Q;)|Fi%sP0CxJ-wZt&6cnUl)g^0 z*{d&@Thqs|pG~3X6=KsdRkww0n0PVms<*1DCZnwA7EUSz!ji{d>^1)$$2xS2?r0{9 z$os!buLb-KiC^Q51ADIbK}iKA%XyVJAi~)BjaE|A=7$T3{9l>SFEsOYd8kxaREz}d zI`&odS01j_zBkgkfZ!!e!Z3PhKror`Q^M6uSl+woER|NfLrwP%zJ(sn zk2@qmp~~%%=^v07fHY=iNF`Rb&gI;?IbRTk;f*S|D!BzI>ff{Uzp7x!J%a)TI1kM` zpzOwz>c)4|c$!ycE2oF55ZsGvz-zcEP;MISV5sGnhE#R&h^~UJZv5bc>+N@ytNq?i z_k&zP!PnD7+ko7RqFZ{S{bo#*=WJTQukPUy9SGBtj{(IJRdJ4r&}ZCdn_0ipm`YPT zP-IFb>gZXjkm&KP*0+j7(N7xcC^l>&reK{S@v6Et6@@1Y$0Yv!3Cinc z=LP(tTUw-WXRCxUt=j4?5AE$vEDzCf+_i>Agq03A+1Y$I0xmfw@Pa-nL&W?RYr``> z>tt4jfX?@-_I9IAU=^wUA}oyhooMXBd%1gbY&X8VJA<-_{0`js;Eh!XGKQCOP4n^1 zIh|1UBbZ}W$cwG8`=zAw-sd2{Y{w;f9y+<>dvHR3 zFt}J%@Rd}M-biTrO-VRv!t=qjozjPtS^RyF`o*UXTT|RrMgo+o={NqtV6u%cI=%9j zlD=+(q@*_7BvDF9>D*aTQg#kQvvulEEPWVV0Zos-Zka`t@LJ&BP9BV6sUB3tV|`3T zKk>BhV(KDi@IKPQn9J3j0xcU!A&>QCv<3Pzhk4Uu*hoA5nd7`4&>?AR{8GOypqIef zH<_3}ZRZbd?Wh2q?jHg}HNk?WG|g>qEa3jM`KgxXl7LlsH{w(nD$ z`5~GiTJ8t17fVBR${=??3ow=r&~WPPFJ->k=YxV_zP5!j)Dp4kw%ogsNU+XFoQ|u5 zf|o!7q7T}Iq~(e(_XL{l9uAy^T}~1lW2hszpsX*JICW2MJ@(9kuZt5_=8V(UMGho_ zGwDPOYWiePYdgYC)MsB+^?!6LXnp;^!UR|<*GUheo{hrAfB+Hs{VpRw z{*xt>6N1!O%#9dAJxV%u-e$6mxaWr;Y)*IZiaog6FZiQ%V=*N%&}T7(P(R7NybZiG zmZNKrHKLkE9o>lNoDBELO!0~-HP)oM)3#WrCeWq*vlqyk`c*YCm6u5+cY4R$-b?BA zm`hVu)s#$?1r>3f8b&ddpD8)F8tG8|{em+d3C%wf(C=$Pn;vD-_D&n+H2qM>&z)lG z_+!u9K^Z*H;fFGKGT$8;Jf8r+3|_t+md?fRip|lyU{y)WMwUi;AKh#7cK*Lnas1j~k?e zFJOS}Xs37P6$ zWiLwCHF(qvLGKvd_Id3VUqaTrsgWk6wCwbDDXo8tlBH5w5+$Wo1+Ofzye;_Ae2*rI zlGDASCMd^>x8Na=q(X3w<#I8L>n>n7!a{rzYqH?RC{Z)KRE z|G-XF>SVu!<%8>JffUBo(GLAX+Px)C?z|$yB|%eAIS)Eh1sb1SMyEIXLU1Tq=ew-a zDbEI+cG*D0n@N6fGh1GGzI(#p6TTs3u}pCvuqr3g8GX^M9O3?Fr6N)&3TMzPKgtO5 zn`btnTz9(fWAIGDOTot9aBrTTyw9Ex(R%^qxx<1GHyuIIWix*hpq`(vfKVh&!pk?8 zw-sJoPYQ^YeweK7VyPyTpJ;S?SP{Yjl=nJnr2q5@0quBW&=~${wojv&d-}}Gdp>jDQ0l*hXYOdFZjNHaAm{z4p0z)YWVt$F|N;% zu|%CucY0%lKXMZUL9e`nhflFq`tnc-?)(5$7f*o1VZtLnP>XDs9SFtu_-7u`ztx_l zw_y_YCjQu}n_P)&!qc~WuN5;!N7E`xC)oipD5dAL2%{8FBa9Ig^GbvMDXx$jP8tzh z7(`J@Q1Oh86Zmdt(Lz5XMBDgMZ{Xy~Tcb&juW?*Z@^Osf9E}*Bd&m7l};KzZpIxqjV=L9xM#6%XcJ?+6P$e z3Ax5C$MzqByK|Qh!l(VBsX|y)FFZZg2}zH)jDo)WD5_~I0HraFsx;^yh&CnI&mS(C z1&9eAQhXdY80}Gs)E@&la~eL3^ZCpLj#3ZF1?#HU*ld&k%tR5ym51Z3t;caN==B2($n~7TiDG4M;DtlK%t4T=?A4xCA(Kr{Td5vkd%WK;*}3_t zgTvd7rNY6a@>w6cP$-{ko!4I4M$ec`jGAb_V`7<+K6fq?P!5msRjosXhYnfcb8C?D zg2 zYf2$Qi1i@2xFE57JxB!Wfw?Q89b=r6HAkD~TI%!)ReKd7xn&Mi(pS$)?aWphly$QU zHc`&VN{ah7xNgCJ?XaOLeL;5w815QsNxh+tX^0kGASyK6^6%TR~U=WCAzEACKCm z9o(DW**7-_1Ft)SOz*#Cr)t94%uz}$r{}1?q1kej=s)wA*fiEEH@JR&sG>THMz z+HfYbiAP$-689&<57DjU5@xo|Y#(mHLDXKFTt_=I);wiOQ`4WGw>mv@k#0F`&1}pH zRWN1TnMCl=CW4((c91B)C2RUU8kCA$5tFf_8>0x`cUhX&IfK~Ca{{i-&1I>}#L}YN znVuS_ntrndrvVtqMm+3~+j(3z+wlfp|sCx%W!PW$YG*eH!nq~A=*5phAo$Otf zb~JOqJ`0qz4`pp`P&N!YYd^|UK|(?VI%Mh3#|>pH`8 zwn3n<)DZSZXE-ialkVn7<2nx#*$Xkt8G{Br&5=zy_{R)p9O@lqH`f!#W_sXjpN>T} zaaWd6zY*G??2qBgljpl`;zQGscZ@SJM#5&Me2O`%lB^);yq_^L=5uWcl+z1)_V&lOw zLuY92cRC~eq!pA^IRiN>&#^X~l{`M{{!-5fyI)A@KdT*WRCe;&ub1N7VS7jTBwMMa zixaChb%eLt1hjNn%z1(Menvqym4(744P6VMAT@V_F>HEAIL^n{%}z81rFMizo238i zN(1>@>p5GMO%+{7#-Z zaQe?354GF@I{gAa2|xj~3|x3J@YpW{!i7S|hHnlG^<4HT+*^Qmtz^Jt$e@o%2EF+; zFy0gv{|Uo)3NPHkgBaa|vyN*fDZ+FfkY1ht01B_pN7+q~APQ_Br3|1KNVEp%BXvh8 zGIwM`bO-;`3GP6WA<+NrM|W@(hCrb9tiv)G^x)$%fNdbL$E39~aAoqK|6>lLQ0@?2 zbnBcjk_gD(DOe#AL=rBH4CXBOh^G-4+XbuUKlNh;0WM;6>0f35xHzJ#-$z>#BoZ0W z`7e{~>gbNOxl@S@pQx@j0o))Ff-3AIvYzWv7zqI=oKEN=0S}IdC63^V)apmOb;u_2v7_dC+uU?mnIB1)OzGjg3Vv(V)4J}(xEK%0O$ z9JLKJd=?;v2%@KmQV>A}apxHcx^?KbkwALq8iY<(qQ@3*aCpNF-FE24%|Q_+lsKSU ziclXP8;+Of6dOJ>xsn*;(CyYtF`Q3ahr`9az913xf>r(3;qWzK9bf$nixiIn=Gj6J z?UO*7V{R~l02D%5jBy0Y1bp8jU{*+L+P4w;aVG5-p@=^30nbc&PmJGW5#HPLlXCUSnF|oAy3xw;ljK_8G1j2skn|FX{hsnAV@!d0&i9X!AJY2hzD^P zeG~O8z2_um|LiD=+9Q(2=98%zBBch#RO!m*(7;|a(gU}gmoR;J){bsJf|47R+aU0? z-(u&8q)|Wr6rzh|etPew;@17di`3AzG#uLwe4)un|3Lt3HP1$xnldm>8b(tT&oUGM6KGeLfouhG=46?)32)5_kylqr(P}^>6Y{${3q==k$NwNxU!HJ_`h-Q z1#qrcjf7A_R8v-Zdz$}Elm!Vj(qDfJ!3_kLIHtY`cNP4Y!M2cxl4^^9aheC-Byf>( z&U*pMI4^+yIpV$`6{MfqtlIx$$UmEK$^s`+|JlTxoD1PNvXhf-??weXiy78~KFDqKP0MC>@W4og!}egjDr&0Sjuvap>a zV2CBh`NB?F(~&0VoquO1ndPX8D|&g#L7Q`^`6pKzWb*n;1in9(HgCqt7v--|G)=GQ z1MVO{2feRC2oI>C%C{<8N41o$QUbGnuWVRTFN@~QG#sNQz7zC}7)&47e9%d>XJx>S zu()^l-~1U5z8e?IWIc64CejHtgTF2tE$bnt{f|K{N$~Ul`mK7Ecu~*W+Zn8#xZ~u3H*$vevUUDI=HaKHJ~kGvQ= zRn^7%O30 zhLAiZ%?(M4l(H}0|0!;^`bm1H_yQ3SwDEqRS~g>xi4av_U!s2-5AvkXW8y^3uJdI- zH`fvYVJB0o3F1@e`Lc?erTj8XmXwbeACAK-W%d*TQU`_Qr(Qsw zj@FAQqa$h0UsG#NdV+h+Nez9y5#5o-u+oSdpg6nX29nyh&LgEeHq0aE=ft6e;`oJ^ z$q$d;2*5z+=Of4qm)q@;<8gKqZjKhuX{u^ZWTV9b&4K_3O z0@=e9M?iWK{97~%bQ*bh!(Y!dszu+>G~j%0kxF^ciF(FTP5qVE_u=g}@T~@jxG4Exno?3K4t^SO5ae z%*;Cab!iARrmbYdend{7i`gu1SuoB8AC-pu=Bn{gRYeYVOXPMSWTeDCuu{rX-w-uU zvr1Gw;&w@OgzVYc?@86IwW-V2%kz#oAe|A?JFHDT#Rkl25)^%-JpOfqj)L#cd4u55 zRaMwe8%6?C%!kN2dc}shRLJa~Q=ipY4Fy%RU8&=DkOKudiMYLUSV#Yv#WWpVE7j4$ zS~KK4VV@#wH@6W57TE`S!?1wYs;XV#J4PfTQb+q`Uhdgt!$2SppNsxP6w*2}b3D^s z!b?X~XU>qYlsD~94%=+89ZVB6p<@m%=f)z|?$rOktP_tx`z`vT(GH$Miie^7w;qQ$ zw3py1t|!_j(RM-m4BED6|KbXAOMK~Aa0P8!e7of|4*h2n+_$N=m4y6u7!q&f$FV&) zqQ$IebUG#%;h+D^Q{0q28$B%H7V215-s!F45(nOJR*qaBazh~Pv!cW~JLn^JAMKe` z2j(n|Lh%EOw)a)uZA?XQW5nwsom>-0WG?7jJC|`ivME6Fhx5Vd33ggjwB6M(ujZ&K ze%f0>*8ctb7l5pxWC3j0w>%SHRxI0I66lK={HoPGtKGQbBAI246DaS7=;;~NlF+8+Wk4tk=;RzYQ(6Z zdWD-XU}hdUW-0kcnpe{d{rmhnR}`RzmS#!WubNSgYv)VTj6*o9mHfBC8rH8Y>_4k=_Y3RrfXhQ~Tv%x1dG=Kx zLstYNU`gkKMP^_>=>NFUG3LeYZI`6nvDGWw1BL5CCMd<#M=5F3)Xm^Mb=`Ga&-isu zP&8l{_HGTjWY>*&x%TZ+X}kvo!4?W@)PI>^jjZVB*OU{?gjOqV!ZQT?_G>eSK+(J0 zP&`qGWvOkf_|?m%YAY)^=!e_xtIQ} zO7^5D3zXki(DhN$C8@nmLaJNY6DdAT&~Hmp{hdXZy+LE3YZe!PQ+fe-j3@veqb~r- zumX@RAW;;|u?1$@VIfVqK80F*u8d@GvPlO21~wUsf5u|*FZU+nN16=MgKPt+oSv{# zV8eF2VYKHKr_OX`dcQm#eieD4Qf;Rd@5Lv%Q{}6{*R@p$k|p(DHTLJ&kiVVN9gI%9 z_NRXD0<91DU;gHCAu2f=^3jmb(yo|SM;Fd_&nh=&f55}n@i`KCcCMvb*fgCNuq^s#PasXnPE4751-c z)e0w6(E$NQIy@E1USec3itPBrLZIKt;$%>HUB#>B9cJVO^ZjnV5eIL}k?fa9;gMJD?UlCRx>acky{nzADkLVHduJ%vyRQ8*c1VB zyWO{yYX)LLibJxhB|aFgWK)8IdfFhJAJq<@6$ra zSb=PHm)2b(7DVofu*78G@`<`ExMNMs*`z{dI4e77QMW0mf(gu`9xZ*?xi<3@=a?TC!tLF$-{%6HB3ei0g2Wr1(tFUdiD(tfp zt&iHzPtg}yjD?DQyk~{SasHsLMx+E`NivTgZ?*~6sv`rn!nnvlooT8?eM2i8{g=90 zxDI79S{QY$j=iX3ZwN>K8_E8q6~>x%>T4)N?UpJ0ev@KLigQ)BP8j!4-Nrr?#{L_% zHUU|pe5`J+1F6teIcpWO{Y*Is9_eA`PwOpb&B|AamDA~>jbgGmMa)x;WLlJX|AJ5RKjIPwao56zgYd#3KMG)pv2Jzxr>|!$B zXz?^k=XT@313h$J&fG7A~buMW!==ujB6q}aw; zT+G;PV(Zu|Y**9vFJ{$I^}Xe{V=}t&73jYFRT!@~MH5JnTSbArcZ*dVwt_3ljl~)5 ztRsshYCT(*``;WWZQi0CJFfZ}Gp2_8D6M|ZXwhB$8m&e~>w8n{Yi94F)AtIZ5g}BH zmc1CMdZA+<`Qle{MFdj(MxdZdr+$Q=#Up2!UlXaS(fZbiT#iMmZ)2m~)>d~jys%an zjZ!OBTeTfX)LDf|Z9r3v@*%h#e1Q_r(a>gJ{M@QPGdlIuz?Gx$8k`r25_R2-I$5!D zm^#@fZwT9r_tjGet{kYIs?6&bYn$F)tyXHl`y_OMp#+BaX;*%h!d+o zPpQUhlMl@|!vkC$Amj=A5EXXD_gGHxnPkMZ=$}it0(^{~HO`u-yrSSw1W`aQR5>u-xDkI3QJ9811kXisfp&`m7kN!@=1ta@e?m z%YE>wTp^D$#<`yV*h))LASd2vN5mOpT+!|oSsbWNA*CqvO)&d5gA(gx#ZS|+540>d zZ#3ff?)j@vy<6%8+&2_pU#t@rZT3ymj!)3CmvgKz)Af6yM)(x9BN3jG4yl+8JSZlZxjO9(lo9z4C zT<{&ml>UO-6TL;767B6yZXlKG%tCd1;L0KD_~1O1da(lAc(G4jKXvlJm2!2mGS9t! zfkvNkRsW$YsaUcq3KvDaWL8>bC&^#p)7z|V= zQ+fSHgBA2!$jj&R>qAj@6t%3z3H9ckB=%ZRcA z9h>YE$zH>|$yCu*VN5j}9f+Ib7_8K?57iAuUVagFx z92h5^`VuT81?Pk$619qg6T8NdBc4M&Y?Pt0%JlnNQM4lzZ*j{n} zkEAOBYvStK_a+ka<1@a%i|9QydGMRnua_)QH^B!v-Pte)lnSg?N zl;uuClx8M3_yIx0S2eKCnNf(l%4*v-C2sd+%7zUNcm!dYPBF|bHAlf(0Y`b-rL6)- zfU&yQF}|Q<0Civc5|lFy(6?#2_9bukqlHAV0Al-Rlc{q^M~j{Z$*0z``Y&*u0qlwY z^3&mhk7cHM=+f`_>1iyC?I3Vk`l&%11aBtD0HzCkPa*V-h}KUSv0KkiQ5m#{D5vLJ zza1C#N@zu`PcA~5OD@|SJ3V`9{tX(Xv#(@#4f^3XF#R0^|*p zfY2(G)TtcIfgxuS!p2bS*?@o<9+`p6DmX*h+UKnMcCzTpWdU%h#fSXO)%5;b`ZLh6 zKjr6;kTx$^-HLqP=T0^Z(l8!9wvB^aw5*dPyX=qGH2`y#vOuLbRT?bXt`20ljvbfw4#g7Vv}c208H-+D~)gu6=-z)-X9W$yI&@;S96{&7_`40%f+~-R%GVm{vbLYdsO1@rS z>T45W3&rq5{tC>WLr_1>A(sW_TH8A-$8}5y^Z;#AJ8@n-*uPVug+ZOsP1ww+@6`t4 z`d}uHtPGr??gd*E60mL!R8c<#M+CjS2DspkwfNWZpN8DL=dO-tK|A1RT0+kt<`Ta&)U>-~uEW}@g@EGw6OdT}TPXn+bZ9Qv) z4eq%G1@A_`wa#edGH9c9U>~2cF09Ls7P;VG++xH}jhz0pQ7iIbR(ocX+n5?PZvtdVSFA57Ta(FqXDD=+a2NHhY4YtwQk`2CdRc~u zjyT_eAa!Pe@JzIdEfD@Ugc&892Arq2#jcnr@&cbbb6*VP;SV^G>wv8oR5m^~{`&r9{GL-J`gN zZ#!MF2-;*A<-99KYoSGkQ_gETG4tBcwi!JLz|vsY(V(Oa>h@+qfv`sy4!z@RA$lBU zfCyDyVo*vp--3Qe8ZyH}FnkQlkJjU}+N))LdgW=Bi*^7&z|;ID!hkQa+Gk}Vz4C7^ zndJekovi{Rur%xy&;n7OXSrmY3agbVe3^<>pl*o-wn)}%+e<_BN+4HDFwOE3r36;O zKd>dtH=YR}N`)+jfSi^xU*%IS0JeZ`g;(Ko+LL9$$~KPd3M55w&8QlrD zC(4Gw8(N}mD=kP}uPT|Bx?WQ{lb@OfLm!o$0}+-+uhs?66uRWL?=fxu9-GH%kCv2? zWVy-Osyu4KN8iN_4gUzHISI%+V>(ZE#0S&gr!3WTM3TeP0x4GExL_5wagC+#bahcN z2zI|U6`^Y_Z#hj84EvoxM~_K_Mnumk8Y>lKqwgDFEKPEBJv{WVHW^20C6oAk)kK|Q zwhyh2m$daz&Lo&drNR}y2?4ySG|D+<*lvER28L!TdyeWBOwezkqHd@LR8`oKEAfoI zc9U?jf485>+73p!@*JpawN&>y%e+}m@eXR+k*r{O3p+du0vmK@VdXQHGN0C-U+Xwt zXgOw2fRQR>yho$5sdM457^?}BPfqA*QjjPHo=(kwtY-BQ2cROe5DsJ zLFTfUO0Qr6vXq5ZdWHI-RBj+B`su@|nQ$K2!>>ah3gGr(BHY6@QO*{K4eI(Q3~CPa zahFZjqhOmT&t*DUya)96sE`0pl)N7QiW#jZe%z;1wi5oCT!X`17XXUKReRnXs!N?% z6I+MziZ2z~#vwrrwcVTL5r8qmorSJa#ZQHbcdev&x1fh!$1hIP0#E%g7}&P~V)p8_ zr@{Wx^Mz1DaxPsyDh(L#@`NxBgI;^HL}%g`gH`-Uue@o(4^7tlkkV8DvXc)poeMA5 z36e~Fm{qXu!ckzbr5>d3aZs&aOG-u>z)V7-k1gRI;zYYj=D}kzhXl3&gLD3%J&HL|=UfFfD2ssq2L_UMtP(>3s!*29pXq1E z9_zs!P=jVFVAW~J{k^%Nt3?pi*doY3w7y%Qz- zeXOZd;dxLru{j4CQx0&%DMAfaSr8#j2qMN()ox$HoNcW)S?9X)l_#h3M7=Ljl;e!7 zp|&-p2amb%n-2j3An9$|XX}gE;PlJ(1fz)17`Oltu{P7W0A{aQB0>cv5g{{7#y%oK z(k~*y%0-08m`ag^fc2Q1ktCspT}T2gLl~Bzzeo~Euq#Q>h6xx<=pnMxHU6Ftt5~jG z&mHMp85Ru19+o@Sxu9k$G=!5Skng(wBa=uF4ak|2hla~R?wng;U`{Z_HW$Td3L zT}}%!YwuETdbc|3tyiHQK_EJGNml{vC7>Dw1HtrSX2VS(XedB(hU_pOG*MW)RWa1j zWlWu@kN)x$x^XFbqJK$RnScnES@LC~UMx z)D0Ivgh8i5W@;}_*{X@RAm&z-1>p-P!!C4WP+it zKbSr@b_IEcL0gU@c57WQyNqDBCI-Vy39h9Av^2AFcB1f@&;nh4Ece7bH1GJVJnrn8 zt#a*2SD;5oZT}VmbUD!1;Cl7oAlQEFrCilUQor>j$=w-4Bu78{H5WR}{i2aEN#RkW zxJ&f*UkQ&7gaPS64NiN8a@N4^sjHyZ9kGrmUzNtMQ&G<7VZt7?Q3LHN`=s8PoNO%Nrl_%F1SGR&mZXXTsUGWJH0)?Jp*n5zh0A2A@=!(~q+QPw{9^t?%aA zDzEo*C&60Qwq-ig_Sq+ZQCSQ&I!Db2?FoH~xg4S_j;(wu;9xd46beF!`Yn?{f#7oJ zGLp-Y?WbJpRIJnNm_B|G^Z?lWKgf5IMdp1Y`6p6q~>C#)6_=R3M8Qy(vTOk zvJ{7>71K>$U}jzNi5WW}B+8(@Lv8zF^w+G1dUNCh!kht(S3Vr9j4Tzu4tlifFvvll zc3pdpUq@2Y&sPq@D~612TjQ#|nd1CRYfHBE-#MsTsJsEQnv>P-&JCbjCjODycKQ*K z(#rmM5<{??bDj`-50QaNzrt#tyD*4u9a~1hgqN_Tc{wG`7@oY=_k2nTRUbBp@cA;?BnCYd91c|y{8RVC{JnIvYp~z zT)3R5_OhH`S>lLG-632iJbxGoSuPWvKMaLXfaecmAr#>G!%~IfNnxsfz#d$=^x(cSU}a-|n- zB)Lu)D3=N8@xLsV6AFnB3xN;qem>oRh&FLeU^evv*4bnP#oiq`x_x$qZN`uS=)-ke z?e!zfU?GQxulJ+h9ubh60hr?(ekdO>N0TN3m{3rRvv+uJ0Q|i=?@IrtJIcnZGrUalEdXNH3UrGKJC?^ z74SPWx0TooA*Dl&@L&HB;J5sE5Y0K*M=;7k zqp(B~4-$B6!#x4K-`{GsL7-VP1|1_B!pT`cB?s0&;GUG#cu?h?ewKU6DxYhgv z9aJ4WEEw5XPF(9QW0`M&8QziyfaLd8j4p>2g@rU5gYw`{G47I?!@Q2|=%~7Bga#j9il$gbYL6z8=9INQVWZOJ^R? ziQx@wZ;3AM5n7Kb+aTOXQ4GDJA50rGC;mgy{ex&EglOR4B!>?K1*SOug%h8Z!HLVq zOcJ>w&~p-hNJ`?10^Vu?Gp7mA>P;D_QPh8W26M&4XHz2YpFn8FUqmnePRt?pNOZm=T`wtLuh* zA2iNvxFf6yl+mWIhY~;o{Yk(qpZVXIiT#cnGk)+8h)YxeMCE}_QLLb{8(8kiIh;gI zfBMT?YM3Fsj?rl(xnGWTsZp)LW|6ECJ{!y;Nzofp$pVwe2G&!*Uc2!Rq06c=IJ3Ym z?gA|Cgb#)=+{JrWAkh%X#2iuFg0S_zDueQRj>toX!Ek19=0lGVnQ8(Ilm=T3#$9e$ zA82D;%51nR$b53iz@24(&lSnUxuVaZm%nS!-ln#Elq)ieO zdCSKB_%13%OqmkCi{LvZsY5+N&cy_viK(0UyTR`qVPQ0tLs5UX3_idg! z5GsKW4vCsda8uJPQEh-pYbk0v1>t<_RWqYH0N4xg3ptG+5xuw+g4KfG(g} zlrr>wEmbIrUj+04$<%;QR2KG)007ibLH8>Mypnlx=^={L@ZT6H_flavO+yP6(dt8B!lpIidmGy-_-k-J(Q`Kepn(t@435Qjvttb7#mp$@&hdGZ0Jq!+9Nf+IpEw{akLn4qncE$xgznrLsT+!_BVbYF3 zBzfux?Pi)mHc5~B+WJ_0*Z?LDWjw4s3N;s|UdoePn}K^|P9_=l++~B(1y7pA*Jd*{u#E=5A-#54jINQN zowkNFi<^X-q-Qt_qJ|PFTZJfc{!D`AE>eogQZ5Wy(z4Zuml? zgK!Mx*}14cQkUaYB>Y3r%v({x!&WrHh_&K@IB9JL-At$R<-H7>TPz6U2FZ7infPotp5EBlX~=j4s@K>O%mX_^I3-8?4vT7|1+Sk~> zyy8k-!+qLN;#boOQU1OAE6U3sz4SQX1iU~GK1uC^zjh;(seR4VKCpM1AnBp8;r) z%HZ5bRF#!j83se=mFvQyn9=DKx57s)gD+3#m-|0G4NnnV zaGY1^VU<09`g%xZGs`tnKRtn0(*`f|Ig7!A^;11Rg2Bzg;Wq6hJ!Lv=NF6Jg_RdJQ znW~ENF0z4lSJ|f=%tZB124MoHYy<@Fr)QH<4IHE$H&Z`#ry~aUOh=ow4=B?BIE6wJ z_Ug6G+(`q3Q&o*nhIyzyJ#-lAR_#NU`V>4mS6L@3(1Ruwt9=B;`M&ZNLnuP9rMLyW zkH_GlK)2>J3#gn%R(l*`bE)Z#1}PZo5G&WH_dB|E9&|ZJD{o*s`85WCIeb#kaFVV3 zM*#l|fHo~hdrwu~A>coPs?KQg-+i5gG8oq5aC070eW+xt4pOL$y*PsLj9i3ufWs(F zn3{@-OoLOFWW+k?qxClv=v&i3Ja1n_F*-RGSzgO$At!Lv(XGP2?FtXq#|`S0O^}*o z9+uhk+6ORe8eD+ms=q8*Tk8g&La#62)UVdzBxkVT2S>eIugz0!S^`T=nNVucZUne` zBbJ)Mr^9C~#F9p#G;XLsC{2Qs2&LEcpqXktrF;g{7Z88bMllW7$44y#fX04~92@m= z6PM=i=&liiU#?fr!5pcFs(SScO=rWvisiY0`XKv0s0-YA zuG=CMTmmQCB~K9F!OA zve6kI7lOrobXHVdxYFv!dW!n@CT_-v9qWjSYdS3Zb1KC zCJelZqdNjoSom^~B?C#Hz;JkAuC<;6f{uR9r97tv>zvp^Rn;z4?1jTu_i{iJdu#Ca zNBMA2YTN5#R3w1o0q+q?a3V3aZH*XNfO$qkp0!*ZH&@olk?2)nKD3Pb&JMYfcCE(x zhRz=b%U;;1nlTDVvod_FtMjw{80{6v-wfZ=sXNaq`^xG3N7I}p0X~j>s%c4kew4o` zMp#Ot4HopXK)tN!vy;qg>-q)71ky0;2wftE`+T7?G2(mfBB-JFU0>n zFZ^H)&=MP2kjdnRzg@zuoOc&S^Y4hj4s=0RRp6;N(o?k?QT}awPEEYjKAEUigdYdmKz}mTX zHK4wu6d?LFX#fh89`6YA;55N&B&!6Aq)*)rd4DA7N)^ba!i|Z+Q0W1&Cm4``kfVLh zb%Bq!NqH=FwL(19$Hgy#Iq{(~F{`|w$H(a!7%})o0Q(=4A>Bm-K3Zta2a<*}5mDkg z0G|KNa3)G9)1jx)X5}$fdoL3~JU1G358Y3W-KH5Twj>FmwI+TN&DbY?5G^?NGonY( zb0r)6?}I@DqqIz46}QaVL9vq8&U)nn#qZ-$!TrhSNT*fF?uZYwa#*YQk z#_clX?a)?m zGuz&<2-UnHY~PsS>fZ8`G_!Am2PsTept#^3P-(~%60R<#4);{wqfiYmYnu*P<*6!3 z^yh$+d8=E&Liu?6vc2H?dCM+`DjkM9o-Ij6b^$k3{ReZG`12+D->nFBNL7QSeqW+7 zT|6@iEr%$Zf7QJz15o#v9})ft;a`vlmJ35@<4@>uFpE6^W@iay4S>m%nyd}gt<#({ z1zx+dvJ;eDOeFX;@Gd0Vx(leZyHFD4eC6iev6ikaVHmCSMPvX|+4Xw!aSdFhTc z8rfmK6!{k21@s2TJ)uco-D>~UfkY%GY)IN@L-AeP>i+A&v(QL*A13Y}__CO|2dn^{ z*_W$VtT3B=OYveg=+nOI4!Y#^&Yj;GULF84rBZr>KrZH-3AEmSBqLUQt&`~99r?Q5 zrxJXIcBy2(k2&5p&JRKTxLt&TliMxWCdhpRpouvYsUWk`+0r6-y)yTk7stP5)6Ja+ z%$d4MOegOdsrX7Ae+rwItz8F*GSC?60GsRs(O03ki6<0BD`;iYs611sX#f!x)uLAm zAc6*%Wze@ogBI#X{*dlS#xuN%W^PnX@~7ZciJ zWmot$fZ84@I|DNtXw}Edj$IeYG}lFMd(`dKty7@YT@lsaRYPO`n^m4SXdm7dc`;>b zhB<^@+Xb!IK$*^66-jjlXsgFX2AD5EVou4;Dc-%tri?9_P92~N zM>Dl9`ZZM(_4eXf@~S`oxhbEc3PZl1*pRIml_2$gb$w|Jy}wH&*qjxtvKTc96~EWNCPps9HXc3t^gjMq{tLBBKqq5@G1!O8UwT5?%50O33!Q_fDq zxn4Nmc{PfCS}+_XuD$6*jJIGO$UQ+ItrG=%*C0B73W{Cn4MRHWa@2=Qz@xkTP(Grs zMIcFcEfRfzq@H?2i)BViSiJz0p>=3j%GUpaUe5@8~}p33k34G9WSuxBPB`cd$+ew2PW>T*CV zrk{9F@ISkeU>ZWT5K^}j#rBeE*f$Hk3eTb!o^3K3k>9%o=~ycN35BFj!ci`DdED9n zC8n<}LG(yK{l!%n8OmHHB@qK^*S7bUV}Z%eLe5PA=;bt4*gk1UA7_%m#$mOO@Q?b?85T!Ta1_qChzuR`G*q6>El%`30N z3oAkXGZB4vJC>XLSFv%AJo(7795i5U*A^n_)yXgJaNU^+0_M?;5fB9h>mP4IdX}>N zTaARpXx!S{WGTWQAYvy%FD~%k0v^r09Cg}{9OsZdt`ofZ0BTWTiJ~O{?qSLOV|Mwv zGegkQ8*rdou!W09hmLNWFhkr`5TH|a#(}X z;p#8U!gv9qQo*x-5yvk17X+;e-BCFBa0x004|o0%I24E%JorlBV?k2)2S|Nc6uSXL zur8cJ87%dvV+j&MDDg-kbo8<#iGt{Ra)e7EdzE`Q!apNHDAvJYR)!#H^IaU9-(U~~ z=l_D@^8W$%W1&Zk1L6eiDSP7u4qQ@mbL__zkm zfEKdSBgJur&65SvrUVR^61oc2Er%2I--IW&6v~QH77RhG0PH^*nuA*$e=ex^Lyu>L7ck?d4AG~Cxwz}w6G0b>m~Bb1!kR!X8$@8s%HQ6j&{b@8wJD5!SQ^F zyQXZMjXU7>luew6`UxT;PU2t`ETEAMgXq=JvgF5a2$*L4+kYfGCsKmXuo|!pCWrnZ zBVz@?57x-s6EsMtZ8bW4%bRuK#<*M6yTN& zPS5whFJQQq>K%{>p>flGXo=6K*TQ8UF4+p8N~dAA=rN`ZcQ5IPF!kl+p<`8@vf610 z4-e_`jX-QJsY{vxgnRCB-8l7Rr{?xBR_|2&&@`Lzj5%+RgLCtzB%%8{g(NhE(lbbR z8$^DE?HG^xCwcrD#z0_9mIAndVcHXA3!M%xSf${_uDZgaY0k7);@Xravz;atxJ0fC zx_tMK{VW6E!VD5}TF~`dc4W{jC#K==-g1T){;o`FCXxe(L9|IGSfod}Rf_k5kSi#O z8_1jcm@OYIMDP3_XKap|5vL>lk! z2{&FW+F=pj2#b^j&QdRuYP`sN3PO&O?~e`^)C@!6L)P&d$!1~*n)q89Cmu2gv0Q`5 z)dUyeavX)ws+pB0P+mG9}?%SQ=Ulu<)5BN>%ojMdzZ zz)4`C-7Z#~8x?`+`w>{t3}wmT+% zq@J@XfN`0C_g0E(Q-RXwKA0#Zdo7>>ips_xj5rLzF#|>pl3EZ)=ouy$NNfQ{UTwtZ zUNI(d8mv?0gK68G5&zxxF{=`5--Ddl+?^)fT11at3j^a%1MX>w-eiUVrQ9Cht_CA; zWQ|tvO?L=@TEhFo9AJVzxsA_ZO#D^LB#OpuG=dh-+&F*5OQ6{48|cXl(@Vm&vNH z=m#`=s30kuYkm!tJE|)Otly&319bKFP}jBrtM_Tj@&Fr zPj#Od`Hdjfeb^5r(e6L|PNiIt920M;UB0`7FpA zuhKHa7Kr2rsc4RPog*q75HG0BQ*62eSIK9^!&4pt386smP+0sYot&Mjk|zp<81*7) z{;;E#!gnFMeM4xk%v|f^GdBj8;MwlP^$2ak*!_+lgOW`-FpxwpWYE;r|M7aEmo=my_@eMtm_)i_$u;4O-9y4T2{XbpSR#907$- z7&PJ5G6*b619!!*kLTwofIbQM*Hp$nTmSQhwFFeSx*fr1wEirxd9W=XptU7Q8Xd#0i~k74 z@~NY+Dub~Hg^t_45s!il@N;$6nVb6quE9BX=8A&ft>`cdO`Kv#7M{o@`dg9>a1(!+ zF|E(VRu-=R>vZ#rzD#4r3e7NB-wTCdP>?_&J_HJeUbhIoKnD-w7%}_`@X_5G63@Uh zjeKfnzeR*zKSA#}v{)YK@I|Q;*UhZSS1lQMtnjH>Fmpa~&;HQsU4mn)KY4eJbZ#n= zrlg|CWcVHdq zEmf2B##4eXffFKo$AoWqZ>Xa3^As?wC&c*x^NKDym6H`l#dP?Rt1{xN>m6YuNzx`# z@p*}#>X|&I&)07RLSO5rMks`+!)J=A5TW5XvGZ)XZ?ZTJYI@{ zXuhKygXO-;Y2U>nW!{U@zfWpWh~d9<*OFNu%#L#4X(v3F7Hv585%a%TnXaK|6=-fnpYGM1FTT$P7!EQ_J zp_-brDO(WP^@Sw8V&234F-+; z2s!&IROll}EO}}7^4%SJsMUbWJ3e^NAJNe)wXI8#HVcTMOxH%0R2%YiG%c38XfX@4 z%@OB?)02Vqa$d*+{#JR1q!aFtz_@gZV~tid%MriuYEE;9lwe8><{ceC`z%p1T6;N? zJog#PY>Wpdo<#haH`_Y1vLDnmcXkM+XJJC(sOk{P7Ip|FYx4pg3j?q4pz*;ynQl${ zEfb$&y?4S|@SkY5`wE~+2a&cj&1)9Sb-DX9Uc8V<=&2*WebG~o>>q@#df`jZP5rN9 z?w49nB)nN=BD~6|kD&8@#Gn9LjJEnIH|+Tgh0S*fGhOb5`=gOBEw%(t=hND=bAsqG zWPpmF6aN90bUJ3?nSo42^v@^Mlijb8D18&@w*7CkTJDE(!`zFag|mK*ogKYLunvOD z6Tzf-1xZfTNd;R`vL;&CfUKeol0k|k zmmdf$Z)94hGSy2z$&K6;(D|*d4o&YsdrmSYP9?7hU|17PW< z^9C43E-~g&*?@b6;x7S>oNz8wT@N~>@47_B*pnIn<$edCj-v*PJpTc4y?*V}0$S_|zu69~-c zTQXmUY@!iu2{zHs+{BkJCxTA0<#OWwf7ez{Y`KyMXvU|)PySV`FV1>7{Vy1Grxnoh zc?B@7O>)2g>wgdL;6ypa(5ofRt4AQ_@%jb3OmZ?B^d_@h|20d_eFyM+D!F8{*n zL|7d?0?GHRe>SLM_lE%TBtrD>j8%RhfH^E_QlR0L>)%HqA!|`c0O)(2hC?hIfkNo% z|NBV4AAw}!04Er4f1yr8|1NUG9SGXEO4C`@M2Aw$eaPc6QFHm;vd<^pdv!j*g9QM| z}JFI|=vwLpqxQU;QpkG((E+jHw})B`gb(uxp$E8Nc(Y9{9Fg+sd|LcNjt64hX#GghuJehI>{vfCkUyUo`73%f zUXZ4%g`dp4ui3rtO!0`9yK3C`?mw>aW1B_O&+BFi%U_<;EShvau?Dm-Lp~Uu!o9&z zJ3;UC{UUkQ@R$NxQrAE`*Q}PTlb~|@1Ls`OgqhvHtp0LY1jugWY?zNK-Q(HVYU0hG zKI?bCcki*6i(-dQUxoI*Iy-@Oe$cp#)(_a{V_Aa<8Bd-Wn3?j)DmP z+e1L{SQgi{P1i^Fo<;J(!5AdzeYgV67y;V)1+nfsu+bCPXiJ5nb5^n+eeme!Sa*{g zNp8$R=BGe9I2fB7>;4J0`UmKwH}*%!q9BV?#miq!LDcKVFBVGnZ`>t)?jo6kk0HJ2 z8umpT3t&Ews|Tz7lm#`OF1hwqwhwPPX5-F7QuBEG!e!F$0udXrc0P(knuo^kpy_-N z;8WMF|$8F&p~#AB8bUY36$l0F}IR7a`VEBTrQ(3Ml=ct`^=BY!9!Qm zF^!1nxjPN}lQH78L_RPaAI7HSy<+y$^ExJc&CpTHh)GoSUcQ^G#q`Y61Z_V}m?2A| z`(OP^X0?JZ_7L>QQ9s6}fQ;A|u!KlHfQ-mRa(B2NrwZ8+`#wRZ+aZ<5ws9Ffs%bR) zpBf!6m#9YaMt7*u>X!*ou>5oa;)+KLr;D|xN=E=m z3&M9c#R#X<5Z78dq~sm?est>QUV{wyQ~LWC7Bkw0a+cozDq^;7GQE;(1rY*8g7m9w zC4`#)Bj}urYq#jYAQ;xc4kEKot>zWgr6oA=2d-GszVz`Y!l zr=W@3Arx#=Y{dYHJ{!sh?t@kAesRYrnjVV^U>9#5lYp6Gc>-3hfdzB$&I}ZtKLauB z{Kk^bqq?%*8Y=!&J60+UovTY?Z1SPPp79@#ms{# zJNU>J6NCj-RV)cY3sA1SvSX0FRE@TvKohp{8M4ZbzqxPF4XS!0v;jE92fS!^+WV_e zu=F!t^j;byYjW;?_{S=C=RX9R#Gncyj}Lq`ZN3dC7lA1Z-X$_K;JK7Jkgl=vhQNQd z|yM^^C5HH#XjczzKAoSqBt~Mx=~P~efZY${>r_Z=B0G%C@R--%HVPEV7^8qzZ?Wd_v@?COyf`7W?{=D15$KE8z2c*RtRN4C~FwIKfr)Q9}1ZJw>}ieYoo70*As{o z+oQi0C@NqfUk8ifofTip)8QV~zY0`TwQ+2A-0K52m;D}F>BgOjZm&ncJ?;#H$%K3C zKaahY6IZ9qKSauaul=PLQT>jU@Tt;b%AxP}+CMM6X1+Ne~z zA;D*NA|&>U*A_D+aiF<8;%mBZjreaF3#}RqF91}%9jY2p5d;gtWa#g>VEaFv_n%B>7>Ap}hW;-dRykSNA}qp{TYfRFl+JLYdRT8}Kx zZTBLePpo${rLjJdf7vpdMST(d#lo%9BvC`e4)lc#E{4_?E6M^$Jc;N#WRs~wc0?R? zIKgWx1>M0`@dp4zL0ITfV9SBfiQ^&*2c+%i)$Qt5?moNU?`5$L4E@}%1Q~ThQy>O? z9UK!4^c_1 z#i`lcC9MIO(tb~;MgoxWd|7%3T@=sSX9*807S210rYx6@w$}pF=N&L z{arWhg$OjDOE`wHd?^Smjm@++cLhQ$9IgkEqHW6xec_EXfl!Bb1L^2ARJC)ft0&~T zz_Bd+dLrJusDs+)s=Py+xC`og*<4pex(;gH09mva=%+o@n>E7KW)gB(O)$(uw*dTk zPss4(xFCG;aL4)wT6}S{uvf5G+50sN@?M!e_9ezI-bGeyXt#iznc_X)!rgjWph`r2I;C>9gFgEQi1eM z#>#VNe2(6Ni|~SrLEZW}qBZb;yu0~`*Sl!3@uQXKntN~2Xkv9Ka0%sp%^Gk5+xG>+_C+!AlA zYKICYZMiTub~~=dv@yxxIMAr>)#E2MJ{{VoO`+PpQfVgO$4XC0RJr~L5~}pL>2gpV zbwE&6@3>^(mudVa@8vp1!q}$uP{2@`Y%!=PR{5wvfXW3Zw@&az(6DU-OiTr}ZzGJ2 zpi-h7pc7fH>Xn0> zXIfoSQ`=w}Qb7*R_A>C5?OV4RCG|R%tw0iL1(I%Efn+`qsNhN;uJzc!hipTc$$IRy zp&~DU;ZKf{wf#=Lb{Vb5_$l1_`9}IG3f%){Jp^??RvGW^T0owaNma&kf#cK zQJr7E5#)>Rs4}@zy(Y<_Z(d<|oOGK78d2J>H;_$O4w@S9*vnU(#C1BtX@f>3`nWmq zw$tTVXab;c;1Bcu;3#!H&eCa7n-Z=kyqv0#T}e*ner+K=$q|c_sDi(u(CU z$x&qT(p4}AzBFE~S9Y!PBI9x9r_TR&a2!b0;ccI@Xf9CH95{~-faANHxEsG!M2+2zLoF7Lb z(>-a^t9UIa{r!C;5v|84HJCQ-K~m#^z4F^b-#V)L@f!l9_wM}T3l1fM&JUbFkE(K9 z9EIW+3PS&qS1I02l-Q#uGRA{n;MlD``!K`Xt-mlT>_D|9s7W~th@X6vU0H_@L5Su; zh0*T++iEO1m_egGMGep%c+t5-iI82G5((4o@%WTWxLey&B7xQssB9S}jA%$8%pIA0 zMc*6&`g3ZnvT0-(cfn{~s2Hu2bAK;4Lgc&dWwc>hY|+3kNJmyazz+)5B?=?u!!!}1 zhe;EUqCJAx>Ur4&VIynO6z-`X0Zg(2<|sAABFU2<1Y_Z8Zh$OPbLv6XV=tC>PJ8x8 z$UTcpq7U;Vq0Y}c0?;~)-*VXVkdme6^eiT zS@6+*yk8L8nPCC4m~iYtBv|<;(|mZcU+k>B7{4X%#iwDO^zXw8kx&Z5?ex=Qq`C)^ z6x5SP|CNO*!|zqzc2^!@w(2BzAIuf(?ALz^kg5bpe4^K}&2Ij~iJ`h*Ve{zDVB+B; z`O+&e+1d%8o*^KDYre8!d+j~!_!d%<?W{z0VSog>eBd_Y3-1Q%n z1dH4vM&>(ij+q2+ZmS=vBYGQYC^k@4yO5%Se<`dQvNFh8N2X`;;zM7*uFB-gwwb$y z&A7h49>jn&AT%``@{(X=+~5hUz6REOZzJUNg_eb~cyaJFUNZ!U$<3@-jovnK1!8+Z zGYfi=!F293Rzy{=nypt&{GRSc(z}o}qq14#UT}Fu*bv$eOQybmvQDJ3LA?Z?arKky zk+{A;yoSc3$9w=bS;Plsl%S`f^ytzM6gF%*Seut@*a{)^RP{064SsbqEZ_jndG(lVfbih*sH#mND0jKfO1us>g`A|il^9vDvh!s9 zr*8msY+sPcXKT=Gcq-LMgRC&JHM7K0yq$2E;CAiX#z6?%x8o2@hiM7&&x&@9L<;-t zg~$rOHnZeHqyo0}D@vwwbno$ZKwJxg*dor%ZjMeRHCxeRZU)RztM(!abp6&LnSjzzGGLvg> z{0s+*GoG*&cLK%12Lr{S;y^JymLsKPpx7Xzs{aZUhl~vrOLial*#+EFb-kWzt-KD; zJnJ!9xe}^JN}WRkFbuPPrV-!Oo(mIqh|fcejdmVb7|;ov`_NZ%;`W_e; z5Ss<21gddEgnVk^S@1FPA^v}n;ur@h7L4z;4<*GjDB-AU zf0APGB)FS>>7+9ev0RhC7{^Pc9Sy>4h#~d34QmZtQ`b!@CQMATt{cG*KJkI04-qTs ze%s@tiRbm9VriB+7l(<5EHi3sRnT=srT=-tUwYCNAQhkRpWOt=6n60nZL=#tpP*Ov zxdO6Dh)98-;e(>)4|mRV1<=R8sT8c8nXzwdXH$#M3~Jv7=C9@ex!u1=FzheOF2sEM z$1a3;Li7$|@W6s~vKm)FQYN3Y4UHt4fJ1imFJH4>d68>56R@PA4PtMPp9zpIJ`)f; ztr!KjeoguoBS}&*8vY9^Mk+5pQH*@*zYA?Chmg&31b2%6E(apot$>hwTjzmZLz7}0 z#6HF^^REd6{9d#~j^7DX>+brFdLl=LH8<4m1kX&p^ky=~(*(q`Ds$&+FbkV4#M$C} z7|XY+TenoCt6Mu)?jI_4*()H9HcdfQrO-rCJJc(xYP47Q$1#2yc<3G)xaNaV^n?KR zz$w2Qgd&?4@HQ|{5$F+$eRSHV)V81ML7(Q7iEHT!+F!unmOe@nlHl`&3}W?;XxBnj zQtzpw_6fm+QiE>kmF;45s8X^g2|UZt$d$M_pr*TIT`G`4OJA|pL#>o11*5C~$I*2M zG;zNF=e@fO=3Np-!~mBNAt*`$D4?hb1PqD_iU?{IL~*vFfTJ!DqNEYURkgJi_vjF{ z?gc7{RxMgrtyT1^_970nqPWQK@%Kl#dymWAn;Y+Vp3nG-Q{AI;ICJPr>zlc5+OP|E z>F~l?v)!1a7s9JUv)wrEmkyjt^VJWD^mxF2Gxo>=w|T)B@WnGMaO;}ubPuAcS-ev3 zVqDdRt2k>e08QY*{w(Z6!v`4BT!E=9jzUl^xi6BxN_Az*PIq%W;JdIj1bi3N5ZR2= z!Q>>#LHZhAf}tMpEHkL&Q7s|wT!Ju!MNsg$|KYG`t8Ce{?yp?Kx?uo>J=ut`@7U`& zNPIG1KG3c)hd#-$@Ym=*$Kc4QD)yvr+0~-kNQ*n<+9FQ0-L+jnnN#!*CRb3?#gf~8 zwwuULq~Ju@X~*^NM<*iq`yTbn+5TI?RoTD6(IdhE=h?`JYIyy<$qwnP9RbsdSE* z@@)}Q@&5`>4~QvJdzOf))I=I7(d{`XfF_DSDgH!K?@ArV(R-1bnIHz|E<*)QU?@UW zV~C96TBKCszk=^?Qi{xm=w^GK(Vf~>BY#s(Tkz@np=P|?y6(va*3xF{z4~An7`<@f zwZI3IdHJ0=H)XJ1?0DJ#sb`aSyy(cGFwO_UfMdg8BO>voj?*uk&g?&;*n@*;SL4sYq_e0i zCaxBdOYdcNL;b#&C?$^*4HOPby~6PoPi_;?4^$UjGp_B9jp<^5r<-US%9%nj9=f!K zD*Jmms0$T1#*f8gqq*aS!_ahzl1KZvVSr6t{{Y5~>sy>$7?q3f)p_*L?Xxc>Y=p*O&9Gb<=j2T^GcY`J%XP zMH|tJ#DBH==hq|P2JSmc+PpNcGA_K(Ybyj5wLIKLeC@%GNiEynf(2&^?7^W(UTmA? z+w9M+Z1WWedyvC&p|qm^)#7(#*3;tm-7Kv679O<7*1S^4y3p#(t0|!1+aTMYd#|38 zW1s_J3rO54lnq}^ms5N~HZwUtw?KuN;t`9w!nigJguO-7y-;1#5ooz>s0*wH3gR3xvFuXr{{8~VaK{Obdjn7auUu{m;#%O{bw5~RLljs2IAwhE5dF?+{~S!O38hO6`5kOe|-+Z z|N8wLc#12Tt7L|X%)k^|e{2ILL-c_)s3_XdRSnw-6YQipIflYisy2^!gH0i zFqq!*y8ai07O5veP7~fz+nFg4bZcbWnidbk-+1n#W_y2?Jzj~?-_Qn}m=0>OzG0K^ zs&XIEMMyLKQ)tCYN4`*@mwH}4xRYHZFh3upXW~`%Axc!SeTB+IUxHW5m!K;D64<6| zKpxZV)hf{1#ho`4k5*xUo`P&sDaIA%=Rx;X8U;M;iwQC{xi2%Al&_FpPVM-*fk*;9Wn5alXF{dVmK-} z_gW%(DvYje#Yo9`RWZ)^=QfVXPQ>e9Ania`VGYtO_JL9%X7lGv9=y8_<~FtU7ohrYODIe2OoHk1SP3~|_=y;o=bj&-T5j)*4h zvDFd%ZM_|zIOvEdKqczHceb_RsFVYL@%!#^oZYvAg0-Rfc}OP^7sa^t039V0TQRjl z<$IN!ZFRDT@E=3Hlg3#hqrT$leyOs`Owo#>yO!KpDikX{8}vCRxi7R8X*{K$kg6z5 z9W?zJYY{B;tUG}(L2SvrZYGa}7bo#Cnu5>vLJW6S;&H1XG`#9eHKh3Ut%mR>TyqyS z(@|H8qW6NF*^593+VJ9Z>&hS8sv$778pI@gYw!`K8j=}y@ROfF!C;(b^@*PVRi<*A ztArkBT6HwNH=vrci*1-i!55{^2(ip%1`z$8)P!tH?o1B}H>~t)xH~4>hMh-(s_+Xp zqxdv8@=RrEl8TfjDal7oG(LCtKwW({R;=Wz`{_&TnVSs%=$S#xC#c>>L;RRDn>*F~ z9k)?b1&X{)80X#u3aJG;R#rhoo-OVN2&8@hAV_$q0-ETlK&}cXj>5eYt1#nrC?y*7 zL%F=o(02`{yh!J8XH5%9(rrD~Lc)`3TS!iL&FK~*4sUI4Aq<;JT#abtDj7(;dJZJr zB}YlpkH&qc@KGDlQ8I{l4;e(Lrsa@IyzaEnunG-!NGb`lJ{wFFlEFkX?C293vSD=d zM&Zq=R1$71ucEl1&wm3+71fcdk_OhM62jq^g0?-Wq7(qaigg?2NX5EUGFjoprz#n7_yM7kVLhg}`bws_;$~|4wBxO4xxlSt zT-I*)9{!qu^n4HYMNNdnb0y;$ArY@-)Enz`&BXA^nQ4c`YFj{U|xgV{RM>cC#x8$kC6HA4~*9jZ7dXfaAQ}3 zOtd>hROP|U^q_Zmq{e4svsmiUAK&Pq#U3qG7Cwje&n<9lfznp+|1EO|<^9c@j8Gb{ zVoKwc3>mNPFMTIUbWA(Z%ClsmN7r8;PxRRQ12&LrA7KNzf%Ala-Q|Axd6NVowxc`? z7eJ~{88&PvHi&g_Rb`*746Vax<)GFR@Ntnk`T2YI>jl^_UKf^~z=m;(>W>h)ktcy8 zctQpCP!ZxcSVh8npHLC^GOPxL)u5Dw^!>fd@Z(C-_1i~EvTGBbf8j$se^ox^$`djO z!Y3W!iEB7{6G(hIPdgq+M0%Zf`(i6S-!&_GZdq#AuW;VQAK%l!~d^ zQ5WdciI}H(?E0?}!K`un1L*D7WpT;`{^E<*N=}R}iZT8G>IZ^MuNEm5;?^)fG=A?MB#g&(ogc__mgrRjaG;f3v3Rx5Yz87m$ukuz6Oa{_ z-h1P8jN?k|s|uGzm12x9l`Z>;(lv44U2EZ2&HlqQHXWmLtLC|a%;FFHb@Wr@E*3K6 zu6ruRhf9xb{nlVSYCN-2v#REwR9w9vn)bHpYL7gdGR>c<-=S6ebdC{hE&5@NF zkPS~-QJEpd-Lf$n=C(vOssrk?%;ZbzvBSrS@1}bpCJ9EZ`>)j0qnPZ(j-XCH;1YG%^fEyZ#vIY*#P50%!vCNfQhAEXan zzey>GE3IC9@Owb4>tUKIk7O4CBj*-@JPpG!_YC67g$T3CW+^Bg#+ChYO6LWLII z3!wtjuTU<~Gmi}>B4!ha3K(gFykOY}rxPJhC6H9ZmW?if(EskD`%UIf%3YBlolP=9 z)-4nG!Py4H=uhSklKVqsI&9c8p>nv&VrxvMhjX2$bEOSEN{nynFbh*lEx{1ej#o?* zn^#Ft&TN{}h6L_u)1i18-p^@DN9otYL|==jEDENIWO;fKZ+&6*53-NB1;hTv;V`)c zejRT?p!pWKdo7SoQro8u2KYAG$1(^)Fa0wJ0&&GX^xa4BLhHNXLG}qdA?YDo=81Q> z0Pk?h2yjDC{S`?H`NVcaiZ5CS!g)l=Ld6wR9vxHu#FndFC=(W zn{x2Qd;eLHuzIxA)qfxk($KZa59oSO#tWw)|bY5vY+Y0E|%Daw_W(6r**>^2rOa`O7J*JUTlgRRp`|@5XZ!wie9#T)1zJz?hC%R^~SUc zQL-cUPKc3Btglal@xI0H`69)w#hP2SE49|Gnyg?~0K;K~z2VGcm? zq!x@I)?*ChJl1pu+Z6N_{!$qblklmhCGC5zqt~CnW<0L+*2cNoyO%{ax0}5PVZPVSZ}7C;}%vPmD4mxHq3@9h!u-^&)y ze;;*2-GYDXYoAYl|DfJdF@wUH@C{qN5$dPE*T1ibA3;|pSk_g{Xt$gqeZ**gYb3RX znt@cv+q?Yas``4=1V?_v!SuYy77=FipM)2`?>g(Th23(qpb3F%q051B-NQCkNkzY2 zW_Mmj=}LU2aH{T!50q>1Lei79jyhZmeu+W0_I=F{UI=4$wK{Q5pNwhzQ$Ib8awH!= z37Td}ORwsBRDkGaD*l9C=MClYxH2l{p+2$f*}KLeMRx|qUXCjQ)jQ373GwTZV!OQV zf4gR))u{5c1dh;t$TN?1uqSH@rIc7blo%m=dZrP`)k%p~XOXL^I2PfPOX8ox*|HL; zP_eBQ4H?EyaZ+&zyT2@K*wpI8^RU+WFZ_n;*EqS6)-F~Xk z{@DxR7x>*Hu8i89Zo86Q_AIfyTk=Xb$RDF=wpUWASj(aW8)(Wr|AGZ(9rYdxj30Wr3)3b1+@JfoiVkf2H_c*I5se*)10f z?o38kVn=VU^$i)+C~EI>!TvV`jvd&#>P3}UWpr)IvvF~s{X0myizfE@0U;Idi6c|K zQ}=jBjgLw2{p8GTP1v)g)j3O~@uFM2hvUt5X=?PRI60a9-3-Jp&gmzGpj5mC@$hD7 zilyYKr3)>O@zJU~>=HA)9J1eY{l13PFL0Kl$JTAjzl@$;lK#}5Sb;)NPwQlFemrZu zElmD9?uoI}pUcCvwGkJWhv@*K6j8notNx4W$)$DDf%fsqBCcSIN9CWJ@r^{A5yLmV zf-1h9!5ChZJSbom3AP(3=JfV-A!_5^uvDNP%1wO2FB{>erSvb_68hJNX^LIJT7&qC zI4Fc$FRtUdS9V$bMu<c^{*=Z;Q1WzhfJNX7g*^kOjHyYJJW zQ7fxzr)0_N9&(PwcB(fQw16Hjm;Jy!G966OhWHod=pWq++$Zd!FFXRZY+IElm)Lb2mp3F- zABJ$V$Ktgt(;4`Gw;l@a>F!#q%wNe%XcE;1t{YW2n1*=Mv3pL(fU`U5ejh)~g^%hLhblQ`Wao znCccr<~f~tR)i$hvt>V4dQ>JlEfxOT?!>~wBL}ob4A0TYDnTqlVk4`&ML;A zpe$;^k*cL)F7}eTE7Uz8l@K&~%YFo6RLsTU?QF3II>l|d4qiWAhhW=1#GL2DX2BO9 zM?6N6y)i*!t@-V_9xrZt3>+*l;ansv+*{k+C42j#BpgmY!@7^Q83iH!?^0RnS?uM< z)#5LGoM@5oF`(KMfA7O1m`Jyw1zfoJYD5|+JuTm?MzLV+8H@7~I9~y@7 z_b1L9{P;Zc?5KYVH$Lzt*T7g!$LzFHiFWt&ihsGyGqil^$CL9l4~{!kB4a@&84HbrRmcTUhF-8hs~jLTKp0UQ+b|D`E)CJ`oTi;F@rD7BnuqjYqV9cRFfqiP zk)9Qq78sq*wYAU$I0G8f1f+;j95FJRL(ibbI!fLjh2wX5%k8^BukBQP_q$f7iHuR* z!U5iUr*m0)#9!yB(ps`DotyHOcn3Fr0aj2SKJO(q9Ofk+VpHfF^urRbK%=AAsCDXC z`{hyzPqeSz@kBjF`88D*`a4P<4!(7GHE_2&6S5j)m+uBd2#MeQQXUw*Sg+;D1r&^%4L$i5E$GSJiQL~h0X^)ehqXQ$}}Of^&t?!JzQ!GZ;AS_Z5gK zMZscC(KaIqMAx{_&v6~93;#(go*2oHXZR%JlDpoDQ--y}P;S9UsB($cG4l;_3f`Tk zL%g!=B>Y`lBDg9PiBQWPj5EZdmU3L=j29*ds%$LL(-i;%Jq;0&--q22jaCY2{C%20j@r(Xw?02G2m0T zXq8(e==PBgE=)H_;BiY=5YKlVrDCmG5gNX91MZcLkj*87ma!VI7SdWS+_t?=6vb)0U0s;}TrJ96=Hn1O+fFYpT%Y*!Dum7~ym> z?xwSB*{r!n(=&uhr2aJl?I25^k(M!$e>V>hl+n_o^njCkVaD2d?)nt1`o4#pSGiUG zTY83|$RcUz04p>o)2dNnNV$nhgD|dAX+Pz}6*z2#&BF-YEf=ulvMRUKa z!N<36`$Gvi>c-xa$i4b!L({LAD6hoYmVR=w)~!dzjj%Zd)$>BPV4w@#6jUcywX&uM zRd?qwHoBvF;KSDNsf_>+>b6siNYmz1;}SgSX^jh}(tilv@xI2zC0$BTpy+GDW=LIw z$}9hqYA?M1&edny6RDTVjc7vavb%U4y&NomVg|BJA~XO00{+KDJ34-N zfQ;L6R)ctQP3MPTl_itcNj@sXvv1b@GLnTxvWJuM9{`mPnUodz#&MNK8K#?h88 z)fUBX2G4#}-}^_HbwK&j>mX?L`|qXUp&!>$!NL2Nr9$|(@B2ZpVroAKcg!|Jh_B8L zK@Z+p>4Gz>@xgla(Mr$oK7m)N<>R9#J**KQ7PykB==_#VrhwPQDL|LFMq0?_acsgh zp|;{D;QxCM|I@B&E$(O%X1#HK^4?C3JcHTsk&d;^nbGU5SL-D>VAoP9Rn#^Yac&R1 z!M)~*KsgZ-I%w_mVGh!ZWDiw1L63M!AYzjUgoos$L1`L6p}wsg)Yap@bEt{w(WI9D;H>c1WieW5z5tUd8@kNrqb> z^UJDLH&0wbacQPuD00#XVrybH+rO3ydsenOn>STq zNAvtQ0IBbo!ZdU~&7LSJo+}mBE^Bp)dNJU0Uyo7{cV-zMnnE$F#uth$kXST1*_QU% zo4pHei28<>Z#@j^`M#^aBE#-gVI7O-$(*i*-D!&hD`vhkaoqcDzSp2hb0GhxWe zR)0_@pt_U^haMqMh9nhMGI?Adj_W=fZjQ(4EjUYjg8SPQ-N9r* z6}RdWlyanA__+O!#Ncrt_)FhiqyNo9zCcZ~%~9a1?pH~9mKbr1(5suXe`8@O)&PBN zXY14L35?aTA4Z4l8kxhdV$Y4??G zkcGVeBZqs=Hau&t5Qf`ZXbdgAt|OdKc_bdQl!?C(&8q#s5U(@UBtghIKyAn54wd*q zs43e;f(ip&=ZG^IMh4=Y{s!Z3ROPk!8AbO;CIIw(&~tYaQ{2;(Z2LI03<_3bQL&0p(-@h#eYK=#EE`m;O*`{ElXhNoL+!M603;M;J+Zo(w(bc8WH+56puXGNnd_Blfh;ZN)@`g*RwP!~y4ku+t7 z0TY0|1={|&FPXR+ju;32A$0#O$FOS^{^9`q`OPb9uy)L-Gr2--~g4_%UkVpAY_7L)X4K_wQ5%j$9d{#F&J6(*?s4D0y1RoD2 zpphNNv1ZRw`ETPFA%ZaI*JQZ2Ip=RQ5cJZ%J2UpQ?J8=ITu$Xtm4B;Gn-I<`E!?RZ zv|x?XSxTQtg(JuQQ|q4=J$%Th-=Vof$95~+Lbxi3{e>vUf_ zXa3zRbU+a9O4XB={7L1H#iH;smly}$0p|*}Cw>AKIUZIWM8e}aO){@9~bCOW{Day*!WSj8~_uJXcP!>)V z0>>DF)MYnsdA5rCq5U?4YDvi`x>8g0S1AI6N)vvJ_8LIzXPgsC7h|+y{+=9EL^bP3 zu_uxHu-!r8J*YeIUc4TD#O<9iCvy|JgGC-+9pYg_q89g0;erk;8+6ITK2V`d?rJqNSVluHO{INP)aQsR^iZBocxu}73>gdI zPjE#h-cEFmVftWn6COGNqOTSvcuNV%83`EO|&CK^dz zuoP29tJ-n(1FOlM%XHw85F(x_#Qlsz!^yYO+7|v+Jp!sZMCwJw(DQ$WuRUB8o`{C4c?QZ)_rV zM`g6vxA2unmTGt^C-zZ6cKWv%*^@t@3N^ymJqb){O^+$ag0DNc=L_<4!lV?NBhOaY z!OX9Hb22RwODYLe#gUo)NC0%2^X5&A_mejarC3tBu z-GtyBt5Cn@BM{%*gZ%nw zY@cETaL~hmU-(l)UfOkb=^S)i)C<$E|1Qzk&U~B2jHl$6>T<|6i6(?Rb}>!Zfxz6L z%DhTMg`-1M(To_QxwIak^~TU$6qNTZ>7JaMh`IM+OZ$SsuZ4*&PoXdYpQtLWp-r)g zn6XV1M-dnFEpWIsO=@HhrE9S=iCiA$%`ul1U7oI|n$Mf;UuI(>UL=)OOo-yBslcDu zIU(v5NmQAR#Sa8XrtuqQn{pfkQ0SI>Gv8BPu*>q z|IfE12`cVW3}{w-G!Rqvb_$*ZBAnY~IvPLl8_K{r<~Kze=W{||jCnd^M+(>HA&zht zL>uA3AQhP)(-3gxQR3+dp=H`8R9%~J)lhcaBTsL{zA*W_x0*<{#nmf&I#rULkUH3G zsn`&Wq8JzVt)hHKt)eukn6u(WVccHWtpVRmL{wxVw5)R9vM|}gbcU)?$o39#<@j*$ zO+Q5&(}nT-6eRM=N!1n+zh>{`9-U_KUtJ+X7iygDmp91fU3LdVcFcDDO$1pnTiuUe;hDfLo8rE$VhaKqq$pH~t`kR$4={#a+LpUOjr{(M z{jv6kvM)0haw#L!5$(<^k*J7w`nB3R^wIONaaCF9QcTihPyU{rfW}uRJ6F6EHFT&c zZE6zb#t%%zw`-oD--~nkGZFK&`U4_$yhJs1Ws2=dZ5z$*q0gX0@)sMY<8HHs_Uhpx zGVl-aLK0snJjOyl1O*#AfFWPF)B(>T_nnG`slsnqxIla-c7XVa!uQoIL2B)d^BaQOqLHNmKa56?!^0U-q zjt1EtoT`dIfB6GdO-;3J67(3Un8$E}d~*@Uy}$wbmT>(UL3YM!s5q`&xXHV28_3FJ zU=aS>GlQaz7iog`+OuR52dr7&d)KI_Flhn3xO{{zOH31Ga4k@ zNqh!gnEro62ut={78{OhR}U1$Kf$&wOC;SyWM$ZJ2_w3qdFm+1A&^z_T@-tWq~~$% zQq+`KT3M*rQ%$f`9*D6hWG1!$dhm0x?Ei~;;oh&uN%V1Tu?iJJ-~L2S6Yf-BFm+x3 zLsp6hpXNHoH6qC1JWl%V$(8OW{$0jY?I)Vi!TX8o+I}Lt#(DexiW>@k*-yecZrV>W zkZ+{?SiKm&+z4yJcs#4GbQe*dD^tLXgj7?C@bH%ppxp2QE$OwX@LAK%7h@i`G{=A0 z#b|)u#q@vrv(vc{Ok&o$d5|kJ2fB~arq0Ax_a1_^8?qobVc=l1@YNuoRY0Z#JONq8 zGVq=+m7*Ms3`8ZkjKZbJMK1*XGMdi+LW%}y3wrKfp?Fw>f==jR7+|62-voGjj2B)X zh9Ri3R&+mPMeP}Pw1tr_Y&6@4DaWjm{qLHFf0&r-%1wPQB_p^j!D7$kzHq5ZA^*dK zh*4PebOnUYP4!2;nfX58H^c|7O?ZlVm(saLSdf!wi0SB^FwZpsMfE;0D-4H)0aq4z z&#h*__gX--7r_1PtA#-PsqCqt#*Jt#dV1lG33+frTA5sWHq#uNuVgdux~JG1p|Z|m zpRY692lC1u+?v4^E7>(QF{fGUHHpeQt-x$glny3E$d+2@(VSbU%9^jUkbAcP`V+li zZ{7f*^ARrwb8ikSJx2*&`2&Xj((YMG&+sR}H1;Q_vyAv{O{J0~taW75A#o$6oI0G6 zy=bJ!a4OT3F8Ka5oZ?lTECJ7}QFNxX zLK<{}2BPk~YYXMgZC9wHF~#eSRrz5Y&!=lwN5s8j3HlW)}+zgdxfl zEa;|WS|HrH(*h*)FTnz#w{cbW`{#dTTOja|1t>Hm0>70O;7X%_A3Cqvef-r0$hA#~ zmLj<#G2HzR+e<^+qJO?^A?89-MZC~G3?R}=ZOz?eB@gN8=ZK{Q zxvr<0$M!;pQE9tC`&sT$nJ%nV^=6Z(&v9*ypBO&BXhR2?g$q0U#9qhi++_CQE~xEa zVf@M^vb08tLA+3i5?1f1m-rn<)q57Y3o}0#e*6FSpt~^qbD{eG3u+-I5IFZh@cS8C zlAmiRdN26xte1H0oI-2fZRf#nD-T}y(fqZ2gd~S}GGLDkV=+~;r+~4&s+jo-ZWt*JBUHD#>(Xtu?RB3=~DCGzbF^e#xY|v(~EDA6#{&HJL7f7c*VNX-UZ` zwlW^O#PAECYB(UFu7X#?Rp2Gt4TMv60l%{bf>rM!2-_%z#NFk6x4oLJ*}HnFQI__~ zN0X~`NZET*rKxx=1$U&17x$!^h5q-Xsyp|jvO6_OuWh|VLu}85)mul9S#j%dfV=R& zhW{BX_N5O!Bq)z&Jy-~YBcodq^Db+%Qd=`I zK;xK5tA%YTz|U3kl;Mf6V*qI8@;FdlztyqFN4bpVVhr(sN)J(X=~7=6qxPHjn_`Bd9tYN*9@P>u`^)jK-r@P^GS*3_{744N6ETA1;W#Y;{(txYoLkvX5nb)W`1rWQnLNobsY)C~oh7`gE?$%D7-(zqCTh`F-sJoCvsl4*ZcgV56=z%{T4Q)7EL(#Sgnh+<+(H(7 zzSji|V6isUqk>EsnBc1IqZdy6(~fM?IblHyK&sZKRP29Y?*`Oh8F?xGcU(aJ#e$(508P`u?C(z4<{Gfv;tiE^t7Vj#f;q(sgiF>Ey?&bRC~p z>0~da>4vnj6`rI@m*&Lad8e?~xUcuqDxK!>ct4LN5jb-J$8 z#N)!_u&FQloK)$20}oZ{+&ya7QB@s$P1U-9?$x?62tISnC0)jA_;58UJkRO|LSJ&KTy^sM=pyvp4=E}o|pKke29 z`tR0(&+;0Ms@B20(c;u=Ocfn8ZTw-K*Qmof#n8h#Q-i6*c|a#~KcGWp6i2OSo&LS! z*|&GxS}5PnEmZz+Rj=X7`K@21UoSmPYzX+wy^8UCPB@vdQ0jO)E<1?4E9I_pBH8P8 z@$iaPe7KN1&0>3m!P*PC#MFvPFySyR(I#M~aknd^KIJB5_BA}QyIx3;m2kmPSJVv` z5~6Br9TyT_ky?aGQnq@8rCdSSm7TtrfI{_*{#xM#gQj<9L(PXyajdocWG>y76^TKz zwy{3_+s2~bKnvN47s^cMs?4#uN)#hj9XJgx@SC#v$4W9(MTRO*VyK4?s>GC9{Y1Q^ zi}ER+-1totEM6I|QQMw7{J5c0sWH2RpYvK96G47`O-Q8et>wYSi1A}v56&2SRv0lB z-vTM0zihb-Ubs|ZSQ|qymUE{cSr|raAQM}A>iE#HLx`;IYl_SCC0s`z=)P(>RoCne znV5})O0%uv`g+M|icf6tPKdPD ze5kSW*279w&Ns^`KnGcHpFyEklqn5)Zz=WzoiTfI-}qMeJ+B7|d{sr6!WL5@^BWdXvdzC~qQ>7EIhYYw+g!>iN%45OWh;igR1=m`BKi7q;#P@s z#S@1=RQzEUBJx@fbqzAZI!g1^@=8LF2Kuu0v~Va7FZp_b8`tVAC$iV2VvWIR6?@d> zs!Q5)-6jX1l(X&CST{9k$#I)iF;C11{L;Q&K>V`<LU}yx{a_2tX1(SS5X-r2qQe@f1O&_m$QX&S%f$#@L|+No5vBwqj5w&^C2aB@Q@n( zTsS_yTQJ78ro<4YpPIU!rLzynG@2T*UfzfD?YF~tl%coV;&Ah0Vb(Rly#gz>)qFU?2igp7}TX?s%d8n*V@G4yn>?%Oc1 zqta-k^l{vGo>_5b``D`SlTqvhr>tAXbC32CQZ+vQqi}NMHUL*T1CM$Nb+@>(FF(-L zX|n9|{E!0Vf6d+U1u2hv1#eBUFOd2536Xt>PiPws#+$;?+`4hbxhhBJOwz?Yr%L2f z`NU;7F<1;WR}S%$v?*I>;JJjpBb>Kg;q`ERnc8LfP_O8L(<9LGxAFLv!UR)kJE{g8 zA$~Hw-NMiF)BGMXHQv|KlTjZFO(Oo8#;Jsp{zv-eAls=9p+bl4G?FjOJ^qWZveNR7 ze&)Rt=_JZFYo)@hF(uI$e>H#5LP@l%5wy`{5aXJhAnO|g5#zMx8wsgJ9;TA^WvX%L z*d_&NPJl|5=>QRBPgNd}kKHHgk*Ijr>J}6r>z#lTRkkdA&XC>-I5XQ`g5lt?rWB-K zi#>oFm;gbc9v-+Qoh@4`@qk<$5#zUU1;=G<*@!5}M}7!fwnmi&IXKc`%O(?*Ni=tD zY?p2(Z?o-H>|C%e;To$!w(^|rO7F2KeIuM`Z+DvQkxIf%N(0zUc;?sSNpt zbUMnv35cBVMe7@2hQnaix`t*b+PfDD1EH{&$VO2(U{q!ImSqH@o7G^Fy{w1X-s>kA zjJbLD;lS_@N2Q1$FIs8-h6*1Z91b*pU=(`I^jfl@gEV~_Mv+c2GPrm=^EAI3q4b_q<8}lC_3n;bYSpQ)j znI!O98(?;8>BvmtH!hQeS8B16;a^~p2`tMbE0{IN9%` zni`!!;vC!BjY&hx{`CadObn)Ti3gNqH|b@~XzwD@mK|TqR+?~Zj;~`_>1(O+He&oF z{>F2{yp>BlxcglsT>CWFiBm6O>*23wWaszWQ_=gVtk}U2R|ryg{?jqi=@{QQn?#DW zU$Ltg&5KXjjOQ4JT{o5qD&SU)ReznnYOEQf=Bn5^E|-|Dzr5oJ_v0*}z93$v`VLec z^4-3ZlfKpwo|_4+rm~Jp;8dT^l0}^eKYT?e;_c`}a{67w^AE}|BRr8m^dZ^?)bCf1 z|nKD8%(+HJ33!dKBo|ZiT|W;n@CacDhnNl;tmkK>dYcB$`{D zwaebF5&PzzA4iH@yjqJ~NQ@MvPT(s~;y;b*CFSFW{2)%xRXL8oolO$oWdh75K|j0C zCLwzRW)t`;AwpO&Vm1kl`oNc3=V_IKI2{#1_K`h^4tw<`8>k=eX-vnFV^?S=KKMbw zm~+cW(p%w&Wuf6QI5i$D#sT`WPl9AO8TQs>>&Nk+$l;+su6q4R1r9$TW+K8fTGb_7 zW62HmMrzqWF6C4=gp3zuvctG0vvOb zPYnfXs;Gx;m{||uu9O~#Uz{F%ELf5Rd@i|TDFsXC36?_dq+@Y57VG^#|MO=o&C^3* zIbH+xymW|`o7axv){LT~O(*DUbhn}|-9ghYT_72SlMsp8f#M6VUv!s0mL~Yl8bXt4 z?%bQ{U+b|`$eNQU{8a~_#48@L6QWc6eSNvLtdh7ma1rD4L?0K#nvwTy!3&R z%X9~Ml{;|R?vTHFDaOv{&qIL}S(1dGpMQ3yy5x*S%gyWzTw*RC`Ffx`BmoyoDs79r^17LUnV)s{cALfu!<@q{STL?e$fS zUkji)x==Nj0(;Rsi!E{D3|@ZAbv|%vnKU}6U$fcvY~9|HiGwP_^rtvD@mw#I7JR{I z5bPKDQqtbv9;Z((t(OWN?M`Q}Df8xCw%Go8W(#!`Lk6o86SE-x#`#ek@nIg-%9P;9 z5(5J#(Ibu&6r!ttoaW+c#Vz*>MkoXv6t##>{ecSe&EjzR$jMHcUJ_Ny8 z(y6Ic@6$_IpSnjJgNjG{#9?!6QqeFcM)0M-KwuURl(!Ne+*lsN=om=p|2j317h3zA zWcVWGTTZ>+I3x@L-pjwNlfI!+Y)u1gPw_B$m8gMdkJ642=?9YMV?}}1Q?5+VrPR$+ zs?C<%I#gpQ{Y3xQ_oQiY(P7i~cUqv%JrVU5qziWpw4p+F;gJBYW9?K%0fzJc9DJ#OH|N!z zQyWpeNIwLfK$l>S(y_nh`%wFUUzmiq!gqroFlyVdZ7!yml!~yFpQS~Fd+`gxsKY#s zz>P4%Sb88mRU7j)f$2mkVI|>@lrccGn!!Jz7d5vR-hHrqo z;_G413EXnfqYtB(hg_#3TNB9@vu%LN(e+bmwGpHGrH|}n%*v`#q#0x)vyxpt;xWwe zUupl6M@PuzW#V+N#EV$~0iI;6QPVT+oQVJDrQVI&52}P-MBdVigtam2lPP4TuTM6{ z31cjK5h)*0AA#n}xXp#qCz6ISA{SSR-9|bEz3;b;Ffu~zAin1g4^aEMZXLkap75-G@+x3xGrS9X>L zy5XSGZM~OY;(9Mlr+%S>IJ3&lRf86S;4Yn(CP@R$wIn-X(?CY7ESmxHpan@M-8#K_ zUO8S;Po!JXv+aKr+dw3Wh|Qqp?I@!E2a=`S#hyIHjsX9lTZtop&Oot`%g?i8!jHWC z)+>U=gn)8c!5*m(`=JjMNQ! z{QihO%#xy=n!ozzh{w)r#xPjonQl4kvS|nizr31rd?A&98(rrj?&ES_koIeJ4zwrg z?2*W@xF%gOkf35lp2;S8H{|pCx|Qn%lq@AKhHpqRA~a9e3wV2^_aDXlK=KxMGfwN# zLh}g3@I|^FF8Wci7udm9^dA~6*J2yk!L_)LueGM;AIv@k_oLLF;U!S$N^7%{&P(Yt zQX}Rur60u8`=J-`>^A38v_FkRUR84KW6_iQpl-jzXfLaAa!DWn5(6(A_`(azFw)JzV)}^hoC?K^8?seC?Bx03KK}GT( zzyEpu|9Ns}?o4LA_s+fNp7WmffPnwfnQZ(vt-zANEePNe)HKviKW+DjRB&lcMG=0x zA(QexGZ8XN-)H!cDTIvi@CQ(WU|R9S$+0Tez$}h%rK^&Z10vY42Dv$EY~9HdV%A#M znT||4Tj}otgpS-$9Thjyxh#ZT+e557RZc&#y|C4Q(T>5WCBkMzUNubtTL>+^nTRX^C#mkvDWhuHnj78YUviZ_Js;nsJN4B z3IqxnpkQ4$0er0fSdMIs(0J)*0@`;u+F`4H$UQlU30I)VLMT*~g z5U)J=Wm5FJH)Zt<)I`TwJvB!yR?l&+aqVt*lO%Y%$1>ibfCpd$m=hp!$se?eXF_+M zT#f*^Qcuuwu`ST3b1p~_vyms*@V(T~s=36!3ei(V#4n$oS0Mh^;t1zw(6B?2NEU_X ze|pr%yDI>(>7P!Um|Fncs=i#)qw)n!&E3!jZ_+&ZfR7=_ojt0Mnm*|f+|+sgZ}j>@ zfX*mN3Mhv4@#bdD|5&#|RU=$)OR80DX&Puj91niaRMd6sE>X_5vN4U5DtiqMEt+;pn|D`&|uFIFIB{K_*(*wWAtdl zi~N-NfvU1u-Am9v{%HRiG7t{BgO_7~LAOr$yZ4o0b)(Xsl~oxM?EDpY^K;x!x5(^qHU`xdHAfd~M{KOt*|40Xl! zUiS>jllu6Ojl$rEu~HvmjX1r|0%Q~$FqMu%f;OZhUJ$tQ4-6Wdj({7240HL=pWnIpn1~$&nI=hA=)}y5DS!m79Q`KB~-T!1p@e8+@;8JX`xb zwU#~x_v>~D1%rWLyu0*`Xc3Szc7q|A>n^Pqjj>Cx;o2BZA{dYr@9PSFZ98@VAcGTF z0Os2BX&a(_ZAhjajlS)&hQWnv9Hik;o)xZfFBQcQhWb?GH`3S_&EHkRQCu^eBbtO} zQ*ieskg-%d$e|wjBSWEKPeBR@EU9;Sw%=nsL;LhQck>6CH!;-HkN81`z5YS*{~9Rk zxt+3*1u;sY35IgLhm_X-C^o`aK03uyH7a1280}H;Phrm-n2U;iv|=wX@0E3fjtBao zo*EqN5hIiXn4Fj|K*ioLB)=Ic-f!X30-%d?4eY!^g@o>jzCuNOdhZh=R6RX)*4w}{{{s>gNdUpUC8KVl%U zuG1rG(LZ9D&p+Z1T)*^&paFy3A&3dyqJLQW6ejY2!WCWFPu%X%fPo3t7kw-Pp{ApS z0~288!GO^YhX$nTFS>Fc4Dp;nmFb?l-HKqn>(tHauYz6ky>cd%Edwu!eZm2&dyWdR z35DQyOVD7~&R6Y1%OBlt_ZSfb)^z1{EkMB;PZuD|Lst(_&n_GVc5TH`eO!PT)q*Nr$;*T_l%k7 zO^%ru-aaikMqQPKCiMGNFlJ)EKDt$@=)grhW2xzdGwsUA7!;}Nx6UytMmB#`3_WQ~ zc;%)K0YvAJ9yumhH(6I4D!iLp384}iz{PXMRiPk^{e9yP<2vmhP<~g$9@c&LNjgb`=qJCc;DUAX8ysLvsV}L1h z!;s^urB^Uc`OT4mrVXjs4L3>we+p4p|5abYF6U>Ld#n5~F%bU|!!%2G<;HhIgo6U7 z3#>*PPR7V`PR20f4=iM+$!2`nI1%94BQN*5zXVJ$Qaze_6h%HdEGUX{rGAd|(pBd~ z*!0VW4D?53&OGqupQWU6RDA->WVPkdzW60t1^+>KFzaQ|H7>r?+mz2|@qmLDS**Rc z9@IEm7Buz#NcA|A#f3jkfT!$#iN)vvnm!Xg(U!lu(MQKK;fc<+ekrgFNm=x`oR3XUoe>{(OlG(BnfY--NJXFU0SI+Z zj_K>#-TDG)Tj}JqA5lb!e3Q=zcGIA_kwLDW$)PkX)VorqC#Y*OA@}(o@AS-9Hxa*K z0gBVhPp-)c6f7N1=y>79lk-U?Wf@M2?o1Wsll^uN$S2ir$g6wM19Lp&k}j1$D!H=gfzg&Yt;XrhPcXgMaW2M?$%W|NXm{u|zbN8LiXDLJ^`jw#S0C3Gwm(XeVXPQ!A2NEB zkE|r^qY=*Z@F9eb`Qc~1xyxyvJcOXX_%8Hw@b_k+&Hex!$Sr{F|GOUQ?(l_Pw`-); zr(bHXc1BQdvjGHdLn{Vn7jTB{_00E#rIcFj{|4^&Op5U4LXe4x-Y~iRww}OE{dp=w zpi*T38EfttUVy>>bk}m zQ2EtP4fN0s4Q=`5fRNDg!Y58Tm#WfaXnB(?`vu69A?R16J(tQXt-@Fx6>{XSH9xAK zu8y3o1O0%>t}0tO>0@T}>`&zDSB_OZp0rn}k{sMCWUmD770O@1*75U|{6X@ydju+X z#9rab?ltgbb^O)4CSaim0&Kaa^^DOFx1Oo&Jy|vxTQ@VLB@CjP>>+i@E8pFTCIa@N z(=+{Eot~Nc2w=gN3NTwUr~n5SOni^MFA_&HK_Ic!^=F4ObpnEpevKFAM*vH0%aO{c z;DWs_+-K*pVQfCJ(nIH2aNaq?grB(@6@+jbenkM>5enaM1`1#C7ZiSONj?ZmyVjs! z*B9w3l!#T86M?L|a$kZlm?=&F_77WY0JYnn2V zKp&I|DwoTw=}6y{B05Kg9ADKWqRTdegVLP?9|MCFg58y8A z;eL-g&_f~X7#|t!TgTRqG6Au4 zWOcEhsJd89Nvn%TfNckTL=e5F+lV;!Pa&$~k4^_oL>)gdGh?X7X6MF9B!d2mJ{e7E zg}!v{_W}*7?I$F^6VN~X=A&|aWkXVBk!svDSo|ilE{Z-Zd*5$8p9YxKRZVw=$|5sW zwg8)mh@&9^MLPMefTG~1Y1c*5p^bPp3Pm{R3lSa`5$h?!BGt&LV6FXy5#jzn!@|nC zl08r+_-UvI!6IU}hQ_hMH^$L;oa-Cli6|F@*V(Ljs?WxKM#c`eimZA4o~x{RGTk0= z)YAzWX{8If=k@&A9~mx)c>_t+=rFUOU;xxxC<6WRxHp zy!WK>^f2Ca8r8m7cik?UHZ#~!aT0qs`r>Ga-RXDtB&NMVwv?h4p_^+@ub&` zljc9Be%+0lffQyq@R7vA82)GdC?VUhqD7MEOy>R`Bdjnv=3#(~@6*zl{b9x81k=CH zZ|dZD##hk09rrAx1b0^I%VJ4juHynxUvVIkeG-U*mINXmbNN6?QC!hsI8Fq+uLdIe z3phj$d1oMsPylxeA$tjX=MP7HC9u~GCr*VEWgUGC^f)+_3IuxafPahP4gwzIxBw2} z4@VK(>ssN&2XKk9U*6~LLGF{fFCcdZE;bh~<^f0Eg1y7)4#VCXkQ-UI6ms4d5giTJ z6~g~oxLME_aI=?_QRKZt!tisRuy;-oFQWB~7bX~Z%)ID`KZNK+;2@rw2=o*(I~K#P z8t7O~NCS}iao+&MT*?QP-3cH*5YynhgUboWr$e06l5D2WoIoH^m;IF+>Xw{OBN54GLbbTJ6&?1NSH8_Wq=L zHF0YOhUk$+eoGz1LvXZ4yhmcy-M5d#NQTs|OU_uFlB=Gixr9_(-Wr-((dE<7%;dGb zz(cs8??={c8}y%BGk&q_;?4?1=-{6@R8B(L5i~0;XNxA55p30E2 zk7hU9`fX4jOWL_1%9-{`^1<}le7QYW>G*iF!+YL%7$CMyvVJ_HY7F#?XRXm_@Sjyl z83@puo-lNac792=5~)4TeL_YJAk$RXbbF#_DsR&vYl!PAx)kY< zCcyMe+^1MxX+yK8!db4^N>9N_Ol{+b>8Op5E-w;)#V-M^4$vBuyg8JJ{KP)h2gLl1 z67)1twr)G0IBF#~1MgeE^lauo+a$7{Z4#9U=l9LhSDDw5!M|D2H+c-VO@ap!>i+8U zp33%Uq>%i+SXD461cihI?vy~c+ps6VB&EtuKJFLW+VVa9Wk^BAQ9{1tDL19_+dx3hzp~Ad;QQM`80uTo8o@ z`CSl2uGV(}E8z+203Y0p(J5epjb2J>rgA*7Xe; z?J9gL!!r61%9;a?jZV!W#JKxUuZ}zRD{O5!3GaS+OV*6#6g+}_Afi7Qh^BY-fhV{) z5CFqi@9mBc0Ocm6n*k`~*H>?_>Bws`wk%0#Q|uX2VBe! zN1TVW777~(Y*o_bN(2m|QPDMD%_rE8`mE|(A1*2y4< z5e@5!f55YO6d>7}0z_v(l0p7oj9+3YH0EMxuFk&}zy$32%R5M>(u3QI9$mig504J) zpl;{xzAs@uvF<|^qJ@yER6q&^L?P~y-!*+nguovvPg>x~wsa7{RF?k=7>op^PTg=1 z2>pF_2?UOnqHBls2TlsFdozEJ9n-gK+yZsBKUT1!IG@ezlD;GVV{?pjuY8^V?EVrj z80oMXzNXLC_DJTm>KEjaLYnafV&VoM^%m1E!6?_DPWQbA^xP{C-lqc0+%LVy=Avi4A0D$5G&b3B4hp6C(=a^d+s=<~VzN+@~Okc7? z5#@Bq{gtva9SYS`zJlOcvB}x{h}S8h55<7y;KZ=X;pH6v=MSLyZR#T;b<%Znejp}! zqu+$cZ;a|9vyPN6AC9~S-x|(j#Gv4~?S9BR&JW4JOC!KzK49nj`62c1C;Y&hXTHkm z<;Sn!-&_gwfYRobYf;#$Lu-+06cY^K<6tEFHW>MD3Py{x40PDiI|0c5H~7LNbx1yW zIr8>fj@T{!(MYu`4&s!bgv>P>2Fn9+`2hchGye=m>|uHYk|jbHLj3}TvJKAuF&6m` zfP5k30b}dGAHK~j`ezj0aQtUPKPe#f(laG+J?M#<0jWr~F93xlzAsS0UaR42+}P#AkW2BJL0K*x9_ z26-pOfWg>rHl7eNe0T;b7-PEYOg4%72KPUbfFM}Ty;WPX?t(zHL)pXA-Ld=dmZ}`9 zdVsuH)wF{gTvPpY2WhUcIwtNQjqOHMKXGYmIiE~I&i@^GCqcyn&#k)cS7-%Zekf&rMP@rcF{SUQEIttVyPJml=`C}}XT!{M!Duw#6Lo$>zfV;8 z9!fubd>k>$Z~Cw}7>5$6^_SxQ^Aq$N%YK3W_WSPfep`Q6z(dwKkH~Eq1bcX#BU<>G z;QCfol5~oaxC|jdgP2u!JR+lATO!rL{iNMu{h9m~e=3Q63RTrG_h@5_o(lS&qGLYI z6aJzE-1H`yq3>Xb)+a{`0X^;S4Z#Q*R`K%jAi6FLsTU95B2sxNmZT*+1&Wu&6NTVc zSvg-Xf9V#6sakI9mdV~8Nuw>l-Dg)w%r8sC*3#u#M3v2y8V&D?bc+jlBYkAU&B@orV z*_z$nbb6eI>&e>V6d6*I3|o;i;%|w;Ey(vIh-hm%XNLa zlC>IY3ZAsAV^NmFvJW|Cf7LfX*;)OLaE)H)2ZWVvM}@m-W_PSayXBKuiQZWze?c57 z`ULuor3ay;Bf4z|s-N(k%AtUKSS~q%Dp$K9iaEsibWF;QX8ErmbnQ-AQ%G*_TZU zpw1)uOVxz5tqHPs6Ez2cQNN7B2+iq8pQsM5H7vmD1p3%5w5LvYvG@a9!7CE{53LT# zW=JEg4qG~`8}~G~%WKkeN|zeR6(H>7f(G9Rl5}pY)zAzywFUR>69NpEH1mN)zVR47 z06hH;lEXKwxUo_Oh91(C38N*c@)DnPNoX>S#1>Mcrg+RXSA3F-Q$oLv_JE zm}Kv{NHn2T2l=Zbog!vjuYOB_2BC#PUx0|Qe%Epwwr=)vEc>)WRJUk0l+(QZP!%=3 zxw0y*)ii!W={=kV`ovpI zeYmBa2gvRe`zT$CJuTK0)}7)Ac(;SL@wa_M*yE-9qRuwzBtXFvUn9k%_=up1AjH zn;2r~URv_R!h!c-55&JRROKgHv+GUu}s~=Mb#(iL=cVg-&d-Z|L&1>Vn?oflw-U58~9~t3e)UD8>jAA-3&XebjY%nX%qu)GFb55mS zx*s)**b@*B@>Ketn0bZ-Y*+LPRyCXUF3N%yS8p_~^oGz(vtz9j!t)R+8Brf^>qX_j zRReVg!6Tvx@b>QfKvSF&fz$MEYkmA%@LPThsOs)$6Gr|1fh9|AR4D*nl4nfDZL@GYbk-#lAyMdmJ;60O9^@1QX;JmN`F-X!PG7#WQj`&8ukUi ztQ^5#ui&pk-bm50lqf9aPlyNQWlxvaJ=|{#EKq4Ex{GHQdx2g;RfSS0*zdX0nHY_ctbj4n*f4f3SZ#p^{c&Z0}ZHCKE$^Fo* zbM7DP!YiCV!0wjI>|@Mhdvw`jmAnpiQb2cRg~c%)Lo5kua)c$j)m^)qYgWU{|bzt#a2gtYb8H2r*s)9s9XlU!#L<2 zmc{lFpfT6-9|9%5${l zL@is80KUL5z-yYeCea!hVrf(3A(|E=hJ_GNkQg1TAu&cV%7UhxU`t+Yuu(@7j5)Iw z(i``dV`lwy>QpOe{g6dxb~cP(kH;q>esU`Kz!m7W5JQmUr4psa!dC1T1nU&H$WhXQ zEJX=CiY;U^Iu2w!js&`gNu3AHJt3P+tcO|noC@EB1!NZBb5 zoZ?sCEnufi-RsY0)(SDpJtuKHO!b__kI@iptpAWh9<_-E<*@$#fyVbyga8C5`)&N1)h25Q$2+5Su1lQ1AqV z>}pUWyxuDT5xjAbfI!h=CKr_JqXk4zG;9*B1SKNGx`F`Hs%yUGB0?D>A|ihMNkmA3 z$`N7taI`XkD?mhlx)W4s2|$82;s2&wmYYp->7wf?!fuQ&f_Ixk@vFtLs2eY8H&yo% zt|i@AHS~RU6U%sAW(gTc~3!6(SHUddWz($lTb9Zaa2Avr0=Rd z`IL8gE)|fTOQqL<{G`aGWMNfE{rOfz`%eb_0uRwNtb=w|0baMfH|s~$Gf|IthLh+I z)b6uiM#1QFNE~bgCNnt=L!k147q5P7uu%)!u_6>|gbA}Aj+xJkFXgX_z2vE?Ew}wB zfAM+)deb(YdkYizkQ0e$_8>I7s}w{jGf8dYg7a&vrDxKi*DZW#wGWGFRZZ%j?kUrG zAz3mchz24X=7r?itX2ZDHb_B`Vj(e*j9y61>z^lUcpCTl}*O+IyyL?f4ztnR>YB@8e|VnssfnQe;?!jsQerf@4P^+^Ro zR4Z;zNflQ454?!JSSMoRD#k*PJf9TDN0zo>ya~u=H<5PzcCMWSq7vxu7lUM(407Nq z$RF}0^Jr*#nSzcvo-1i13E4!TbDzh^if^me*)z`gsA0##(c`J^g;@EXDAC%(*y za%W{_x%UyBV$Q}=3<5FI2#JQIg=8z`Uy0sF;40O7Vyiyh6#JmxV~O|CKtx`*i<=~( z${DQ~K7|DWih9*}uTi+B1dDIlvW&xlLZU-@@ z1B!Yp$jQkL@)F3QHOYo5YD<+#R6~_Ld&En94RYv%$6=cj-C?buH(LC`7D~~$g<_sU zGCmgNf+z|_ME)v~n<}X6i%T9`xCY2n=O=*Vbg@fVPNkX*b;ScJs9`3DCel((uIomp<`K);Y(rDQJ=c=T^WbR_cwH z_Loxy#+=e#fKYBgDLkUfYk@^$b~Zol^5R8#yz2zjsf-}rdZ7(?VOvip#28}7y9Llm z3`0w}e2v7pIXGFMa+X1tkaqbQ{|j)$TM$bKW_v}#k#oG5sZ~N`6Z)+EyPUO8^6_PY z^a6A?&kWDthkWJHfAYs0t`t5sks}nQZNYqN7SZD+qy_9!-HHtTLp3pQBH9lD$YZS# zj;2`+@no*7P{IjYT7IVaJn#vm&qoMKETF@%+J(s<9BD&}aZr%uaQSsGR1h6Q2!?*g zM?ygsZ59D3vlQ7x&>QA?2&bnd=x_e!&ZJZ}U95KpqE4CV9O#3FLY!8I&0X5&Q{L@c zUPam&h-xpYSN;8+o4a9xCO~ld>20loyKprV(6J_i%m-7W!u`O|GUYqq+TfBzwS45k z_Q5c!1s2#==p2KM5&n9;ig;3>;^Ixq=`FL!iivKJ-l;Xa@i`y5N)tD$ruqe;KU<}3 zlUHMFX$@4exe3xeNUes~i(FiL>4P4_RUpUAZp;+sRo{meGFn3>&(N z23j43B1vftVYnKE@?ieuu!xjrJjmZYP{|Oc>oyGx=khgMty%Uo8oIt%UU@Faw_rjq ztNAgryqr3f3T1Gy*!)=USma(rLY%{mPxXgdg!g`3R72V!2E|oRk(yk4Rv49TQUK1n z8V^o4DgVT%UZ_tu1^k84BEPCr*3#8g#v#N^MvY*G|zPabM?#=MB2Q z*fWKT05hpmL?(MK0UnWT(TeRgb5{ZsYaOUC+E0m1&VjExJ0W&-m^c&e)v}j;PDqG6 zk$nkUpJZ)O(6OVUky4111nUi~G=dKS!;B zS(*M{({a3KxGuilLdUAy?$uJZ*ti#G=^=#q`2Jm9tS;d|`|3!`utbt7YaUD3(haW* zo%4mi!1$UBeA|XMg-30m3Fh8_qfluLz1q#CS&IWt;60P4*IUYaP{}hX%QgRX>!9Jn ziWX>>`d9k1*RQpDye^uVl6^KMyKbaIv2Ju&Lo(N#99G>$L<3P(H){85<&Djj0L9XZ>wA)ZUI_kiN+ZwS_~K~z>Qx($lb4U-1q#(DAO&QXDNVse_29?Bq9ef)Ze zY1>B+ueIb$5(2EjtGJ{y%Y(@y1K)U7c@Phc)OTWmZ_0P#5&4>cN-?9DP$`ZbHdnJ# z%og6d>dAb6&xKLS2(a?}BBuGAvEZQC67=ezxUc-_L9yHvHw-sO(Murg zaL5jcZ7?x#J^V$ijp!KQ!8*drZ-L{QITgWrUo^1P^nEzCQ^f%ml63fY|yH!+l0_DPpdH_TL%2ej6~|OB#a6f ziHHW_NW~=iF#T%Fb$#SX<$Oj6Tw*$!mfX3Gjr4SpbKJ{LcO^wjiJf;AaleUQJ1KCXlBhlN?9*GVt} z!k0r$<fe- zOeeXJW~{avk>gRnvEhJ?Oiv8P8nfmypxyuXSeh|(1Q1JkA%!9Xc}t>kAUy#21q^^l zO%^<8tO7PzNQ(VPJOBcy4M4i|M6C|_X%7IgHyn5X`kj3(GQpM=9REt*IOewfT-<_2fcnZL`8 znKL!v;Sg;i6IG={91`uHa3}<%1)lgnfmAL<&ZqM|_$$+!VYl?>&-#>hnZF@5OVJ`YB;$35rHrK8JP`c|P{~yjkP#l~Iv-5J@NDU)1Ci=VM-4J(yy&pN zF^_c^Z9t6aC|S-Bloq z3La&064_2o1~=V>3=|+_4QMHo4}RaB&%g+C6KpqNgh>^_ADKY(n5i*=!3TB>*Ep-5 zMe-NHITlL$a398df=y5i|7^mo5>ZY91W|-jz(5B7o`>XwQX8&mw)>?(q0pxh4&YHQRSp)ZHExSp3AdQQvV%|Dih#p9SIk_(We62FgU$87^QYWrM&KkOcb-6 z^g#!x%(w8z9oTu>8&!%R{}%H9nBK?7VG3^$Z7Ab9+%Q`M|NH}Yzj+nNL12<$S&q@q zJTw4hPm#c1w+Fp1)%8=d(r-aC0)I2rG|GZ_^-@$BPQkbo3DDJW`y_qqG1xtqn@H_X?7+mtj2y ziiSb>2+x#&IxJuKVku(C8`uanRP;HI9)E{tOi$4$qtL}`a0w{T^eb@HQHOldWis^w zWaafdWJYYp#TI02gR3`Tx^X_FETqa4B?BcUXe4DM%Z#ew)8|G(D8dya-UPjHG5Bs! z8M8c~ouuFY2&SYTAzj9B%{qiI^v@3i(RBEL(ywNc*OE zDf{BzBRuqoK%3D{IHnew=3F4iJH}p60<(T6kQaKu%o4#j3m2{fEwSbs(v(qOAJ3e? z3t-UI&gN}?0Vp8mXiSdIM4C$ zQa(J57BCV2^dJ*_49%A@V_GZ7%D4oN{CF*<&x}BH+I^gT9xfcO)DU#`zff-R^h1oc zV)U^)__TH1MPavxJfYh|mw;ToZv2jvg?~oSS|QS>Xfz{v3@i7900}%s>FvoV`ts3q zlsy;b0Q!~}B)&!valobde-m%D0RR83nKT^bnmhaJRu%t)<^jm=Js6hNRWxqGH5`8c zY;fKxSk^+cs(@n?wxX<4FHY{e!^KJZpm@G#^MLh_Uy~d}NbhbMfTB-??K{cw+aRkG zRO&Cn968v|zuuIC`kjXbdj=NY{s#Z*FLrftP1fBk|G&P7wmYzT}R$9C?rfxd3#lV5jb zg>|oVyMtQBLDe1sKjjq)AcqgxCsh1M07*>6=`4r0WSbIMoN6Gnv6 zkaQM+Aov%5PD3FOh!*w#{bw68a@{MtI#cLq`4>8Bf44{)4Iv_ZQU8H_Uxb9nx0{u! zR=da0woip!caMXQ`bzhzf$CyiIf0u8mS;o2p=iwpz#m8#x~seSVD79&GX{`f01vwv zmsPv@aKm0ZfaUxU_{+{IHkYJi*Oy3(@NDGT2N4nf<6ubBQHT2-G*f29Hcy1@gPS!b!V zB!FEm{n%TbAc{gh=}|~A15!p5lG~z?pB46H!FB|sP}tWO_Ibm;+$a>>13^-QJ7A%H z3X6~juqd}%3-vd_Dv{Lc&a%x0;=~(I8<>H62QnuN$Xuj!9{k@;_ee@&{VL6fyy9Nm zSooXOzI66TzjW793E<&7RHu~mt#mPg>e1G~#8Q5k|Id8{z&151`bSzcbac zM4rj$xV|DDCOL+wXvOnWHkL2B-6!~l-&mxXGBt~&fDFo(W*2g`@lMscOZN%-l6`#% zcg0%$2ux%`6vJy_4}4&20sH^IQ@jV4zIC6zGK16@t`|RA5Uc*}UFvysRhbJOWTYnl zod0Wdt-At_<*KdK_sLgmuwqa$a2pO{OW)3efwxQ=xxh#_dcl(Ima+?s(|ynbCAuBJ znvGz{u)(y|2J0+XXL+ECTv+E??Ik7O27qfDW$y~$40@{@AlZzVxk0fz^!?IsBT`9(N0s3|*pl2UFcp|h3^ba9pO-PDG8In>a9=X-fCg4dP&%eMt~aq z4dMq)v7LjMj{|mHNLxWWH;U$y!K>dd3Ps|dU^vV=Na@0PtYJxUcx}-KTpnp(B7(>l z`#9f4G`0VwbDI#xIScu-Ii7Z|qoG24kpj3mmI`dZ7aYd;f*7hURYE0I@Aq zTy+rY5EMOzN9cxq-G**(py2-Gs#_lFyit@-tFZbW&ooSd^GCqE^@C(b3U+ecEuLAb zEEgz`^J6|ICNKqUEvsf%l$s0-Fn4xchu&QxDyi+L<+|bb7s6GOq025QZEzcUsf~#a z-;v#}K)3CJ-eRX7>|#PETJoUWUgP3XeemjHvxNi8_@55}zgHAk&NW!Vs+zkkxXJ>? zZ`D~u5;*@K3wJ#wySf*t3LfoQ(dsz~Xe`IlCJ5P?z+D2On(N8gwN~7aU;tG3QgNz3 z2pYC~p@{EATfdP6j}(n;Mw>R8fah@CCn>F{3Y+c2OU!mlNspmEe~F7ShSi1Dzoc6Q z3HZk7Y*3E$uS>x&Tj&oG!nD)Vr0i#_lrlQ=m}J~75C<+_W`Y@i5F(h7x8*WbDjl4D zYa>!;kPE2b^h>}sl3_~p_9zkKBTB#7gXEFvz`d5F+QVn>;lJ}*CB*GZYURnL? zpeoKDlA`;V&dNgSbWyLAQOLX)n)EV*jOLsZ!%lN0DO6YPMG(wiJg-y{Ot7j$ygq|D zR0hB8o)C%PKj?yMqQG=R(V(=Z=KZ*%IVBBt;{mikJuL?lhnej z{>FVI7ypWw>?8j}psA*aULd(7=e-gi0m*9c=SQm zm#4nhb5s!TzmN}Tbdjc~7ast)*@WQ}QgTp?!2=qzeG*(!oG&2`yV}>H0 zo|YA^#0w$h1-14cOhMgJn7%)f5mGpG;~l^veW^gZ74PSvO%(3u2YYZ40iHFCRfgAyUb}e~}ch+hB&3U>bBP!QHoELn*-mD-SgWB}FxNy0gN4v{D}O z#6(|)QNk*kk+Wl%NNVku^JQu}bGf(d?-#xTDIT=)wiN4Oek#EsQn(IrNx`PSXy6;E zK{boR0`zg87y2rbx?!R+908x`j3^M@=a7p?AmoU#XwvbMiZqzz&z>^1wme5Mm~_o; z8p(rT=f-z5GSLISzoo>?+}n!Szg%qYZk`V8i!1u-4qWNfJx6^gwqyi}4yIY{AA$ja zs5grm0*Ssck@Y6gc41VXcIWfhKb6eqjf%1}EAB$`kG5 z%X<^d%txVh}O&?~@nLKtZJ zP3UL(U09J*o?`znJ;5#yy2t27;ZFLjsq_sl9-C~Rq8t`goMhoHTDU9CZ>-rh!v>cY zsdI(CO#|@^7?`ebHENVw_z2)u*^P5?Hf{nlz>}rnZG?Ra1o%#a*LaG#+a};8+ny5N zlmNgqtnjm9?^GaPPZm*SJC1}BR*cIhcfOClm}pn5OSGq~gSTnSFS1}+qXkDc;Ffrd z-uRC1{{Z4v$K!}?p8{`@+z(*2O!7}WU$q$nhFv-NJ(37%GR#Jp-5D`jdyh5<`qA2T zb1Tl4x^eNy(e_lm=X4YI2B11|80$O}`jm4`QZc9%xJz73AM{Znn9r_TV}V7n!Ch`o zg%?PrOJ78I!dI~W?+8zQli~FcYzD1`G8V_f%4WceU}c5(X!(IL4aKqzvkbY|K75_s zvM$0is3^jdue=!H88K^V6h;_O1i1)2)jeV`Z!;1O!MyE=jK#Fc9>Ukn^vI1tA8p2S zBIyy=)=n>;0;8q!rs=-jVCXHLY2n`J|Fv+vHhkDJOtZ2O#@tr!%3y4y%3|=(iy*c^ zP0>GGQvnPs@Yg&Q3X)(<;K@+HV3>!B#5UFdM zR99D&nc%H<1Oy!6r3b4fh{%3wd%<j7NN%W(udw(y!%wQ)*e7Tt96w~6C5BG;Wt zm;f2sluQEzwW| z*Fd?^0KBsWd|QAV#F-0Hy)>l2$dfflf#Ic@;n8$IP<4q-z^yZ0PHqkIZPM{z*pZ1? z)E5#y+lNgNKNcorSmcrnUWvpJ55~AE`i8;=y-d-^&o%F-V_-4Y86Q~e^d<{^;~)OP z6kwLOX4{}KclT1&vy}CFBuYkSpB?2OH}!^T66x1r zszgO+nBAU8#&ecUlI5TI8e<~mSe zP(yhq=3aAMVQnCgwHey-!?^Q7s7p}vh-(Xb4f|djUgt9=u8TY0@(=Q%UlT$waO`h1 z8KB!cn+yTAsnuJ@YMCAPHXtiwx(MRjOnUsV@HK@&Ria@{V9#grVXNo~*We~A^2H{u z5#;knSuxYIFT&H0%UoaX7%VLP0E(dYP?hc?wXxIn9T*{nPOiDU)Rhhjv9djvORS|% z0P+>M%CQj;sheC`{ajT|5$F&wZSL=nR9x?jSaFuzqa-p5X7udpDv!hJ0^hF!q{gq& z0p&q3J8NNDV*^Ulo8bpY=fqBoO!gu+S-Xu*upQ{Ht|Z!;nAk!ada#$Ndc(s~HS>JZ zEXHCD%9|{7_5)%EKj7>SGy+ntJzMOpBh}M^3ap)C-iD$hIohs99g#&aGmA zSuYaw+e^LF&N@)Xp8e@36rn~IA-*ndWX@XARnstt>VO{P&mg9Dg<2jP z?xoVc`76)_@(Ux@qTSMXA*DT2AqEswotHYJwn(VTtlz8#Euof`UE-G1q@6oL*o9ENEc+Ael)Y!qT4%;L($7g!Bvw(IdA> z=y6rT;6?285Ze3`$!07_M$9K8Jn0VsH8^=CNq;0pni-NYh`10+n|;gZjK!fUX5>x{ zUX4P>DMJxfA!Z3kT_%JIJyesG%?3R@`7*R}Bm|Nvh)uD-4tv0u74VI(aTie5db4Kt zFy5}eZAGlfVH^H4O;hr6AOqI{=5EuIr`4@OcX2L6pfOq;NuZ?~Nse(yR<`iVKQZT~ zWD_H^6>F>{ogmRMV;3rP56I*`OKi9uD5UBUI0G`o1hCtCp|Sn+>1GMcbTt%f4yO?o zdQ=+2lMQD(s^{z{}Gy z)(vh^nxhdPkpNHh8lNj=Y2x@mvO|pKgsRP#4GhhAfFaKOg9lnju;%OSQGL(v^o(2Umb6WHPT%V{^7$+c$vL)=c;jj&$TIsG~+A1j34jfbj}?)hV5@Nb810d=I>e z9F3EHKTn8CS)eC8vs0^?Os=J9225%haZ&{4nT(WhTYL|^?2*vO3|EJ)A6CiL>9_f+ z_XdE=PhhH8Z9#Yh;w8&}i3b@4+CH_Zk9*>7K?21{w>OZ#qoyVR71Y;5mt!GLw z^QKc|s!O(y_~@oSw*e{)B>C^u@=_(3}RBGNAVbs*{=HDmBmfOTw58=%Vc zY(cW{-@;jXVg-TYanyK??$2;pA~%pY7aq@8G=p!18><00a4|gU|4{YjaZMb5{P1jc za}WZ%Ik*%hfp95mf>=pKO(0;R0fH#fYAcE&R;#E%ZN1PyYr2ia)>>`9ZRx2!!PZ)< zJ%|ThRq?(Rk7^=SgHl0Mc;0DW&-42|f9&jhJ~Ok~?9R;2e2({reLbyi1DVLA%8O+C z<1@WikN2d?FfO!oL2;pDz%tF!uQazpJPZC~OU~ zcX=P|T&tp#gsfFnV6->01FtV6x^VUl^*}XSW90N~QtP@5^0!R~Ir6T!0X8}))Lt#warIu-xoo>df8(Qm=?jowfG zXz$r*qA-QJ`pv)-+3)+=E`c)W`Qv9rYuSP4?z6>VA0E7@P;~8})XyI~O*|tOWtL%2 z3L_5Tni!&)?`cv z8z;m&)N_-PiJH3n8{>kdG)!j3tFWl}?L=iSNF}I^FWL>GBr85zL~RKFnTZ zqKD&UaRK689+}{a`jIA8jYgsCRNXY#FLV&Mmz{H8zg9{quSrJyRb=E8~yeh5^6`iG7_qlj*zYyZ{|Q?2u{q`cJ5 z<{fHnEjFk_@)F7X1C{6Cwf2^gWFFzegg+tLJ1-pc6Ioli1FIW&d1=4P(z$c!S)Fat zCQqjT&KpZV%`^QH%B6TiUNv4AkOV#-AO&84hw%p6j_=) zVyTY(WJNFX`R^vSdI0tNPJ!>xS_tY5ITH5G$WI@R9bWe}bTwIIqfluP|4DugpW^z* z;(BZk2k@uu_TXB?3Dl~*G1c9N-WqFvadOS^r+J@R3sGFUJJ*phYre^%SZb^Ytu2*!L%Xds>Cm2j5ewn=q^CstDx9zMuEw5 zgY(>!nA}^pJ?AGqlpnJ5ckob+hJ!0UT2DxZS+|dUb9RQf_fQyr*V(idC<=TCuGP6Q z)3vuXXhT>9DkG2RaWhB`DfL+6J z8*UA*qSHLy!=Cn@f*WHkE52{7X=si0J`ztSr@qy!d0#0u4k_zSZ$ez;&|x2PqTe~P zDAylSVF3z!>&k9e@gbHkUkD|1eLIdP-lnRdbp;j%OWQFGnZo$)^l5FT1N!4H9o4D} zH@sr487}KiC;J%f;}5vTSkeN=Kzzu1>8%QAVskY2{n}`Z?539e=M7Z2bAJ1gUkL$%S5rzf@v`nlh!Wt%VB-DEW75o zrS!bD)a#g!6)9x#SQjI_B}G}259~ycUUzg{V=2jVGl$99@N6i5Xzm$ut;tVhk+5@( zv{8*#>fC5v6%7>8+mi4)cAJc(9nCWZKRA zB<J~xkcGc_T^#IbAYFOK92kM0x938kOzr`|X; zZyZO#lK2!y?4`#n$-Cy~m|f6>Z``;E3!+RQQ)SdJ&6Rp|wz-F>1Jz`GjgGU?`$EZF zr=O-xkz?G^88$i%-^(D)%ZAz7$jXoB4i%9EBBJC;H`mA3TH5-9=_fXW!#d;X278jA)rU#)wW~1Owx8K6&;US&_cAh+!x@vRb z;maZ$+dkPwvf)=w!^AA!2q}gSPjY|dEf_yaY=%>n+kUf28eR!+|M}Urpg}f%uB7J9 z@<^ZvV})(y9eX>y+jh1en?aJJvfOERB>GLdd}y6VlJbRWo~`@^p~YD)|KdGAdE`1q zF#41h=M~zPd~4>mDtO3v>#kD-IH<1dYe&fsKUMG<&EBBDgn4@h^GhO+9EkOv!4%Jr znV-2h(j}{P($v!lV!vAB>dF(hIImrC-iDkfYN5(Ks`*;Mo%M~*p2_UGT|v$4w#El7 z24H#LnH3-VM^bLHAh&`YRY9`6x35u4CqrGTX0&4YJDm3i+^of2{r!y0d%3P#Z+{s3 zZ2mi2bWN4x>%tTlHbyE;WBmm>Je`!2^T;eJ?)PQ%hSaiO+I91(NPnXK4i^XgP}Qr- zyzykM<9nxYa9cW|rj=;4DUUB+NRga<;{Rz;x!p)ji)oOvxxLPl4Cs~A?jWhvHV5s%W zHmTEV%7|Kc)yV$d1atvsXVAh^#;Wegj-%}!ay~s35ayTW*v+m7-WQmA5xxCNa&wKQ zhhAiAr+`JxAr$Q`@BVmz9PI3tc-6nhY6a%O+uM7J%j9PY5ExXXqP`=>j94IW#8Zb~ zW_}|;UhQZUf#nGQji^^sSj3C4tRRimjg?T$Mr%=dU3$6RO6|MlDOkd})AoMxL1xBP ziX0*Zt}KopacYwMtuVUqjONkGt6}t~M{O7to_kz}CyK5BAi;8h>)?g(B8 zqrcE9PhZ6CzBO{5#ALYWm}L3pXX8EZ*=?5r>3t&%273ijQ!LOdxn-Y->dbV;s%*n@ zX8FL&M;cLmx!7!2DrJ`UeVtmCTiP?4XF6w&B6Ts7gpWS%Pexr>QH$$uD64JwNg(){ z6fR$8bv^u%3=IW`D8@CAp&ee>?b%0S=N9<^S%BZcMJ;*8Q@m`IL&cj@nTanX?|(gy z^7e_$RuM(*k7q?{l8=jSZd^#x)}0c!X0lSDI91oL=Szk=e|n)RX<#KWEfENXQ(%#H zi6TkDSpCC@EhaC2g-RMkYX4G<-pgd}V{2Xr`I2g-1*T(TAzf+FT=rk%0A6$ygX<6+ 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ΠzoTE@R-@fC^Y*UL=}o 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

    #m8k&c5t(ZMhpNU=&?(H}{-rKGd6gI`q1V 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 PP5Q^H}!am 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]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

    m3`+ZP$>Bz=edl1o$( zs-zdUfxyDqk#zIz{oD>RuGZ3tC{Y9f8r|yYbGM(#sX5*bGOpDfW2P9z=Z$L>;ZilG zd0!08R!CN8coZElnfGF7nBzf+TZ?}-QlPgaBa1F+WTlYDh25xx^h*SFrG~vpy{ygF z-e!UBXbVWbJ(`ZmxXr$~rSchgTSAzxcapjPUc?{ywU;xAaJ{{g&>`>9ka$v$-S`vx z;h8tz!aA?BF)-=%F08^!8nN?#Rb}||_TkmO+YPIXpR01m++v~C@pZX6Nq6fvLam(4 z{R!9HAN_U`K7yS?oc4vplod%&hb1O2kv<*;Vocj0^6P=Qxu?;ge-3_T>$xfMTP%L zpl){$p67qNyE4f<2e!Z6E`YXNd`j{rfj5~1zQZN~*K^P$@RCjfnPL*K<=cM|r_u5$ ziks+~Rc$||;A9>#=<)!2v-1$9$NwPetF{E~AN0t7LNjxqE>=PfIx z|2xk$f%GRT=>7gFGIE`_)-%J#<>-s5#~v33IPH+QeD3G1XSZ@a&cuSrTF7CLFTq)B z$VRll4$&}9_n${%Ls#$Z3|Y|}><*6swY}YSAh<6IfnoK9}`hPiVHiZd~`ULVfpT3<4&HbAl*u9zVGdoWloxZ zg?;2C-7;=XHf_AZ!scVl>ND$9K9jCQ@*?R4E0@Nuu?->UNw0o$^lLFYv9%XpnxFyY zs=@2HSz6q|T4kcH-DxM84X8~Q@~64h74I1J74~g%78f;O%P?Xxh{=e;{?2&d3|GSt zb#8_Qy|EvZoabh#mFow8uU4CD1%BRYy0&Q$6r`akhQxN+!bhA`wiQFko?k|(&Ki>- zlCh45z;3gW27#5kb@~F-)DOlvgpTggj0~h9+MpjJKgW2xsx?U z;@j<;$@6K{;1u7vww+PmyT(s9e@~w(-AQE$a75%|*cKD$yw`Yd6(eqq3CPeS4~VF#MHVS%~0$wy_PYO#)BMo z_>gvYwR$rB{pJEgFYMEtz7`}%yCC7i&5TIWr_byCZ3^)M(A8s(F`YY&A?q-j`v*@vF`vzH;XJStkm9#({;l ziu3EtNpbik5!Xh^UwiO_)QfiqA5$fu)Jt9&8 zX&#lR28UF=acjWu*1At8L~B6#)73Q)w%uh7O#giy?muY_^6}Py(`s;TU%bpl+l~mq zTxkK7Q@siAl0^_auC@YHNz;y0fV3(Iw8jFXsE}c>i@{w=^s-NU>H`@}_KE!`O>Pq4i$~6TbuHHNgvi4wa zCSB_7NB5_XbL zUn0eYsQTp%#~@a3J(WV(2+Z4bwx7^JwR&l07>p298wVgcDer{p%M6FA;E4R zF#=GgcP&TO+>0psT<%4JCl~i3oIL1})>tWFxLjE2My2@qA1M2d$Jnm{GZ*y)o_nr1 zq%6qGB#Pf3Z*j{vmErlcO?Z~d8uhmeh?#^PYI&Ur%SHa<-7Q4=MIxwT(#j4KsauyV z#U`HWI1#DpHH|A?~t=q+ayjdhcAufPPmw>v_-E2&%@v?UEZzjPEh%d_TRK){kO zt+Lm<-EvOrb)JR3h0swGE1HHs8J1^$lId+0*SqoSaQC1me_0#y2nppI>Eu!~b^ApNuc%K1CxNqqA)y?Ar&nW?9AWzD=+P zCNBAtRh7Tw=3PeC6b~_w9$*ZyWfR*Upr51FzbtyP4=o4plMamQh!2080LUi4)Ox6$ zG8N#LS?C|XeRh-e`JNBUY98Uq`#7!kr9*GHyHSd@4^xTpi&gkLua9%1B8F{pqj>&$ zS2s#JJQ36}5vy=XciSscoc#&6?lxq*Na}6|MGJ3q#+nc=AA2Tge1->7vQyPP#x`#^7#JLCl5JH{l>c4^s*tHQa(*oZsUJKH#S{N&yf_tGQl|+tD#87lH z;lza6gf~3d0_C!BRZ{973Oee$UwOxzwKktMKg9S%hyNhRdCuA7t;P)C+U$wioSCz= zLq<8L>&$1^Nj&+Y(LAp1R)B^-k;h&CJiI4=3NNsaCr;{D1kwB%yl~GUGkDD5hUbCV zxX{l^hpo)(#^6otDa!2@A|7#3)&n8ZsAQzh7RdqdgzNF8VYK9v?W z(DyEbTy{K7;ihR%j#|nEC6^qhRSUSfn-tO`x|x;Thw34)Y?w#1;ho@Emm{^y}r(EgOe>bl~f z?U+{tj=#sF;Egy&AT$!;>x+ZRe$Z<${1No98~N{vsuFsS$x_h=zme$G;sp(}`i7Nt z>U@{FV!O`&F!00N5aCV*5)=m=;+(SSig z?3E(+0tku<3Ia-uQS1%xuzP32uBZqWu#4qR@6NNGB^;+>MMcT?^8db%-*3uJhU{c_ zXLe@Z=Y1Y_(1qM7C8v9`-P3xq<9;c(fC`qi@h^D5vJPl_XN1AdX-IC6E7dl zK%-k|HU$zv9c?05Ua>C6``#kw=~88sml^?h@s8YheW?3stM6HBaog zvq)#Cd1HELyP4_|x|y;IE%X@_(@+{(I-Vv6f6MHzFAXiH+$cqE(zDKXSG-->GC$FX zze8&n4Uovs{)P|l<{M-mE1zVW$bTwc^b58zx~PC9J;i0!Z{L%KSOj}EufkGf55m1K z`!0%O8`L66&+Am*q_3xn;-qmet%OhrOjsPgWofr#n}$FMP*G^g83>OAZl!LmJhs_Z zVl!|9)~iwqAi?7hnl>lWnxgNc@|4dr-|>p()1&gnATcd}lt#Sf63#o&N@6ewQNqjT z*O7y$JfD`ZY4JFajLh|oQ@!@VE&tyJBHRI#VnazhQEGe^3&AH>Y-v8>(cLue;!XK41nM*E{mV;1B$jhE- zC5<>8Ux1jM6K*!SMGLTDHm63w&|KS=m{XU)KJ+|DR%5XCg7lJaRIYVPeHvIpg+yPE zmIEu*m10nGEwgWPlFtj{~1>2JJtcw3Zau7Z-86Z!7-sUM`<0NyVkMjX6euAD31jpAN%u=N^}B91$B!V%db4T%HG5kA zqJA2~rC1&FVR;R9Ljrqa1*ty~ptFEd)({=_K2@w@Z7$%{ca~NXX+#et6X? zTW8BE2C;@-v-#Obds^4bqqdZ`5*f0d^=B{|#bT79yy2-C?k9wACwTNpHvRU8)3QPM z%}@Ebn*3veIQ`*!F@w5YUM~4dd-Vr41(*Fy650Y&@t>z=d4b)7SYYm2fUH>qhtpqR zZQPjma@R$Ie07m;nS65v5?XApLK2I;*ZjmOfhTGvSqWL<(v z@2EMaE1{#ybxMLH)*=iP25U>8uAO6|b|Ag#%{muFd9VAHP8F@oS>c2Bx$S&mNskc>2%uqI5nyIu~GB89k`#@vN zLXr7$m7B8UjPMRUlrJtDMQ->hO~d%3lbIErBCgRVCJcI>JG`t;vy-0$0SnSjGo<@x zhA<7|=gW&PFy!#fLKLzXh`y!BDM;M+-RlQ|Eq67ey?DJ31e6&h9_zUhNudqhlLW*Y z`fP!mnU8r0AQBD<95N0~wo8Ttx~>=!h_i4#Js^;!1GiXe&}S?#l+TMMS!sIw1xE#c z>{5P@Q|*qpEnd@@U@Qp49b10JvQQ62CPu~luL6icKkCR<=G9;!z0g`7t=}IQn}F8d zSP|m0Gn>kYdJa{i7e7%y;JVTcHi7=7u55%;!tK;h5TXZhG|ZB`<}&HZm5I7ND!|B9w9; zvaJ3YUGl65Sqk)PQ$zodA8pDQ&3w4j&ImisZ%Z_~Ek?)b#<=QJKY8qfx}SLH&u=!} zqPzvl{gce2x(}jzYWW@9#iH5W@v00f>qT45oh8NoCZdx5W>Na_!h0KfF?JUZ-6PqCA{>+EPvCD_qO zXGfEC*5|OJZBYHMqiw)y8Vt!8(y)4VXGg;xCo9IV62n$3JcNY`&k}1vF*>hX#2eRj zyzqU`8&ZLUNE=X=;c`5(4WfIrO;beH;Np+b<#uQRO#KpFJ~*ti3x2nRBy_m6E4Ba& zoY)rls&Ro;E}`p(T+|v9_aUWdwW{ueb#zJLMK~LQf^pNU;thqMnSAW2HGAsM<20zJ ztj%H)^?CTqECj2L}s&(eUSp8y$A&~3zJ}U&ZD>X9xX4f!k4!*0ADS${P3QIKu`=mhGZMfzr$n8dOkmt z%HrO|gbFtuBj5u&0O#cF(9TKu*nSp$+$C-iJmPPKF<+%B?lnut^;IXKcPxg~Bpj>m z6N!u<8h^3QA_eiE%PY`HZe11npZrwaPT46g73sjP4nq@$CpsJpF}2g{KmkMtGIXm` ztYbTCD^F8)c8U0*8bcC>RIHrUSy_Tn5rzs3RajV!soQT0Q+U;=co$#)g3|G(Zz#W_ z#(ScRyzQpHn`9Ix@m$FF<3YxJS}&GonFapGQt-MZX7t2s^xt2U^2&F?_X@j~+f*ut zPxQ!zKlsZUX4&J_=}x7d6xUHA|75NXXGHxm=KE(asH1%RH5iBb^ZyrLDeTM}{}(5B z#@_ZAcjaMikl_Ejhn_42os@Th`b1ZJ7XbQvXzQO)s6vEt2SL8qD7NG4E`Cy6g_b;^ z1Ko(JiSl1s&_ucU7k6*M^UlYZ@4t0^6P`C4<52(L|HWVDb>`3hFD~wkd&FUEeH}-A zvABuiVs*wnrQPhwhA4H1>EhQF{IZbv`j>Pf`PfKRgtiGlM?UDnnenN&=JtZwHcPFF zMfjurC(0kLlC!5~e-fIH9P zlay3;Di&~7b&7IZ=2ky*96+&R}N%?2HLXS0AIKdSrK zOsJ@`Vxi48&iE5eRq)BJXQed$PJ~mGzOh6h+%%loh)Z7=0GTUNnXVsq{s8B3?Ot@k z8e-#4HWm>_O-a;=J!?2(of=N9;#6~ISlmxn27MO%ve3_HsNhg~)oKMdSBYQL z-14?+d@K^!Ts*-ev=i6ziz-I7|AXK)aAmR+licF=btA+bqz&$nQ~p5!&F?!7x<*Sc z09e&|wg{eYcg!E)9B3%4s+ExTb8uRmQ&M;o#AVy|NP0|e{c7!BcjKU>Tkk*L3l2&; z*HpT0dec07vCVrWm@cullB8SKBX6yq1v(*4#^+OD0?zyV7^zGVubwaBe;G?JF?1VKDlKpEU z(i;)-n)Pe!Gpr9ZSYjO>vf*FWI$V(-C<>P^@TS9qw1#*( zTvc?2G=MtKv!#1Xt>{Q^x0p$9LRHUO1rwyuL!zt|#q8;(3Z6bSa#p~jDZT9S*bjoc zZp>M919CkNtkEvOkh;LOqNtbO*xPHa>cZd8`JnT9uYmyHsTRF}doP&BlPvtjeHH)3 za@>b2GRYqEs98UJ$D6ZA%FqUnO7jzKxfklZs}j zoJD1UA-T z7Gj?k0UFB;M88F;8%*YZShPW=1;zy5$QLQV{Z+aGWDgZUjqdGsZ+BmCxQMRbr*Oy) z)W#Zvr+iR=!&a=Zt}nvNLW4?5sYwd=;PNE&|4k>^s^A|x)}X$!OKF|yLM!&9k~4fr z;|n7H>T&dWoziV+$~W)S{gZH0b&?CAqi0di3q5xh-5~zEU)>;1Jtk+~Anw99HwcqF z^QS{m2}Nk`&f}Zz9{#Dj@?qe2wC^S^+d#?h$@aLYOfMbl0RAKWo4=(}jMu^x#P_&# zUADoSco+8E;7zZ&?%K1}g&u5lxofcK4G>LntYI)D>FZ0LcKqVf%faNG0u&4IcoeE1 z*O_cSh(fY#8Ui_(thW`Uns{hTH}rNN5Po@qb}RTk^b7Y1bj=fm`*6zLR^DDCMuz)H z3X4J(o3^7L>8X$CJ=#~iECaEXy?J?I)4^rtba1Q5osOz&yV}fAFcU>MyC9b@0q33? zBz!a;8Sf)smOD5-p!$s|bg&P&cb z_f6!v`%gd~sNSbwmq0pf1Y{-Ro;)JWVjv4ED-}CO=VX!=&goINV<+PvlVdqGu^=^AiVgWw=@_^lza&i?T6YwV+I^O zwk8uT=eY$a@%KC~Fe)l%2W8bSoR#cwaciW+#jd6YI*IfWW1b}o|q))6;=8(^pkv9 zM-R-IA%cN1LY2WJc*Ju5s{ZqdmT3(~EV~kcR%N~n=gf*_X3XS}mg_ z=Xd3!@4g=$7ppOp+E~X*D%zIHOKsAlVBR~}A^{64E}Qwilv%t2=-I9^fqkqbJ0?+u zP2FxQ)vg-Ana(Pb(k~eJZuu6Gi<$M^LAGHuFGgcn#$PN-PSJ!f<1Z2QN4i?m64As2 zyq~|0bMch8|49W!-5k9(5)I%Y(U25&?2B0zp~3q`pA`isybvT3xJ9BGUJ7Q~NH!<- zquz$9Gi;{M@kag4eF%@)2gwQe#h7NRb>v^ILAtq=n|x&y1Q^a(`iAu}=LW9p$5(iW z*YyJzm7T?Qm}UC)xd4hzOX$FO{Ue(s)UJw}wOK-Q4j(17f7%oYZ6Tlc9J7D;NoY!b z_-gTjs(%}B8Obl5jSl0LZj;Y%AjB)GkKri4n?Qsf(`Q@(9-gnCiOABa$ZzF|<4pw6 zN^g36)cSd2EpYjeXgDw~$~9_S6!DKg5a><8sB;2;Z_No)`W|MQ&+0L2hgx<0G+^F8 z0;oQW5RKJ&&-epf);?rsMA4p=Q|p729{&ht3jK%X&4?1P5w~QLKKvle+i;8S_XmF~ z%<_1z-w!M>c9^RK;Q3o_m4LbL9>43YAWVFu_r;4WJ z!)UPNPtCOe-Q+L6wAy|8U+k5=>5(|fjHcJp731(q#Tb@FR(>L_bV&!v3oiL;w@`_C z+rBzpRO#s9RMKVKEeKZuDy(FDc$t(;^eJjP)ETGy#T+v9SI3ffC|sI&`T9RY2iEIj z)EiHt{sB160zwAIX4?^M#xhbV12xJ~@R1(?xz2E1npAoPXQihC&)+Hf%8J*XZ~L?8 zYuYYFPTc#Vujw_Ec-G*euNk%IQWP}4hQ>IvmXGm-8Ue-=YlRq3su5v4xz+;XDK(ZD zPp!4Wcv_7$#?xzUFrHCki}B1_F~(Un493~D5{z?dq!`btm0_G)V~25Gtv$xGYmkyN zXijYxjPq;I8!BjStrN!cYMe1v)^^2MRnraQfLa%f18cft98~Lyac~WbaY!wPacGSk z}!U$JnpN!vO+%o$9eE_Y)#%O6one8CSHEZ%>>sVZz_Jb>G~``}$`* zquna6+pds=;+vC1K|Sgu<)Sec8q@^J%r#x-kkMDhi3eUS7r}P2ux?DV-3uBRHBmb1 z+gsziWb=93{3bnMp`YPs)bNJE)bb-aXnXKS?-&PO8tVOMp9&iDiHyhgK4&pmY3kEH zFN)*AB}+}N>|C-sOVTbz%uJb-w@2gtE$c5z9jD*H&xC-IcJtJsw^0!DuPikDws#em z?Z2|o;gW#ob^HGBJf^v>ED1~VMu^fJ3PwhZ6EEMug9l;6mvQwEcY8cxoGmwg!*yFv zWB=>6$>;$xzSjyV+k%{Il0KC%Xo9$`fahtGS~?3S9OuM5r75sDB7LQ}Y$_g`hPL@J zsXzZiL-R-lK;^9f6Z`Fv6%$$dj+vQ50$QtRt(-TKs7&u4Pp9R2poVr zH?SgI^3{(79GGc=n#d`S6&aTX!FzVe}axh*T-Akx8t$Qr!M~aqWX|!RP zDiPo+y(1WVfeNvyHN&pb64h0ji_dsak2Xzqu-gqyTmqoqy*Zd3C!e*RiC1A>K}1KcZOvrIL~yKON@5AG-qJEJ!Pp9pH80~X0S=Y)JEZ@MH_{GT{u#1TFDm(JFJ7VH+l7<%IZCZp(~BW0afx#rFW~p) zj^|oW)AZT6F@?^3;<8t00;iYb(ouj(0)=YnkLw4i2Aym#Raa3D%YyYo=_W;-t(h=P3;AM zG*Wv0R?Ic>H>dXU^HJA{%QBNYBzd1eDa!S{Or(kpMBeauBv0xu26lJhGT!Yx&cHWL zL->-*isdXND|SHYJ*nx`hb_3V@dT$&F1dKJa|nlI7kyskLk-M{M%7fM14u_Bt*V0@ zpQ=o(U=Wqme>d3o#jN>i_-(Q7w(1H_eFk3Di_Q&5nk)N^^aQrx(7iXvdh~{Yw80)7 zM+lRE_oU-fZ;*CHyz-NR-Y_0{U--?&3>|ka5oqbBc|L9_v=nV?1w}NY@zlQK@pl^W z9GB5tSB)7xY4-VUEzj-$8%URofC*9fuuYqKnDFhbq-#D~CZGRi%r=K-c?@V1GIAuU zx1yebLicIJ|60>?1bQ=%01H>a2(TnSfcx-q1V}xxDZkAh0h65ZyK1J4r$_(@9Etqw zM@NENV%V6?^BsxQOTqIin6e&L8IzHYrtHcoh!G~C{-o~eW(c^c(bw7pG{2^H2!hIH zk?VZ<;Ey>JXL)W_Nc7H6X7eV#BI08Tt>{N=5>rj(SknB`N{#4E|5pPtMmO@m7}yMf zyk<;>07e9|%^OC@Aou8?DX4$3^Y^|!Ut{AExedi}iLJ|1z z(L(Fq$f@4@tyrS#ZSGr=qz(U?_x!6qY5X3?+@Pdlq+kA`jfPd(FlY0@S>jHH!3aarqI+CGb=<~0*p?n>fu^y7?~3KL=oiGX-)`gmi8yzP}S53%HK@B))&!#3a5A7k3pW5jQc*Pme9? zFrO0~M~{IgFfIZAd5a2o;Mkjq?n?#gMp7c_vZz%?1PGXTefH~`N3LkgFA!IZ7jeU_ zizM!^2NX$&Yp+biag0Ql|EQvn_2~MY;ciapqL_SfjqNsalSTi4eLOYo8OfAKa7x1( z-Wr}JHvC_47q>heLJi{$wv`Bcdah(A|L7rB<8a%1i=^0mrQ|D;LVUO)0iRM%D>5ak zS7^!C-*yE@J-9kv${s6U0m=iv3G&0Z@(<&?<(@*|iMFw5wsdy9L7?O1GaWG3#aiVR#*w5r?B5qqv`v)zj`c`bP^fg$#gy6e0I6^@9KHg%f zq;`r}LZ2Q7Kc-RBB)DH9nu%80vSJO_yg!TtMV(4WlCUH1?(hiZXC?NMaxuc5Qt#o` zTjF8u?IeAWo95JrUdcM1&6&ir5yA4mgxB+g`}&Yz4b|Q!$nLJ7RKnYr7BqP+QH@cg z{r0sBe39{9_hC&v?I8_kl=ujS;5$D!RPEOq3-h7aG__Fx6Er301Mh$0cEDnYSSEFU zI)11{3|>UpBuS8=RAv__31O&3kusDh5NXcb4(R>5MWLP~%$lqc8^7KoNn$i29PtRe{tWLLBPCYgP`QC8pZ2;~ zAj?ep(h0Je``Q^KgPb8Z?@e<8Zj6OZVHZR!3=$j&l1Qt9?3=2Bg6oX;xlaALnS<3$|#Xsts3sREuGd8~r$WBqYA#B^>Q z?VgqqiGI$w!O{8Hga#6+kkc=_Kn>O+@HAfZ1O zph~AT37Q19bJdkd+Z9>g3D{gaT&|Tb8YYUdZ)5ueXiiP{qvR)VF+?&k79L1)p&l0n8m(bcJU*ea&TItt8?DiHqcmFI4zX06SBbR$rcg$s<)r{G zc>-6uTwfFvPTtNVK&9~LME>GT&&>TbX|A^W-=>JTl}t$J)KKZZAL z%{SA0$uwDiE{We&z%BfCU_50)MFWWm9T+x)B8J@yGBpY|rd|WDlA`C}RE4}eb=?Th zoA7_4zyLiS-Fg8%wqiuKB&ck-p}Ca1?T~Fn*1422_J-izVDT@Yg9VO`0sFw~)6JE{ zjnAwk1Fvl|o2kAOSkWQ9>jhNb&A~-|vB5r_`H1j4G}X5oq5Aqd*ie1hqldEk*kcB- z4w$Hl=3fvaVv=7M)LELX>f6lbMm&CqFNCd_e!^6Yn>E9}rKUggR*b>Svkd|Jm#mN5rz0dF+OdW{C|G&SDR!41c-Gj0=Q>@QZ+ zNsm&u8N_W)3UZcxFP$Xwat{lVOJN(Q%8PZAkB4x%wBjluTfDB zvAA04ea(*RaqXI27tDaKo#u}ieWe}H(-ug*6M&i7I=aiq1mt1pUFPKR=hZ|IEp+nd z$1HTR^D);iaI*5?lH&|#1nRw3aeiq9>=~XivAAPJJ)1kb{8uH;sJelhS=1ffNs2qX zMt!i=72u4`3g>Y&A^@$*uH=g%Y}~M{fNyfy>Qtnli@hk`XOMp^@}eY{tYq>x^I=@d zA6*^C<$R)%1IEY#zt9c5SM3dwtY6K3@?U+iy1$7t_&3y;zArweBRlfKBxD}%>R zGuV8bhd(irWGJ@UR^fL9@5AGVF`QTZ0#NB&y-<u>OdMma=}sbBXNB zUlV7~QRA3Ca{VtwQrli&7kPki9Saz+^OX_l8%(=l`Uq2NWVpP!Kt7)=1}PHB*(otS zjOFY!P;6VU3wYDOebs_(JkKS=KA}qZCnWNuA({bTnb~z&0Wymjz-bKw z0qNDgo7NpiBXe;_s?`{I+1{-xSnHRx0s)fiFUI$|S1+iZMdYT!A=BMD#trnPo|7Ri zFKSqDW1RcBF)rPav|P#1{;d^C#zuZTLdmc%4@UEp_Ty3>@f^=njQ>$yq?aXS$M9JN zIUp0W3fg~U1go&~_cE{w$zdE>)eSVRGiUb=u@o0g7g8jUHLTbNL5B6QujwQd&M=%9 z7LZI@OX|M4ic)Z4H1O)`Cf4h+Q(SiaQ$}l8k`zaAc9$jr=XKuVXl!u<`sHw(ut>63 ztrf>N#2f@$7*zj-r`3l;TKMHcv6k;MZNZEx_2Rl=)PjwJSd+O5ERgl4utpr%G>l43PmWrk z6~RqTZTjxwTe&I=KaVe| zt$^;uRwF#vXyda0QYe8^P$Fh$Te{fQg9;QjlN(5T3a%BNz?VNZd4d&;mS`oLmQ%-A z7}LD(W@?R9>rnUPu-2iP2L7m6^#+y8;Mn@1>=vI*cFei50ABD=dPqvp>V@QrEqn5? zgBN?QDZ?pUytYnLa?W~3(%Smc%Xz11w$JF(w8ZW-UEBpX#U~zRA;-ST81-Ka&Ku?& z7EGbJI+?^*`A1BzTQizWX@>4a0 zZ$l`5x??a?6uhF3XuE`)dUfO^pTVBniGy-G$r)LWjp6xhN1W&yHmXqREH5)RIq?#g z%Qa_4432YWgDs#+p)~}e(Kx{{I!t8J8O-M0_Hypv-oVv}-OIxNA2jaGPZHDA(AjvO z<}-$rAw>S{vmSS2<`Hz?E*a1uoKqkanKs^R|J4D8k7jZ*6VjfbidJOYZ$!@2?6Kz- zzWxs+q6pkc7K%b3$kcwyfHrdj^l2PR76Fl^E&}fIxJ4k(PFw^GlWzewL{TQbPhdFV z6gTG*pEZH^NjLgFaa$L2pKx&fKJiS$BFV@ho5gi|Df;h4@~JcbUZh~gMia?Tp#`Z8 z=O$;&m^Fp4J=!cjDha8y1@$wN^^FxG`SH3ZdxM%vgvYLjZf^%K(EMxq=eieA4y&?XCF)-wZ{BQ( z*FQ7O@deE@(~0Znt&@wsW5a1ONUu$eH(u+dF&=CB`n8yA`XpS$Hoc1l=DlotwR#SL zlRdL$Obje@fOoX`xbfaQv)Q6PQ5^dM2dEFzh1@XN>ru``-n$xCe~J31_)c1O%&H5! zknI}6_W1RPwVI!`)As8|YE-q<{4dG=zJiDF@O~`>zFdP~D*EyvwDgYO7L}vML4MDb zcJu1}Jwp7q+e-e@0z4}4&UenF`R$z8UEUJ_y@7#l{b9~~Bg=~$w^c@N# zG)~*jm$&NBHw9Zh{pce8p-49zFRyTZpfesC&C44;_*m0xv-uI9Ysfw!;Yp`gUFXJC)An9Yp~@j8AsSH%f}H}+&Ci18%Maw)u+d(vUP?h zs4Lx#9zrRWU+vYKs0gRcD7~AEXnLR<5K_GCN5pN(tk;uOHXnNTUhG-X{Aw>%<|1jI}GW=lP6C8Y)Qp=C4H_&lR9@DrElk( z+nAiL6S2h?hD1@bP$%jlKE^@R(1rLe8YZ=n4|v^d*$T&p63`ScbR@ulc$v0mqhvxh z@D42u*6E*hTO|1-tAb{N;3)Jh#BUDZL3f&oxUdx-jSm=FE!entmrGj&-r55f+s%`} z{Yl3$Ia3>@DmKl=+Raxx(tU!LzofoH9Xdbg^v5oLz*U6*7Ak2D8mSV8m7#zss$>hK zL0RNTf}xv9Yn+e%wTGvZp?{(;g#1nrEXiReHldD4*hc2V+V0XPDlUHgK>=*Gl&b&i zWVTA3i$^8%3y5@L(*y`!oR*0{xZmIcvMo{nF*h<^-`E&)j8 z#q+xoCb)#iGD~nyz}mmhE{^+Z%F8Mt;Icq#`gTBYhQh8E+v^udZ^dqQ_rMuS7jU87 zJQ1WfePq-ElJVsL{=hQ}i034-fUqr|NP7aveL^LL<1Z5V@2tk(<-cS?7NLB49LOR) zo`h!+Hw(O?LZ{{AU#Np=L_X6#S-3`vtaqW$=|STYj?5q(~8@@74UN z)&EgP7pLH#Y5RV`+f2I9vgernS+@5|{&O_+bwti`@v?QKdD&;Wq^?zK7{F-T9>h0Z zdVtpb7A}jYMzEfz;&hVvlD7Dp3)G2AN8=nLy6B9TXSmaD=8+X-d4=P4Xx?4Sd1KC; zci9RgK33SXG4=HY<}jvynC`~3Ct@ZmG4;pKSK@yt@joi_7F$7u3Ujl?Wpm8()a_@y z0`RCrTsBDzOkfb8u<{7Z1%-9y62u@4MsN2BOhYjB#WXY$Brf4O@>2_S&kkMos@Esp zOU!t!`W$cM+TvpmrWuCZGYwwzdj!naadMy={43iTcsGaR704RrbF zAY(Uzb)0(>t^7sTzWK*B#r5LLpWf?`!SRs}jzxzx4VvPPO1Zo=?BD!V`nbyo3@>kS zuDAzhkgv2}|GZjxx%ex>l5(&9vUI!Fkasy&|K8-iI^Tw!b=MDC?Ty+Fec~FU_NzW| zgHiiUpIB+sw(AqCjN0$|#2rTM4}IdEBZt_;egC8vC0;aYDScu!|5AF~QO((QbAVLX zWZBA0KZ)q^lc?JH8ZnvWT0`Q=SfiUrQ*yCGV@z~9`NkmXV#fgB4EfD{Lmr{GW8d5 zxXVHY@v0fPGZ6?u@%o1$Q1c{_d`D<8R-z-pJ|Ep`Q8-e!Li^tIWaTU<*NUSb;Adnn zP%2>d_<`LKKL|_IcRWIYHuCb{_!7jq5lzW&&>JOv+CFK9A3XKSkhjJ#rVdHrW=#i8 ztT@`#9j5KW!{IC2JOAr#8G0j;Hic*&UQ{d&@Bq$mOfX1=KSm29FJckXghfUrSt*W2 zblN+V<@AK9)%bx4*I(U{plH-lJgD;o`Ib~qU>>X-$dY#Rhv1VJx#Qvz4zVUSNnPlZKk=f5>YRqNJJ`Pw38ep24K)Z?$7HrCaKgH^Ho#E_WAa1>x zX0T*;3CcH0E#4DF(Z>@)=Gfv1h-5=1R{oh;YieV!nC?tS5%x9itoZoOlKr~hM-=@9 zaak$g#@jW+k~41EG>Nwe;%8c}H{;r8U zw+XyaAgw7M>)~jg0FsCaVBawrUFLQ^wG1@njyWTfu9>W}V63=}V~$!;&ICe$?X$DW zi}~-qEz@%0wK3iGV>+yD!>EUw1zzP?L(zzj!7KgQK*~)IVQONjeKvl`I>Q{SDvs8}LsUko8 z40pLkIzs|(7>KL(vy+tVUD(2LYuyp@GiZMu>O0?90pp{%<&_I$%Cmc3y|ad_V-@B& zaqO#TW8|kLlw9AD>B9XzlbO$4-rmEi$VGa-D^hQF1yJmsDRshqUXp6aM}M-lQ$T4< z5O13G`Y#L0G5Jaitl^j+Vt3f|SLuTc{pqqR%YI`GLSI{{)qlywE%stpK<$aU zh{7-=8c;xr*O(=NW+Qs#JZjg!05 z60V#J0ICV(WJ(+G!Ww2+Di8$7@{&nf3K8 z`!x$yZ_pcz^wVFBHKY-FWHIiCe6yX8jlvc1=L&o7RqVsBD#WTZYZdyp3?#i@0#F?I z8mh$Zu@AgpIF6Z(Gd5cF$UA-9QTDSAFHFV^oVIt60MoD;7G327XSi-9QcCsKRENA+ z?iSWfI|RCJ4q?TzQd^WhF`cj_0v^e%mxgB6^Cs}+dxwTqhv4Z)`EZFp<)uM24{nU* z)pk>%^R}4J8I3hT(w{eWEy{{SNw1SZ^3f?W`vjohcAK(ql>k~C?SV{yI8)mef%}$d zT$;Wb%jXJKwb;qsd;Z)2fANKNe0s}lDwUD{vgNxS=Xm?idZp>b&ym1JdPX*=-kQxr z9h9c7)zutZ>UM|&2?)RKOx7CItaklOWrvB*hd{%Y>Ls9Xf4PRw&9}7m6Mk+UCy!K4bS+wP5cePr1#XC*{O9>h zq0n92I8(^pn>$meG>u6d9m-ttISnHZ%U)%MsNR@LKW2y75Wn=rJQpGL(=qq?mA|4J zfAmQbW@Ga817yiF4I|7TFZ6ic*^}BDZ=l_9)I)LFWZHev=3ZY_yEX%-yBIi;%-F}Purg&iL(EJ_Td4noy8}L zSr|?HxBe4Ngzh&kMH6mSel$^Z)g9c#`;Vv|nd0wI{x%jX00R4M7ChWU%6Z%hO&IZc z=i?19iP*LITDr?NzX9^ru}94-55mQ6_8{J;eRh+;olS3t${-s0-QLvc$HO@l&xWq+ zX9LdFQDn z_OF(J%w-91%WhP5aTV?dp1f_N2S_J)fd4md51?eX@ks4~?uQ=0lkLR=XFO=`JSfBI z$;az>)Y^G84nMky2T+R#;drnI52W~sREDN9+#RVAroS`|??d40ahs7qt+P(o3^Dz^ zL2yM#C5XtnO>CCq4CpcMg_;VYHww_Wc-y-_(Dtj){B+h^fUYwkf8X=Bxey3cv?*w>JXArtu{!`hl-aVJ381Pw%XsNIW#x?oghVo9<9tzh77PU>Sa(B{TmI%74q_ zKPaL5mHIy@Zh7t>lzSKLk)I%qC(%BL>}~VSYZ(OfT`!omgun2Hm6oE{`5lCkr0X&DQ2!t$PVZR9AZm+}A z5m@S#xo#TG?Jsx%5s_XZnMi<)Z0io%y6110E_A#7YPvA`z@B#VDx!3;dbEnT2ChPn ziqN`Mg!`VeiUgPSg+#`qsXdX2_V5tFQo@~C+X(Wbo=zgi7O5xz<#DR{-1@cQp6ncs zwUzI0^0dIhm)ku#96U*Ap{K~uNcJ+)zrWq&hOd1HGZWDgvvK`n0PfcAe9C6>PpH~-fR;U*8!#cs@&Xd&O(QodsKONsy8wP-K*u-LW0!awt`=XjcxXP*N%H0wEd zK90F`B?tH5YTZSU(_QLvAMDcBgHWoLQcV!_th-<^kADN?wJl>K0`Ma5V`Hc9Y&USOH74I_Jcmtz#s%!R>(XDxcI9}t#%v2= ze}!X>a)$4~a<6WFvQ$=^eczvk%xgf4xUDzI8JRUM9ao9bs}$1`Ozkku6@%Pu3T85~ zz!TGYR}Q`o z$jN205k*{+_qJ`hy!!juV=PUY8=z?Mp ziVyaqjgfI1Y?a?8@v2;S1sv3aeV5hUxtrIz^icI!Xsfj)2_EU;`HtdJnI)q08j7hq zURl}K5E89CSTLIkkGMUf!YMuG!B65k|OB7tIL zwv^Ou6Y;%&1%24_PCA3bSp+^hF=3xgd!@kGNrByX#go{bMfAW@G0=8IIv*Q-5gR`Z z)61BS!SoEK12DyhHn`6f7*0jU8m8YHL@{$dddPqIq3*+fS!F%<6X>?_F4D0mp6wXp zMwspJ2chgTnIG8zUfq;P<7R~v8D1CT!e0~)i_gGK%B1R&PdNkXd{@H`H2xzvPuryuD-AZ}Ax+@fpZ`D?ZqPP|(6l-acya@gPAvuR>iO zBy2gNG4xgQ)B=4>w^|<8)Odp@nHexn;^^-d>Zki^OGSs7rjM$Nl<#cZ(VMZ1(^B7g zzN;F)^Za4tcb-6#*8pI>o*Mi%VD@}l1Fx5scXBBY{Lm!c@K(Uqe=&gT;-x$u;4+_W z*n$SCrNAs+#RI&(UmNh!bUqmWVv6@(`WL31&jptK@44vgj-Ag1cE|rc7uXwN6;Ix5 zdU1>AOHei~Y`sH(DQe_u@XBlO`5H5g^+ zgQf|a>nQ$zH}J=$$)G6v@6i8!4qNd&ozG$CE$n;_J8xmR+D7Zb0)6(77b^E)oSvUvqgynU9uL6@T6n!@#pQSQG7 z_ijh7r+1Z`9lbJ{H*ae2MF;Lyr&g{Mh#)bx%LJT(DNb!`}I za!nwx$vzon&`vLXoZ!EbT7Sr@Pky<8EfK={O|H^)K^0u|Ybc3nR^Eal61O?hvzd@XXXNv0klu-eju#XD@-c z>aKvx*LZYe&KdiuOyklv3*i}6_WT|?GV0?h;*U@s&PjP2#HEva^Ev(3um?NbH8X^O z8*MFibuNDN7SlA^#WzhRVZ6t5^Kn-!h(v1{fa&MQ~jlH z{Q_6Vms}EP%s2C%u%IZ{qs(w6Fk@`c^YKCAbv^tarrtcRiR*nEJ~LU_oJjzQ3Nit- z;!+a?B^oLt2?Py-BH}KJQd@0BC2CzD7^qBR6s>J-?Si$fw%_(E)z-Synt%dotAN(M zirOlXssR^3l)M+e=l6Wx=Z~4W=ggTiGiT0rZ`b{UMuQk8c0RxjbW z3b*PN>u~}=&*lYlt`Y9UafeaeoDIv?+Q@;llpfLi^^kr26{B902i@79!yWNn+@=wX z*3ab;R#(n#O;mB``2{?)ML|V=#+EqFYl}M{HFBip?Pb=r)KRAN8()%0A7@I<{dgF_ zh=LPu@25;cmQ&k^eWm-urE|EC`W*dwGQLLJc;xJ|e?EZ*XOYO%cPkX+*T6TmDDpS{ z=&j*x-KdRWBJkunX8WKt;orZ0ctVEbm{$6r;1z@L7-Xf5>XQ~>D$Af*=gqhkwi8nC z8OuNYNZ_!3gbhBrK+m;&&JIs})cjy$4$U^7DKc0M(M_<2Ttdz3TLmEeg{z}D_rYUt zsXM#p^yNMSS`qcAnl1f=m%b!h_u`AXnbMs!2ee6xuXQbYY{}pBKrnq_CBU~_uo74W zhw0IXjWLR9^>?<+#|^|{vaY4OE#r{gYtf?)#D_)WrC+8U`VsYzR)1JLEKIVLq5w9x z7mks2EhBN0mnn$`RMHM=D%MZ?DPR}ja=ny99WpOpZMEzWt{S3mQ=jpXrOs_pT4wX; z$ujPoAo`c&L~0%4w6V<_jGJI$a_co&s7wPH(~3(N7{2~Ka#TxbUXCXxje2Psa|{Lr zOv%FrGN}V$*=yM;<<|9k@mXNl+uv#>VA-wfoy0Q6y1tHBe1gg<2xB~JU0+Eo1JV64 ze$H^P1E`ccQp4_1F%63!Ouo4*28ZlXJm2i zX^7JOy;YyQh|)F+04jz6X!ef&v5EJZEhGE9pPR(iSiRmegG-yImP(0`q`EPg6)f#`N>YKUZuG`{qOvx1L$$Ijwya^!p!tA<&Alv%iNkRV@ zY0k)JUEY>Z4ar7e5%*=y2E>ZlefcT)X5l1C_%tQ|b!6a$njA3~{o)+}ajYO~W4Xs0 zBJw7ks1b{ZhHA9j;+eE_U7;M`MCkWbi$nPSfJbRRd+=tNXm(E{kFYg2Qt zLr7eY=rBWo4dhIVezLz-bG!MyH^^4%dTQqaYB+H_1TD zCzW)DeRiFHma66h*+vz!Bbm@Pl4x%Pv5tfZ7GJZ!`Jpoe#Rh^ef^=s zGsiWb+916|_%z`WQ*9@E2PQUWPZvEKxd86536BG3Dr1!Icl9R*-EoQ|FUL?h+mi#y-H${s@JGBReIb)a-AcX#Ldn3o1T+@1J_$LH}lW@(TNfiZyY zwfqj7$Gp)9;x?-yj{$Xp^nY>s57N6^aP9g4;>qqt)}_EB%KHK>OPi2} zSR2=_BMo#5=%t|Z03db^^i3RFaK04KV0pKYb^&QPw%~m69lS_Ulq}WeWX-xNrgYvz z@fLWDmc9-@0?$QJHH7XbU<8pEnm{N%U<6~X|6pc@J=j(SV*#qgJl|{|u)2y{bVK={ zQEBt6z0?4n?YsuZi~)~GU8G{maF-_7Q1#bTP1tPZlS)m%UD=hfw78G>+vA(tXtvL;Phk#*1{#F003~ely;XeiZEtl& zq7Z!DWuE2n5rQwf07~Em0`D!6(XrTSVD`CmFa2M-J880;FASX=BkxwUQqcKIF$p7Di12TYfAj?5J{*8doc^M-ZxlND2^@*6Pin z7wmJP5b^6!n~lyP)@!AWg;i;}jVH$8|elQ5bjz~uXk1}8% z4z_MN5a3R^|NN9DJ4vGCQ|ahW=opD%*O#=;yi3}&e-7}df<}Eohv$7k&%2HPF$$4V zSVT%;N^?J_odxqv(eNV+N;grbY#~VrXC$KsiRm!0fBlm-F>^c!@a3V)l9}V7_}cS) zaaWc&Gwm{tS4Fv3&`Lv>-+UDMyY(6I1YO9ziD_Xj*7T`1{f(I)s*h`&1?=Si`ppyH zaM-;haBe%BdPY#WI^}{1rYvU!6Czwoo_+yqJVm0vsWy>=yKtg)(IlbEq5rIUamuHc zyS%}NdRZ3$MMH7wgb(}db6G2GO>md!!TqhjV0pDh@>hwTOUQs!K5%lGEK%}PiQeVM ze+{)R?B==pCZ9D2}^z>aQj(CA+flNJo;)F`?J3cjmh~MSx=XqXv=T(hxuKSiltr-5%96rSqS^r8?EUF`t@xVKE)=i_6^y1y(}%Lj@zKpi^B z+4SC7L8>t%sd&{(FZ6_0enX4BOusrA?_2DBg7EeWwZ&e!e-E^sKj)?W!C}3=Zw@bK zHe8=ZwcO-gk3_ITuuJwF<4BJ0t}&7iK`@ROQJ(aQbJv-x5ip=jdMG)U~ z*uX#4c0a0jb;x-EoZP``9H!FhFFtEXo@De-tuZu;KBgY~+JoOmBC3sQDDLd?%E&snOeS3Nlm9enTWL(Yw^p)rgTC}N?wVV%e}p~l zf;NCHIsVNzx_|@zKEV1(qEZ92KvsFy)FeWE>QI&`x3NsDP?A>KugsvJ(4vL7Fr>R% z5hZfa@+Gh}c;(l8ig3NLS5^tV28I2TPYrr>G@s&%Eigy81M1al*oha4=8gIj>%z6P z&$xufqg)L=557OmHzwB5+T%yDP76%`jLZXK&sTpBb^3~}G2q9}FZ1ut>wQ=aDz4X<>=Ss`20ygW0^l&wuGe|<7h!rkBqh|u@L+V2<@}) zDaDeLBe}QgKGbD623)%{G}JfH$SR)1I|^k$*huX*+a&^Wf=8t;AwrFT+1Lf?u!gm+g8!jK+RgT zo#4U9YL6R)eakikYHmIPJ79y*;_kwjzFQ<;AZAM!;3e0P-oIj|T4#eY`B=;~viBm`N3MjVa-eFIl)?MT@`3`z1Jn@2z71xlr@fH}p^!Czijra`|l( z`1VSvQl-3iBq(Ct%B2cr@}e{J6GrVcZB`CgI`}9dz7cVFz zRPgpfleP|V<<18Y#SsO0XT=I)(l(ezkw6t<#k}$M%7xmx;pCko3zruVZNng<_cdR3eTblcU^O-Ck#k)Q6V-0qEC~;jd3;V+XSdN0&>>e?4za_-CCS&_z>f zCCAqF6(`ygj;wnuQxkdO`Qq^+v~42u`EfepmVEgN8CfeS(-Q5+>-65~fdNq>=#;~e zhXZmD{C5vp_XltCB_m#aq4OmX+okQk8f!w@4idwZ)>Y+aI0E{=7?U!`>>7t|VnkZ^u7EZX<%69;xy`sNo> z8H9y;L(wmTR6q(i2DrXL!d}3L)Fw|Qk4ZU-V-EV2$?YOXnU|a_p{AX#=SbNi3ZYa1 zj~wtuFEWFt?MdQ+L@{X~$>@29lrIQ*Y@>FQM2O!qlf$(2&B=R6-(h>;E0A9?LMD9!E223m(Q0|z0 zp=AtjD~VcikClEuT=LT-J{$uoPgcO_cz^pdZ#t2h2zxD0)+%wNs?5(2PJoNd#{X*3cL4iq1BuXMg@}HVpDI9VRi{_kp4E zfDxAU{cM~Q6LL7LT{McV<-GN!FH`cG_nlMDKWv>z1<|%n15;|)*Q=G@fo5R_ktbw`aV+C}YjYu)FdpVVZiYT6p6o<$0kD6Z=CXx`hn!9X(yV` z!Q$CKH3RjQ`*K7~8Bd3j@B^U$o$v+mQ4gU6v9^ck3u0~$5dk8phZqdvl^!AngkKLa zI+P55v@#Uxi*ZN-bQPr>58{^|Vls%GJ;V$UMLooP5V<|Xn;=qph~*%LfCyQ$CypzP z?yybj;+TyeLQ;{jn#6U~OrpiK$<|qD z5*n7jhq@YINrJBH#5NNy=)!B3w&%HvzXFMc~eN-P?^trYhzc>miiM}aw8WpgubhZ z8{@vdIxS%D3)zGt5g#wo4ezmfokmUMV&cSi(r!iEd-IZ?VsgM>s$dD%{4=6zQq=&~ z{$X$6%{%wB&9%|XN(Tf76B~d&d(l_(lDg@sdQT&nB_D>Gg?-fwlK>C0AQ>h{Mt1C?!e^$8D78fjFG*Nq7yV-d)yH zs*fc6bWch$vi!Fv%K%CEww{EENLbmEz)Ql>A}J+G499(xXtpFgq9`C}h627J<0VRgxK1zwR@NpnoeG0*>ic)Re>zNJ9 zAYQ~xDlU0~ktDxubl_i!H_yUZH z1^iM!05N%Jg&&d>z9vj-Xt3`r|EY|nb5p+j*pbv>>rgQpBL&iTus~jE3995ovBXjE z`d(2%tM*iRnY4n8t`YmPL~rn=6eJXuJEYP-#w9js4Goscmd&>6r?#$OW@FitjcUo` zpH{2=cNnW(srDkS`CASW)qV8Mv_!6XCkHg$UkPA6AGey-UfXt5O1CY4)A!9m&6hSE(a3g4BixA*HtyAD)(PP&(}*hYy)+Wz z?xt=^CqIQ3VarDy%k|9mYNqs`%L&{Y*r@n~#gJPh~?UYY^WdLpFjG ztSuwOq+le{AGK%8MwLC04RPhXp95XUnE2VfyF2F3|8qOwn)dqFD-Vw(>gFd7*{B2E z@&u^Nb1HI|eb|nr!;b|!iAVDLFg)q&f-bKXVNruiy5+?Fo&(z14acXniEJ-sSagv1 z#=$vTi-zD>tm)8y7jEj-sQAiB@;JS-gd*#mwJM@_xl=LOk-$CV5@QvUPts~_+t?J5t~5Gwa=DSt*rtffvu7mSd%zK?Uohp- zb5AENOVR&A=tW!AFLs}wrT+PWcolU>%y{-HWjXVrS}zV|a+<6OV;AWS0g7P_Z$(Ym z6?MuMHU%XdIV6qp(>8w)YgEL}X_W^}RcB60+BSetvHMtFNk#}q$zNsa$-93V=@ECy zCNg>+Pi^XfUDf^rr!uEFf#|Sq0 zSSe8LuSCqAZT3&pS>s8?_|$-(J+hCdDxK*%wa=^}`oII@iTd|hcpixMsfPuV#HlNx3WX&;2zCF~{S`hOi-D;wyjw_)4i{Hn_Tk z_|^v`>YqH^{&;I|_3wF0Ddp!sO4v~)aOjjb4PXuJaAqADNR)d5NijQ5jCeo$^Ah^9 z!}}2B<~~H-z6NMQLvVd9w(Wt09fac|C^V@OoD9H87EXSPT}aqSoQ#7ry4~`!hJYRp zFwkj>#ah|&;yj9YZF~O%?GP5CjQpRAKl|t5=c37ddqMtl_83;{bj(+8o8h6i*u20! z&5@DAuTZ<63LQ}59nxOo?`YJPx*cIY?4qDR%M5GW^H%hljk9b6sV|DN7{lcwivEQ4 z^e4(U0LK{8p9Hfw{~PBMa1P(>U_YE+!uc?q_rZAp&QIc;!FgYt%W(cPtS4G$BB37= zaDn{-8O~!1?N3^?p;)-Jfv(ogoj+JW=XABv%vZbBdj-CQ8Rx zxQ8RZKk{e6m3Ju$;g4mW7{wU=;s`sABg%9RMmc^Q3Ar(eVuvFE8yQWceaV8y2p8HM z+!vQFQ!Eur)LqlJkud)ldfDTLxboNZE1|Mdn!O)FG&R$u!C}-tCp3)V%BLy0SB#~9 zA7YY8uy{COe;-biA1xqZ>}qZT>+TDFMQBH+r!X{jVE%pziuUva2^kDBch zZ?^#JOf({6=w4E}8$akZri6|VWv;XIb9XfCmT@F;AX9SttTe`Wft-Fp zFD2Xv|1du;>%#j|SGJUR&)B*`nT^X|I0F<_jqB9nkDUP;yYa%VjN(r@BJiu-84*My zF?@QD1pjo8`2Ii?Q;nw4lJHOcDbD@cXEjthlq%`Oz`Cgyu-ItZsU&eh?nhBX(FAIi z`!6L?oCT$Fp8@qND82hIsP8}}y7z$E0V>}80jPIDMY(OD3P6Rrmw}oOigV8el>sWl zod(N-*RT~U{W*7h?WIUhgr_kO1NQ?alnZuX!YA(#lJK$GZQIAhOICfdmx^`2_53SD6Bt5_ z{2=#CytNr`t#PM<8l6rS{t7XpJ2sdo1_Tq<8BCPn!DOZxrh)HVa zZRZgje#dqL+x>YSiiV&r1#}RO1F_W~B7YWUehYA%S)o|XEkn|JY&)?1fUR>VN%VTX z`n~rwI4spZmsoIo4;w@b-mBP7V$&o5LNsA)Grp)G6S{Tf9S*YgUk>|_YY}YU+R2J( z*L>7(G;j5>3RRfD6EdZcwy-b+?So^|KoSv>xxvRn+oni~DWOzE$ntCeTJO94dYHl< z>YIqEy!T$9*h8GMS#jjs0G87M1J=$)KonFmbcOGrNB0I2$^2Vf+vGoY-PYSBqi5@h zMP>3<+dAqsZ8S7--cv$A1X2-j$XS?oBTn<`Z7#$w>Bv19srNpCmsG7?(lrZWP+jf% z#8msHsLu&ttY}ySZT98fog8b7+!VEw3@)e%C%aysj1|v*>zLOpJHOO?J4@fWjECmq zXzho}gHwt6S;1hPLTo034zfWc!ZT?EH7O%gO0?g%l>35@5dyxrE8nm%P#(BFQPTX` zqy!TA8>_(3+>44XnUrwIr@j^vCh4r{oN~;(MsC2ZhXd8W{nRC6OAqHvu95sbQ~$GL z+&>sFvhP795Lx$f;VLzw+TzPzLJK-D@mKZt$pvq*7cdi5VC&5HW6$FVV;t_AU5^fN z2@QcHaLvYF6@$%$J%=l=V;~%jB?U#j0j16+Jv-D#c5h`)AaxCnO(> z;-xi`lQZ-rze3cM*|T20^Cl+TYHPxGuaJ3`;2O!U83nyG&A$1sA+XSl*%bHH`(Km9 zxLxmazfV?wUQ!UCX%7+m^kbai61sdTxBUI`rLS&Es*mg`>Vqk3{nJOG@QQM}RorZu zB8K261m~;i+10qd0O+;S8Tt>h{9sT}BWazE`L{CsCv>Z)H_)vP&7#%YnTlVecjB8z z!?XH0hqm`y6SZv?)jw9-tR3LTsK2}MiA#a;~{+8CX96QdPs42Chd>BJSZ`oTmv2qCa;;H@B{yb?rmN1<&u|ACW}xPWck;fYf6 z1u6a(2V25hTb~su6}SG>{JnjsQ)GSc9J)oG3CFU1($-8`J+WsuVFPww1*%c?vo?O=UEOx z8xUn9wQp5oIN0@+Bjrcr-|v}}i$aZ>P_BEz7E!)Fig#=oBwCu2s2@T2<{3@o(BzCP zVqgq)yyKUkqM}_{^@u<5d-G#o5<>u#FRAZ*U8-Q?2-R;^8#(;lci$1l;6fq2@$<(% zPD17jHR_0u)}>BC6fzZ4`lc{@lFRnUR|mP8V#qhxaKFxQcc3Vb{UyE z;J__}%xonWrobj+io!z`#3JZqe^T%Ohj3!KTQOEKvSX!IxM3P7n^|qfA9u!+kHVJa zi6MfXKXnbuh6Znpkz`FZi@Dzxo5gHOKcaQh-QO=xe{+JA)PE@xJs(V71~X&J$dVs>x5A@WW;&tsL|9MeVNx#Us~KfWv+< zLw)3f?`UrK!e=CMN!DwUh}^6;!u|ec8;QumDVvv1h^4=_c|p-gGU%8xo$&K{ud#kY z`3GW>+WyES)bGCQG`XJ3U@tIl7$jmB@d?i78S%)KILlv(vaAXE zwIr_~)eWDU%CY4o&VsRst6iG;XY;V7-JTfo%NZ(PrIrjff;GroMaKnElNrRmqg{jyQ< z{#G((SEhbE1!MDvfE_pYHfC^Ln}J~^gO*518_!IyYh&iPnCw$J5)tse zjY+4eb0ti1~#AJOE z`QQq2{mt8r@*#dXW*4$IV=>bVSK)-{!6b*7^AD5#fJM*-YVv-XGy2~t`M~VLEl-g= z0{&9WoTtWz#A?RtKbxe77EQy)Y8~q`X-M0f0SW-Zf9q zt~e#KG!HoT%)4qdUFpLf-+W%%Yz_O@tc4Rx{MXv%#m1&y*_{G#co#qL%~{SvFB7UkcsS@iXnarY6LyrpWf0;GLcZ7_ERxqI#*UAU zNE|97im3NSdi;gegK$ZMOUQx`+jmpAiT%swx=?S5^>(UYhyr4A-yMk{R4+HHH&0jp z&aJ<28MsR4hEoYiTVehvtgmM_JEKibBfQ6(Ou5i0rj-Y5sesQle6-Kn?utH1XqDJ* zy+C@!1c(0u9QTfQgnms17V@!C+Eb68Y=C36FuSs4C_8jsmeXV(rz$(pBn+)Hd0nP4 zX*=K#T=oW;XUBs|PQ<5J)8OY_-RvLwl6-kmP#J{P;@ZUcR-(|f46sg%#ksyVv7lcd z=^ROt@-(oFUXk=PAkAqK@%WfDQ>tKOQ-w4{B=U+^1ZbTtZ+XO=_SBR49$!R|vm5uq z8m}_dp2eD|)2VhW?1UhgGRK*z+e#8MrA8h|LfWvDVR5VqBns91A3J=hD<)m7<$IHD z{UK5?+$`L}Q=#|FI>d4H78GpKxK6tUfV-A}!=?*S33I!TDNpMJL1Y3&E!weVf1M5HxJWjC@q2;!>@Oghl5 zUH0@?gMDtit`6!^iEM!28@ zqBP7H($B)7gE5~q=&Fo|NE_8?5S)w|aT(<{FUOSrI$OaBmp-J~QM?)4@sM7j&Wq;U zdIMEuh;H;&{qAWMpUh+Oous8#UU{mw%AjjxO5SlzY~@B3JW9(=j!)B7t-A|C4`Tga zM*AGO(VnL<=x*WBw|M)USc4RuGM02jt4ls=3xDd@CAaJ|3bn@Qd+YY3LO;tikj+~(Ewd?Rz!X?2MsOs zd~(^)e*PqWNk0soDms8PKvG`~WtsDZrP|#;i&Qqj$Pj#45wo!uOVo~O31rtq`_S`g zxqnY|=vhfQpaOVXhirv39%jNV6O01HGEShpnrwGE(j59P_~>guzyF#YLdN~uV|Wmk z|2T;$GJNlW1-bZp7HSC=7nc-tJ1QDM`&%MV?M>(3pGZ2ax6?J(>sl5ElgTHZ=d)z?Fpzu{W*>HiF%{% zG>ju}ML#bbXVf*V2VA*#8;w{Sm%gI`<9LOSzFt0HYchI-{<2B5KJ1MgKvwB`i|+Z8 z>eSF%r#=J>PU|=$d~F3M6lezfY&P2CYGV25M&5NBhcmqE4l5wE1Y@c<3JrYw6(eIh zZP1-IFe$j{YCD>!={&D%;F**L9vNJ2wzP3kCeDplK5p;g1uRMHeMo+lLAZ?bv0H;m zt3>QNKS@)T%5|6J@i4&md8=CkD-xltJZq%tDOZNdBclp2+T-zEtU)(7w&-u{;|p*6 zSN1H%)s3W8QAG{d4=Ox^w!*u-NGcjy^c(h?LV#Mlu1d?jmTnKdo@Sp3(hIUHE%#Yc zSG6fy>4Y6Rja0s(%N|-3q0813hRMXF_{&{(F-E#X zl_~eMA6c4v)=(yvYhtBZA??IN!Zk^JhLIbhap;KkixFQPKsxQ$4UDOYcm2zjIt9yx z!&4JliQ(4AeESPtK!>d}MAr``t-Wga_8Z9P;av}r5ew{AWa$>F1&<-x8A0~f!WaS9 zJ7Ad>K`J|O5vD;GF%l>RbKbjkGvxr)OND~!2Lbpn;8-m}O6(xFA?u-6ox`htGk%O3T6nteeO8pH#PA^*amNd-aQ z4vZzSEqf|`U&3hWoLK+}ial);E?N^W#Tlu;V0{+6hx~*0EV_@kjW7Hg6VqUk;?iKz z0fh5d_`5;(`p}|UU!u_z9@|97o~4p<(u!qe8YWtQRPZxoQYDu~X;Bd^+cQ#dd3HI< zFDWM>d^s8XX?HpKMwcE{bW@i;sPO71WZTf9KhU@}g|+Vz*77b1eA1iBcm_MJCmYDG zfP&d;EQ=Zm@Dh!=GBx)c-gY}mE91pRVx<1GlHnt|fs-9v51SioQh#bKz6q~W!BX%s z@rYX9$Lur2cmjP-aJ64yOm$Mp2q%BY{l+908d68vT}9I+zxuQjJlYfQ$e;|uss7_V zvKIfma-MQ|PureTg_ALA@UG{qVI0l54M{Y6=Uc+w*h{QeFp8i`<|aa01eh94;YqW7 zE~>mS-5zv44f;!bELt-Y$+!+_>!dpY>~wB{BwSs)~WlF^*Ci7iLfflU=Oj+6&o?}Vpul_*@J5L zw~6Y7?4btT8I1H-gt;1oAv=<6^ib&yxQ_Kfwj4_WgK$md_oFa3-U!>~6&U6Im9|QY zRC(nltPMV^HtR0)%%?SmlE+8uMlCbmFxz8m`6I>ijf}B_|8*)!GT!Eo1rcw!n-}J2 zczb_?uFJrfyD%AxjY4583>R_QVifY?jl$b{aO$bLD$B>*XkXDi$TWpj8v7^%;3RZs zv1}01W4|%wR|zTcn4XUKrW=G5y@sNH%(Tmp1@Bv%a)g;AqztM}IfG-mrZ(j|QzvA{ z<%*y>o*FT(fjz#wnJtDVQI zo#(Fw+%yUqc(q!S?zyFMWSugU(g7rfFq|OqU#AxC}zdw|L&FB8B{o&}$2vENco6HG9sse)SCM+k|Hs&79>@ho z`;;hg)Z82l&FH^ZmPAI9xM54}hA4T<-ug@>T`*f6MZFS6@9NxYPnM5Kku#;tV{y(X z9$*`r^M@7VFYC@Qn>$7Z6wiq@0w{QM3-rrV+kD{=bYs{^54nWtE1XwfGDde8MC;l6 z;pF|TTQ5LrZ4k09@Ui0kxOmza-Cz)9spMQ+f1_h)h*5aLM_(}No*J2n_l%BMUtai& zkNyK|MI_ue*r#HlQDcn0c=R~c+9&NX6049HkDviqNgAUs!Q8qFiKmU!%M?ct*r#iT z=;{%@JdqQx<2)Jz)&-+*#~6LasJo4Pf0bS<90IiA!hwe9HbZo$*%5r>l$@mMVhSQ# z(_T<9khNQUc>s$2GM6GPL&iPGu>C84lL{x=j^W~8)3}yfux>lOuwrg)}QlVR{i26FT+@8Xkav4)@c4$Jk2icnpc;M)Me`nwP^1bXjXLrF2B73t~Q$N zV$9zcVd^})I*{lE|MH4?`vL8xviCJ=8^?rKKHO!n_c4r_D`p%g43c7vVa&={#_>x4 zDb|A2Gmh_G&T127v8C7E3F4`~2HY2|s-=OhrO{q9_943rlnNynqx;mFw~_^bn!9GS zkLIbH2Ky+ZuD#HQkG^3PVvxnIGEmp-MPgl7(JbB`&kJ3KA#*hA=J9p~FPsM*zdpz) z^g($@iB_O-@`3^xjdq%+I?$DQM9h>&ck+TSGT7x*!*THegRY@aip8lxV1F1g)ewDC zh@VHEiPwK&6jVm4FK&+>ja4%*#4ji2b(>o%nv{b+qP`7O3n#yY^Lxp75vJTO;>Oi-8X{XR7j ze9@3eqDk<=*%Gm&|D+;J7SH-^gVD9_G@?eL-JTYzqEEvFh5BdW;(|!bp`yxct3BwP zQ4sGp$+w7vmB z%3!LltGE2=-UOMm!WNp!>?FQy=uSfAfBRK7OyGh}8_UEo+euCf%3VILoMd1+uxH&datvd7-zDSHZ)b}%M#t1W6ptzEJT7g6rg=brzF5H6evjGIXNJf_=BmuO zH_~#S7#*(zx9;!HDUIuIQ4;~A=g`L~g88$nlKH^j>##f=8%%~?g1vDYoT(sDdTg>) zt2k--MEknO%_)Na7yo}F;q;H8EnM(qnNinfx#0eEy>HG%WAt5S)57g9q<9)!35||I zJnf#SU=Z)RC(5fAQ7?OCTu&+U4>bm5*lIg0EiEe@%O~^ESMf9r`EnInRqPF1?~mV6 zaN~a)4~xd5Fx3b1RbZh7DrloXg%=7G&8MRm?Rq{p9i3>VKq-Sh7O0S+0u{^&lg`y(re`$VNZx+Cmx7;&vVvE4Wj04d)>RsSjudNF`?oKf!ZX+_7n9fz12CD}8_Xr5g|5rdTK$Pksk?zeGsfgm| z87daB79t!o5(v5P%M9Yp~p)00be` zGMnVn4#D9nx6zRP$YyJT$b@gdoF63BNR|E?X}D7(4GsaJGXI|~6vv3@`r%S-fx{F_ zno@H+ASUQG=c2U*Z5%G`n=%|>v-d~07ElP!tw)N|>Ffg?pmL)|TCx$Yi0D8y8mYpi zky7vvirq(Pq`fpdnM&x`_@SYS3$x$!kZvsUv2J3)TsoV>|Gt*SUfp{}dlXo>n-y=a z?l%d8@;vIa=`l_5x^v(tnDk5dymLlfo|78!KYKE)Z#i#Yse%7!dTal_CwPa+3wagB zCYyJxDA1e9EECQ}w=o^$lxixdpQblwpJ+7ZG#JZ*w5C0ir_`Ylc%4*2 ztJkF&%N9Ngn0m>8(11Oo9^G2p>5(ZW#R0t{E%(GkySUbzix6b7 zWiSwyv8PsXk;1tF2Q+e$4=HK`CiNwbEsu7tpBV!T1; z2&*^+d63?b?$teCLuGW!0XeXS;=3^$Xu#%3b1$XlcA~!Pj1JQZ zA4MNFwFzsNpl-}R+l)e$$=hFLwcJN6MRbS(fyL3C5JWp-yX(LC(VK^!W9V)+3PJzR z=pu$mA(?@>veWWsOObHS5Pfdl>a`@ewTn`5^^}Ov*{!H!1)=%nNztuDBsxt^Zb#LI zpla8(|371g#6wZH=%7Wf!^9|5GAHgx|7X2fbpqED795jBz>r~_%{pa&Vx9B2X z*Nz6!eupMO+wai9es^dEb%$1+$5CZfiJIuqd|7A{9bVr=`wb`yy-BB(%^HR2E(Gd) z$#puu&TYL;2d}(N_p826hmXHb6Fu{G^)=d;l`>5eQ>WcXj!cxx|Z2=eJE8r6~E+<)Lc&i^*(F1`(uI)6_!v6&k~B=7fP|7n*kex z+Dx`8mG+rNowKg3SqR+%-HJy}6df=x)wf~Bf?J+g=doOASqiOpbj`X&hyq)WF`e>( zMI3@CBxAS}*P}M%m|o$6_~3z@OwMs-*!v_}g-|CnM0>Ebde+}V&hzcpAm_Vk0K3VgT>U~;&fCrthzmaEFZE}gL&C}5 z{jGd^7sLa_r(lx-L0<7$9|Bcnbqi;2O*$n+Xj_U zQ{?6Y`jp2PU5DhR@RDJbqP)RAS8nU#3J%)U{Z6D4vP#8d^rjLxx13vzKW`6eYvZW zM?Tyc^Nqye9LtqfrQw`4{!m}r9ur`H~=ciAWVQqTS7=3bQNUH?R^iLtH!XVT#=^bDx zS`0epje+%cUTm5OPajvc`KRB8Tm?6tg$@KV`JW7e1#Ryv z07LdtDzb*%1>q_0>I^rkU1GYjIUFM>PdWL94)^?Ws=*L_CslZ2h??n9gd3>K4IMmH z3l7c5q;|sT1DXN5@sMFiRs|p39p|SJJjTb7IaBq~r*-E?_$78=@~BhH1J`CZ{U0`)0qQ4} zX~!!m&mfHN5U-HHNT6jgBv^+)?U-mB~hyX?%Iuk^jS6P z;wCklQuh+grZVit69(OPkr{PZf11yWG68yW_r(nA9g}Ne9SwvC5j}_6nue&Qj?-vQ zS=82a`+`4+S+uZjBGub9kxHE31A{`zD=1eDgxQ#~?6LcK!Au45W=dlhZ&+OwFBX96 z!^sUXTV4^57)7cIqWpnL!rH1|SSpPaN!&$__wq;*Vf+ILxheOWJ@gZdD?i~Y?@MxY z?UuW4{!NO!B;;C5KsHTx5q)>dAW!cBhzwK}5hyK?5B3rPkl?g1S_ikmr~dLK{mEpAJ>D@pL*10ir~vOMuN zQ!-W?p%$9IBW+M&ir-DL`|rUIXi*iY@~7o9rL$naH-L#$w;at0h!E;}k?B8}Y$xK! z28b%@@{ZERfH;)>N09Gf;JFCHd}fSF_AOHAFq5nS*~Z`>sO3LEVHB z$o$4R#K$r%!b(&_uG5#mEE^@my+|?nY>U=t; z$b6mQK@&pyu>39=tH*Ivh3s~WJzb6kXF(rZr`$3?+(+DZAUPgBxJ3~}#@fYYmC(?S zxAch|-lDMdA+#o(91qI)!U@RnN=3KN#5#k67lXkDSLwp?o_8e5G3q%z+4R4?wl<~; zoscD#zWlF}t4?#u)bk~QX0H2t``|>(r<0pynUMMk4OlQk%d~7>0BM$S|8snJ3HVWs3vlrwUctT0!+p@M1_BWuhn-{BvfT9_RUsUn-)OdqqIc?BgF@PV2 z_C(C1GTYPY3IeoQ%WO>;pU#UyND!1P;}A338AyV}fn<^xF~&tHE4Im( z`+#d&Rm2yFu)kT>v!e@gLrOY()={!rwgICc12lh8cqz#$Q;dLgN=* zSL37VK)gohN22kUc^AkMT?Zm=xwjMcUuqA5raSubIMN%eYcpoalY5AwdN<)pW?z+N z=*}}G_V;DSp)fl72OS{^c-w(-M_QO2 z)8EDd#_e9B?uKwB$Jc7UVbo2+%Cgt|91!5E-j8pmdHXUsBH(H8ko5CtIkB&bGO*|? zxfkM_g~fI0`LltFQ-c`Q>9c{mAi21VQ8CRv>2x4gochy&5g$^g1Idm&wSC!+z~sa- zeUH>)-T#$Z$bJhXU%%y1M&A%T?Uxx-4c1qDJKCrTng&ElOQ{DB32wDf8316FpZ&=qUZ6XEtkSQu=+PJE(hnk&wMIQ;~(`2-|d)AUAw9MW7aLT5Mf$3G0X^PFc=FY?j# zR2$SN$AU?#uNx_6`RG%kG}SnVc(eiNPUyhK=q@XrGw~{tqO}&yeck2Z{o9D$SZ`0% zz?=fw1ZJX>g-dxnI5gaT&Olu;LNOg(4W8xyW9rQVnmE6((eut^lCaJsgguxEi-Mv_ z02f3w0ir=ca6xSqMX6|ORg~Zg3IfWQMzLzOb`e|K+EuEp#XaBxXtlW1wN_lJiLo`P z1>DFz{`%ef-9KjL%*;FQZ0~x`bDo1X+|kV{WGsrgVIUV$tP1i{=OQsD(-Lp9quW!h z-d>iRX2Z!~+1b5e`X_0^b0=zy1;E zO^jDr>t&jZZ)2?rmL>+=J-k#ZrN}Ney%kOF|Kgj`#O24PH{%-_$k`ODH)_Anr^TQ_ z^&C6;5)O*`30Ko%9QC~-MxX5l*h%+_X+-LnBi>O@0o6m74X@E2r?9?fUZTh*ygxaG z4~*R;ckAsQpJRTWM&VCm%-Kg`F_48-9ZNY!j;{^vkZkox-{0Z$9KK?S6l+SF*tsz! z-WMRcUkZ+hu51*meI&yQ)s=xtSk;1fsOt3m7HS~ZP7QoaA!naaxQFAVHdHUhv^*JohL#v%7r}{(-4xrAh6X{1;mC{gO7l#LHGEhBl@jf@&8XJrxKMNJ8 z;0Vqn4H+?~Ovj~!MQgWkO=$0Epv@D|3K&voLfn*`|Gbm2phTOX zAK3is$cYTnh!#s@Ov5I6B3%^fn53Vq!vlfnM6xOcqnzAdE#-Xls3Q@@iPe=6>DvMQ z37DBME~Tu5LS+Moizoy*gr(?dFrV;&B-(j|ANhVaUnE5yDn}+PYpu($dXo&=Sca6D zTwSCV*_`HVimUXcCpolJxYvqI9|c#yny(-_9xuCP=sXtiPTnS4 zrLB0FFCa;hFHp!Ge#Z|YfT*F5GbPVgG7NZggARgjr$Kb_q1Sti8q9YK(%2K%sWm`Q zIs6yKVMQF+yp2W4%~7K{iJow>^yP++4MN;9!}seG8bXu%34 zjl^6Ru97%*Me9Cze|YtH@(fGkxj98U7e191uq)ay2wWIE6+M5<7T(FhH%5l9N66lF z;y8tH^A`!AEqWS+9W-{*(_bQH>Uz#kbS3);IloRE6NN(UE6g8>!-`%ofsoDMZ|ofi zs6E5ejr1;39EGQzOMD?ug45K>!9C*@(XGgHjeqQVJcPJ=LoJ76&*9Yy;*cC$J|nX> zBWY&+Flk-^`b|3aEj+n_;DqB}Eany$Gsf{59!(QRJd*6`sTNAj39z~U44mfRkT6>u zep8$+=9;3B7DBB@@J{;>FLi}&Fg{FaGpYfb5JT9SX%$^DZhD*M#AOW`i7jm9dda{{ zmxr=>v_<(_*$_W4qb*rcQPEAzH_A%<(wRF(VSI(CqMI`Riu-8t`&?SlO`8wm4vjnB z7zDxm4ep3=hpXsj%pc+oBZF2&MYq^ojXPp6m&R8$gCSLQIz$Uj5S$Da;C+S@kX>3`<3k~KbDb{i>=JmKPJc;H*z(W z%<2q;L|VK@NXIs3Sci~`p^z%6xrTn-tr=EPNUB5@`N>nr=<_2sXQU+q2P_p2_LY|B z>`G6(%vRi3F?<1HZBUuu+9Vx|6IJt@r3#Mzg@gvz@c&BOEjWcnHGtV4n;lOu|C3fN zb2{>9T?RQN?I%AgiJL?h^>8G%O$DTP$0&vDDr9X@3$6kXx4ruq8eXDl1I^~mY^58) zZ3U>n#3`8!+Z|7W|0S(@j2qn@P(j9ZdjpoIm3ZWp^JqbygyLHq(o1R+J&hn41=$!EQ&W) zPw4J!v@;VmPF+Eb24R!6YrvUCmck2GBE_Rx{dC8Y~{>uak>IYHv)jqdgT`DC){!jA2Tv8X|C-oBfIiK zyvosGv|;PgJElxumu~g$I5N9eW=yj))aKdPAjR&XD>Ly|9CYeb$t#pB2L7du=<+WS zAuyym+f5`Cgg{s~Nbm+K%>RG8FT2I#WAXHhSK^T93t}$$l{m0>8!ZCKn^*Ag^H}u! zA2|c1XAbF;$Eju562uYiOU%SM4qCnnr>k}_AZD~_ma2nHoTL4DxEO}7)mn%AyyR_N zM*jWmX!t@$9OCf3v_ot&S%>_F^NiLktM}CdOh{1O?v!JhiC5&O%Mp%r)nrvxP5Q2l zR^CL;}BE_Pin#9ST9G|Eq3in&iw z7NP8VB}Pt6@MGi%rNk;f>;k^A9@*?F+eYCh;O&m=Bxj9y z8#LM~`sD7!yT+|1Ysp|_YAvn7Ax5aL-$+gm#g*rU&a{~OLg_AijVh%Aw&43L6Je@4 zm2ZqQIIpoRJrNOKr`byJkivA~YPxlZYLL_=Pe+_`2Er_`u|s=~Qi9uNeBUeB)T~Ci z2K|G&#EI97!fof$1nQ4&IvM1AU?lcX1gjqd+eCH)=oQ%F_GybN? zLj**dsiOhg zj~Ywqu8E#FG4dJmz8<}-%qa$;J6Wo~?)0g7)%&R!F}TLWKh28NvXU_LSVT3apYy)U z&qb3Pn9vyWr~5aA=N9=noUfktl64~;ExYQ*t16c3%m6x@JBEl{oB^|y$FQd!gHhyY z?jvuYlWG1Vkq#tKGWzRXTI@L46scu809y(iR zCSu2yTaBR*O#%WwGi%t&4KLq0$*Bg4Tp`FY^9=vI3`+-#shY8Lyf6t3Sp3#x2yGZM z{Bu0IHJ!Xzm(>oL{A{iX|iXe@@kx!pcic3?GWCy}rPtdOMx;(sv<)ML6q)HsMpu+z~W$k3&Kxz4+rgChs`y# z79oupNppAMa7jpmwQ_x`QTX*?KbT9#c%za1rHkr-KgtC2o`{4I z|Ld%}km8y1nkGzq>O7hqPa)iIL~{4Geq4p1zh$o>_VIe8Un=O@i9&N$NO{7X8S`` zFP^+gCV4T(5nFZZO@Ehn8o71CY4jOrMd}RB zwi?`mF(qlQ(;IyqGVz@&w_Yb9PdHUwNb2}K^>YL#DcP5euDiyIYDm~A*m9*_t*Ew4OT1#PN<}ucu!w(lm{Cuv z3`wn4s?fm|rv>t>e(=T=6>*-;;VF(%NI6R7<|tbJCr3r(t>dV`vm6!Fh|A9?@4~Ym zbJPaEPLA?>ggf^+YJln!j^gFKuZ8oPosR@_ME<#qQU!7pLn$RQeeljom7JoYB;2(S zs;7$hQ>qqT?j=Go}-Zj=l!i|9+aOg;!e9yGinBo8Dbh}W6%hzaxi)sWuW7a zG3J#a@xt7p3#a6{SQKiue#Zk|26M31ka*J^0=o=#{fx+78IxfRn{8P%v@G5n zmKJl1G^Ti?7P>X2(J%qcQ13>M9;y=Yze@P>=R6_lTf*7QZsE}Ab1^v3Wd2Etg|aoB z!TY>f)af=O^j?bEV+EqBcO!cLffV_WGc8iI%zEJA43dY%W#_#q@|DU_*4cC~PayIm#$!jE=4P z?%Q}dZ%|K1GZ(vV`t=wC>VhU+yUaU%IVKx{s`;nSeaMxFD7kBINQ8I8puUg?9(AM! z?MMm_9L#5$4DGT_$Izt#>w{t}S~iq&)VHO1T*nksdz(dVsHrgEB61BE5^8JOvY`|nhg~c^k&!<_tFz&( zvt%TSgAiU(Vn87QkCYBVVF(^6)udTQxKubcSIJcy6uiil9^IdJaxCa9qT04i^TvCXwd48$sW!ayUH-ggcb0;o2c(d2th2(c@&1=aL#&S{VJJZCx($Z ze~ZkZWOdm!XjhwCoxnS`clUcn6{d)~*Guzu#G#u<=515cYw}{6DUANz z>*EM%+WTw9qzT=2c_0!^N{4+69Cj2Oz`tj?AP&@zn>g5k(85KLs3Ep)Tc$2MiQap{ z&6v(n0cD-%aVSH~z21cQCefPTbb3xmSd#`s0{H_>O`?+!WZpwgnJ1;AxxY!YDi*RQ zaDr&nB`u~H7l0`mgJHb1DQ%S~3KpQ+R4}g+#Q>4QOgx#^DE)0!HJ0LCh_H?fnCF!} zE?jsK=-}s`{2jQH)BogT>i29&rm0sVwpIAkzNf}Zdvdt;8!0~^zTS|KA-H}V;+r>* z%MP6)cTWIS-~VKHA`yBKUp!P9LxioMCFr(!Ym$n`P{O6w=nd)H5%c45R@}5fWBe6y<{AM`TPB6y@3t>T%gStdBijRIH3fRt%)J zML#`hO2rWLM;x5eB)WY-pP$N`Vh{79_^C&BnDWP$zf2R%M^Gji+4T3 zVJ)Nh6v4Z`2_PFS2$)fdC855e`>m2d^a6%We4&?1w8>=gLPy1C?pCKz(e1ssQgAgl z1w!Ovt;s@vIU(NO_e4t>YAT>8qL(9E1_jp-qLO789@uhs;+H7KM#8LLZXqK{s0?QH zyo-XT3>IPNcW^xGMkPk&#*3dy@YJ2JF);=_pM{iU;5aFRnuZOS=4TvsmnMM}%2H9M zGai>4AA*wY^b}CshRe6O9Kz)cE`Q?kh*J}-Z*Phu?xzr`$cer$A7l?cPJv^`zaD%M zpWqP}XE>_au5%UCd`Rm`tsz98WS?`)%bK!WYMbB6Pc;%s+Shglc< z_Kax;yn&$#@ouYeSp(Bcu$^DOd6`H);ynm=eEimQb@|(^1?s5EdkdrbS2nDa-M?I* zyKZMnYWdzDaJ{u1#XI;aDjwUbig-{4W0l*5%nO~H-R_J}N8!VTxd1tR`B`0WO(-0J z&xB;2vzB|d1J*qj&Ei4=ay|_dl;y><>AHe3$zLF!0S8oDzp>Hini9FXUk$&46g8_G=xqEzfM@46;GO#r1oy`t1UZIY`_c5Fsk7TD!Z_0%)NqnRs6mH( zCju%#At(9!$4QV!eiM?{l}JJ8{~oSg)grx>*;|@=e9RzJ4~#m(X~RO+17W2;|0PlDcJ>iT z+I-daHOp)%O#OTO*NYpNZdVdAJKtR<1uk6h`_mJDCq=r3k%}d)r7n}T_^HX7^U%IA zj)ni^D%R0@mDuR=gU6lah~|7t3-?C?w>V?adcO7Q6*@~d~9mCO_{8VMfPQX zF|`G$i!3~>{$5p3H-hl$yIj0 zHv`n`ZUrwe`0rTDPwM7&PWn9Vz%97Hjhdt2nAsRkxU4<^)Q%tgA-sR#Fp%Fyg0vaK z0RH(juIvEr$WJTJho4;c`b_tI3OBl8Xua@-2>%EaP7OmkBZ5Z{<7I1x0SUnNL90V% zFAJX8(-r}>K6eGA6|3xED~HUBE8E|;5@~9V05?Jpx|Y}X4tHd)1lb-vgs*!#8u*>U zO3-8I9Aq9Zf?_lJk#LKVoD?5%|B(U2;0G(*vQZfH=-zCQ51ozN8CKnYcSV};@J^xw zS%?ngomWBbqXWMm{&zCp`6jz>-M{_Nm?I%_+{$lCh+kR1*B9nHWAWTyR*)UR?MLw07CNKw^i!OE z#PuuN--FDE!gG(`>jk6-`5GCW^kvWlj57ru|1IoMx5e8n#W{X=eT>>a4Mt)0-uMCC=A-;;sdD1(SQYh>_7 zt|PvU(fWC}vD{JTa{fr(TVlSn{VnkXrsp~yvOV=!Is9cX&9VL|>KKQ5gVxBkF8)L< zoT(cp@3gEh{2fcJo$C-dt=l~1(l-VR(_mfC6sG5&MSh3ohNbzI$mRoiNavbuU+@bB zkE6;2^d1vRB1PQ0aBJ`eqwsE|w?UW^X-gtgX7VP>g12;Ok^K5yL$JerG|Zz8`I0zo za;o(_WQ9FOIx+B?fuoWjEC2mh5IG0Ut@~ccbkOATC~d`d;3BpIzuL_T5n%9@K4ITJ zNP^zu^V0f6?R=1w$MA1x9_4F&&c7$$u3gF-FOAioq5)PbYS`U(4df4#g~Z*Pj_$#z zPI!Db4dL0x^qWa4R37gMZid!u?7cH5;W(b`IpXGXkdjcPY-YRW3)j(QA zUOcr5Pg+tHRV~-opA#A@Zc|?V>m5m0_2ajtHd8|Cn_w^@$w%~Z-aW419T%B#hlW1P zY)q28o&c<@@y-vjfYmh2^6_RdyBlL(|61z*A&?aCmm{${kK5iUph`*sCL|npyi%b2 z&)YO|THduc6WKXL8eF$0eL(31rqKg_zbG(=?MWEEZWmP?(TuRwDmgtIyg9Nt6<@13 zw4#}GfoL(vv9=iumY=oW1NhAe&&A_i9<65VLFCvqj7@K<(o!~>>_lHU^Q3pbm{2^n zqV3f;1P-rEZ86k~zb4tpTf^R#k;q`Xj2Mayn zWuY{@vTlI1@YpRHA!^p24J1OmfSf~fkagom;H-UMrr@&+FS9_rq2617V`$Io!)(PP z>~33cI%OS7-gMq^yyxs&SngKb{|fxVQCJ-O6&Ob2+3^s--T*%C)^-wMx{s@YxJrn- zpVX7A>4858*@6N$qtOQ4#vTIq$5gjInYo|jM2<8c$SeI7|JI3F%cK*CpKK7eY2UUk zR!F$P6)?0lrfxQnXfqT?l>2fIIy_QQv8P{r_GXi*C1SREBzKQy{nPGt9hLdsZ(>(P0uVN^F?*& z8PT8tSU+Kgh3Q(uqcuP7Y{_qbfkzF8Tmnnti+l|Ie_O+kSzHs9xPmXi$~|D&RoReF zekhcqKQS*{+V~bsN*$hSaNjBnCcZ?@#V%N2Exn6RZ!h%Hx_w2DVBr#+U@%2%`uf#G zrX?2gB|S`*$y=~l8qz!!K4&e(cP%+~OXkD-AjH8(%I_%O0h7%ul^L$7>py{ z?io;4rzrFJc{N60G4NL3822gdx9y&`6#*uTPPmM?qi#3y)tu@Wt{`T6?y>hcw$@0) zyonLaj3VI1hEnPk8PnMaXLyk}>0F6w`MANW`H7QA1L;|c(FwUdJ*k(Bg{^odF*jE{ z6BS?W7@^>b4?EA*+^ezp|67IkP2oT7A={kMBij=>vbhU}Y>}?R`A$Lba%>w=Qr5u} ze=G(#OgKrUqt8}qM!xr+(a8Rup7_ihU?`iec$AT!u?JCa*~R{tu@*2+h1z^18t7E0 zEk2CROrR-Wv}YGvhoMBx;<7x&qg;eviji8!!Wipdx{1fY6OpI6$U?60&bfTi5gZ~n zcIfdzJ@@4fepdXz#fl4i$c`@bkab-+G?sZ*$)n*?eqRQ2Tqx>nZQ+GT1W{!(96Ha! zH?<1bUQTlq`TKA65$2DDyCR(ZFHQFGMAGG@#;CkCD1i z_m+zr1Pv}joFkdBi{xz~aiI7KmvguvWmg1C$3b{MT*)Zh%S0jKo!2V?SBhP6;Matw zUd#9JAT7dG`0JGcS6p7uMi<$arWNhNJ0s5y?7|y=^(1>2-Wc70#^Q~yiO>em&l~7? zDuUh^QqC0v%^?dax)>yq?ylI{PG>Oqyj*cKK6LTOjs{Wjyp^DSA6A0F-0JxGLb=41 zA)jz+T`q+&>?e9bRSI!qQuDrE5R-x4hM9C;A!{!2yD3~M$`$7 zq_=oPvQ0Hu^x1l_w1%%q+_rK+U+-=lT{Dv_ZbSiL%*jlRzssHBI>tt|BvD zrR~)kNS8OIpeiUlMbr~89#`e(Jt0Jjl$^MjD7JDn?t0@cF5?ls@%F1kE(rv*JIiMT&R_zo|WaXFpzH|eL%~bn*P}{ z+l{}w@~tT7ZNP6MGqk`P_~R>$z3^>t)Ypu=_oB0%NzghLJS+QzJ0y{aU9<-$>38#!S>njkpKy|1OG}%@YQ?=~aj&^3MZi5y z0ufQX+ooNdT=i}jt!A@(KzVXlDK?iicg6!BTsoN3RNT?;rKX#V$hwl5wvg^6OD(!`{Tid{0X$qc}eGv=@hyf{!x+cbKO3}F2}UvW%P|8$07TYt|O-VQJew&EDbx0YA&KLSz6-B6|viNpBXCj=xo#3WIQx{ z822odsLi3!=8-oP-X!X(FNgG{zDKL{xHWML&f|?p@vMV$6U_p(}rZ01Q z78f{*+*+DV0FwOKr_&yNQCNIG9u9!c?NArh(z7D!fhO* zsL4UN!qp5*PF-$1%y^9`k;gI9jo)!>rSfaOHM7~0o)FVuK#0})jwK#w<+w%+Cr6wFV_$Mvp0l_8&ol^{K+A+a+eDckdTEj17K`KUE>wkTf_zYcG zH5|1yPB8{#MkJ6W_c#L3RVEG#RcjD`zHINk+ReyCv`=F3Da~_HbvEc)oK3^Hxp z+A67w)=N;r$+i*;s|^9Db#$l57x{y-P?cn$u{Jxe>1;90wf;pF54k2$BrFIGfBVHs zB6fL;v8yx~>!a+$BS2Ibyq?W!5|}&Fr20ytvoNQEL7K;lVf^O5RjTkbKi zlfdYD-hJj7MO_C%3Oz@@h(o5_5%px_nOriSjlq^Su*SA#EhLd z&c5x*)psEETa2Mt&3CQN{CnZty3~`R*p>Y*f&46NTq@cbGxi;@hd+-bNX85LAQ`m_ z1D#(08&!r}r-#sysD1_{40-}@oZ?@7@y#zf`=YxNP_Mju<}Y34ME9y*?-z$xlwJgO zovCpZyc<8J?xaWxR|EJ4$5#Uu)Kql&u$8+%^l7Jxk%uO;E~Q%Jn{qPEmq7aN5&9(K zcWEtd?)(_Sm37G4<(nI@(pZ?DQ&HDZ={6@+Bf%4+Ye9aTTBjGDGC64%WA346kGNwl zm;8-b690IhpG&|;Q_~ETid)XF@zfrFm#LXAcb*saFp8D|p9jHY1NV7fA9oT*YbfYrncyqczVhC?XL9SG%;XElrqt94mo6uj_$D z#${E?I(MGdKF_f9TC9I&6x!6l4Kt~EYu0SD8GV!RA&2ya4VIa88NzM+L?AMBctUj3xo~o6T z!9zA943ro@QjedgUIkog@;1+1MAC|p(9Aq&!$bRX5Zaf6pePP{3thlq$lEZ+7O5|2 zGTv*Lv;i4~Fi3{2ctTsm0Bh;JKP)cFKJ_Gmg_ALcaYp`fWm-(vz;Xo@y^imwx|Yke z2jA1uMciPB*iWfFUx4-mgUn6cX+n{b{l$21Otde5T6@|;)&LiZcnDkZ(9{fAoRT+6 zYX9Q|^Jz?*vp2i@66S5nFH*+1ZcLFi#^SiI1XchP!>0at>oiiNOnV-qs&PRN&AbyX zi0G+5?gG_O7kG}?;i%g5r=^eIf0Y^ zyuwEOS^W+G*uxejE)O!W+fV)g@%Q(WA0S}N50J$kG2Yk4dQo+-Mqgd(#t-415B+|4 zRY=%62+`OY>Oj$Rhpi4&`|6-)zwVcHz-Ch(nzJvnDUIfa4MdUtM;}Ad6PCjPFY5HC zJbS{*jAN-lp9T=?X|-^!a|=f7`{xCQ^KBLJ7cA31BQ>?M6mD$lDCq&wse?5R4;upw z_b5xC$dIaxX;`?3Ig3s10yz2rrw?!0&M_Wv2+DAXjucq)%0R9#l%YRR84^$(Wf0`E z64;o(j^es-6`|7psl$kDspH-lonbA#=sM3B2xxyzZ9!b{pIb)a>s>@JSIC#h4<%mc z<)Z{y4F+8rE(!xmUW67&G65*ngd*^eCx(FvanF=m`TW~;=n!cw;C;M%&uwmlI~Xug3+eXKR^C)NXC2fO&@2 zl)4HDUHhY~`X|z#DNU&Tk-BbBuQW0st9w_$ua0RaT)S^GsZ#KzF}9Dk?o7?jO2gl} zGl0s=EJF&|T|Fqiv12f$t4%{+FvNy>$Aa#v{nJR$?8F%pr7rKd>}xJFS(j*!kY8dE zgXuRb1m>Z#KrrqcjHB{(ZQ-SL1Ay9QgeOO}W%j=DJ-OxAdA>8cp}CK9iA|}sPu`&H z4?Y*Dk(;#kwSSxU_Bi=A&~}hroB6`;e%v|kHP37lQYhIUZSbM^+_F45lq5iF{B%TV zS(iu0(1lWq2)o3$=KC!yi9{75Kg+GkM%+Z{u5CNVpj(IgTr!CIf);0zY$92AvsT%P zeZ4h#q+1o=#pTK5F2F&ePijhLHa>NRwRq?LtKy-Q)-rR~fLH3?|86BRMRH`C)M}Ef zZFqtDFLZhvC8}sppdX5mITW&mTXxseWA=UmIu~)5LO_#>P<bOx(5bJIA*N0 zVn~f=>tJa;>GS@pdZL<8PrRZRKB*@++1)g|J5^L+Q{c=cg%C~ZlkW+miNUp4+E4Y^MhaRV;X^PMlnP~bU0gk*+i?x<$x*WB5XVYUm(BBVM+jH09om=3`>smDJ zd<8~-R8N0Hi}vD#Idkd&dO59Q*s6EGm~Np_wcF|zy<^D0hGl1vgsuej@%A6k*MsgB zX@DMvZ1X!1!#nu~wW%ics{Ot8e??l0UOHri6CFt_y2NbNMGpXH!anFdt$iQRyFgtz ziC17W$*NEFUlC;1#n}+DRKzwn8EaEB>lr?`_U12={g9fu%kH}m$Y+49$&PjxM(wng zN=?Fn)fl$sUyS-t2<6d(d53HLuX==tmd>?(Hg_w#ZYXL+4oXj5QaeZ5 z=IhuMBNP(#1)D+wcSD1-6cT->{rXS2zwxEJKJKZuRK4-9Egz7Q$2&c-iM2jZ=IpV| zgiLFK62bCaE4;aZ#S)kt$xH{;!s#IKTQ(iE&gnHrD7`t{viMy|cDnG&{>LX&VScGH z9ZBD&pXUN^c*aSb%Izz5WGM}n0BoR~3UBY}*a<#di=pf{WLV~IwTuX|WQ9oma2b&m zWRZLaV_xFWYpCy4^78^%4gtB#A$0n3kdIvsArrHI72O2Q#-leu9P!cKo1hxB4;a;e zeK-R635fn5b)`v-jUrn$v!Az)Xuf?0r0ycT`vq^O7k!<3j ztc@78C!2&1D?qY0KQ}r(DIm`Nt)&&`p=hN0C7_^}C;bNk(tM~gbkV{*PGo0c$*QsS ziYkt+1kKUIl^{xaWN-Sh5@-X+#vTL8R_u`qs*+Uvww0-{pum7m7|22Nx$>|+!lw=T zo?hDqnjE+VjOV8qZg)n#$a@T^mW{#NdBECzt@sbi0d83T7_>DU>Tq%3RfR}2nC`bJlM`Ub5TeCQ2Yl={e?Qs+U%%q!3m z1?tH3-S&?Kmd;y&e{=c7$rh9Oeks|6ika1Lauj-93#PQFoY}wd!i!s`?^8jB_>JvJ) zQG2R*K;CCL*04YO@=TYy)Kr|L-Di?~6p9fGn2hA`_ul+nEHYsqj6+`P12Neu;=DF{ za@X6$a((s|X{U%?Ptl&2#4`SpSbiLr=tT^~6Nm_luKMae(bVq$TqKUz_5FRKD$)`N zH%G3dVK>wJso=(}RFPo9&ArDtJ1 zXzca%_)T2j)q^4pSno2CX4L9D^p8ULN`^IIBS$ZxIK7bstzANCCf5&=i2d@d(97{g z4ND5Cke-E<-!C*h#NpdrNKr>UAb6NMr{<`~LwkjdBULx|XQPo(e-1wU&Buu3$>Vwg&m^tF(K0`?B1SK__x-d>SJ6{ZAfIJvi` z2fu&rwm5Ed8`Sw)7f28eoZjBhJt)~@0+FAue)NWY+guu^l58)wa$w*tzc0Pns*Xnp z8yXYH`;zn#@`{rwx(v&ZcCyqkIvu;X+6*7jToU!}U!Qq-@-PkORoQ=?0STY*SEX0) zm0SSGdjvp;A^=&+Pl5LuUziS=kM6qN{-C;sFReQ9dR2!j?xUwA3oC}z7D>{_Kl5i*?d94|Rq`54!YxiSJ1ML;uSRKTW!B{Md#z ziAjh?xS!~hd(2k+W%Nrr1#P9(APU%TWK7-6oU;Zg+R17mjQYUwSpT>lL zy<)UTbY2w9Pe#7CKN0Yj;MKen&WpIA=OL*4JZL^Va~=!ThOeeEs&Q=|Ame`(^>&u! zG3*aOvmXNqH(BP96l}-R<}o>OSQ6*F!)V&~yu*kio_)C$0+VWhn!4imXz zs<4%qgeq@OKS`};RPplFpmEl%21?|4Gvd+CwGcR>)>B#op`&V0A8Oe=2UPL^!s^OT zmc7p;67$kXAI+q?U?TR*TMzU!A9>~2anV%=*LbLc&x2?jcE)yIkK|@+;HFP2XqK0@ zkw9Yf@hdU7)rPR;<0qa*{vt*y&I zy<=7FUY~4GeV7eFK6Rc<8>iX(LjjRQ9{B7_0-umx3*9$8R3!t^08=p#5wkepGJ93C zG3JagN|W?M7$x>g)dO;d^c!}StNP+&&e7`WUFb!tWJoU7^S$L-F&Is(O6C*!@e&oK z$*tZdqo@*Wk47~7xY)9S%gis3YQ6mrq!N>Xop+`&T$XhXNYbIAdl|w5`=TA+P{FIR zHK<+P{nv4*%gldhj>b1kBll2ueqvb@=-lS0`M1_QuvelZlr#K_gbo7kU0i&xjxjv2 zw=5nI+^{Q+&R3=h`AVE*`%fI3g<6XI2a>|vYKz2Z>DRXwP6IdiG^oBg4buMU`M+-` zAPI>0x^}o|>=Hx6Uz82}UfD3zkPY2qZJ@hrjuMm1=l0{ZHb8El$nS95|GC}624m;o zZRXgZ(vB<;_Wy|sk>j4v%pYJOA%hS4jK+67Yayb;XgN_uI<_D6(WN)svjL3<#*H3k zH!VF3WXNN?1UESzY4_}pwjTzZ5oRnp4D3t~anIapmgXiMhTvqD*2I3x(&FfZ?JPa5 zc!6Ut1vFrRq?M{-pmS88;(S=O7--RJNfd}Hl^N(P)h9sv{C6BBQ6R4VJN_}yo~lK! z)Bo={?y8D_4pQa4&UP2jl3+YEY_6j>(B$q zk6xZ5iX3m{uf%?P<_k z$XF;gSpbK;S9m|k-;`$97k^XYm=PcTO${t`epKhhupu(Hjq*$X9`JExn(yW#aF*-) z^j#z@=Fo^6W38%nMp%Ckye8B90v5p(4fTqQM=|2JQIMtHG=83VNpPwhDHD7&z>z?azt$Fxv zp4glDi+*c;C?>DDN3Y1Rn5BglNtw6i;EqaK9C>VWCCv>T({FT%pY^$CZ^c9@fyP2@!j$eygF0-=ld<^z%(+V)=a=6ZEo79Gx@o7l`}Y9JM_@ z*{;}ZW3XcOe7VWSXx^ApCgyq!EfcdCeJBz6^or=-$#|vTeOw-4weGfoX7k)}6v=vE zACD)<@CWuGoAi>%58uHWjp{yOxeZozVU6xWu}mDWBA+IBP3wbvTF$xmP!XjY^XUm6 zJ;0aCqlZt!t%B}-@m(U7DI5~rWBbOTFg|yeWB7wSI^6Mg9Sn2CKR6l=*&b|V<$XOr z#*3|Lv7D*cQk$TufO9eXCQ z_ZW+h#Z%hR8lIFX?&@6);x2w+&0kp_g>EuXqrG4d#xNS4` zz&YC7k$zdjaepuLimh0;7s#bqOR74G;~WpQZNA>CVzu|}$&Y~Q2S&E?sP_zY*Ny+RrkgC77UV{(-$4vYfv<=CYdtjK=b%8Vu-uvNP;p=0{1+NqE@bz3u^oR4~z z;&GKAYd9(*S-Bz$MrhCRIZpVc*7cC=cmR20_TclRpw^LHUqyUiAr4vD^{w=CScpSv zwla@F|B%cG!U-F%^TMCz6rH`Sd=~9jzXf!tiQEd|Ydrh|WhboB{c@YvV@%uk)`Mn; z2T-i)C{R8s3s5Ayp4{3Uj|3v0AXtFx|6zBu-Y~^Ry0%dmwiYL!S zFm>iYm>%^WD%zUeFJw2u_o#~BrCDNTo66-`DOrWEHv|+Kp9z*YDP=N84*(PrY^^ zVegCt{R8_s;WKog|1O79j$!a4352h=yqi3$*k%wi`Rjz^zw1RQhJ~8mhxw&zv6mUQ z9%AJw>j5y#!bYgWr$Cx|R4wJ!9XPlE13n>5QTJE0OnFMPz1glq9inr7flCBrFI0tM zaUEmIzku494FmFi6EL^IQ^;PUWd$-}E>ap|Iz`_n;1~H4vb)mhMcgSOi#SDku2AMd zMCq=x9ykcg+P=VpZ+7St0M#-#=!nW8lc)vRh77i9KecWgefCL)VEk>!>;rXs+R!s9UPl zBF!%pu6kFmc_C&-gWiNKL?#U4>-joblm>ufM4Z|*R-^V+PTmxGUVyA$I^FIZ5gjF| zCSuv2*!Qwkx8jE7;Dr8&a^;|H&(`4GTQJQ;;NM^pdO`wdK4Q`sM*ZcQ2okxNsbQvL ztJMu~+N3Vs9&!BYHbl;1ncsGzOOD9Odhm&{H3 zx2y4?mWna1Za(%1h{O@kp~ClaX`t!k%5kB9XHCmLl z{r+8*DfUhmkHb1s%%zJL+oQ0}2oxoY@wZ)~Z&R>5*T*Q%UR!}VCj`LmG?}5}Bh}(a zipXwkN6bnj6*p-WqoTs6DO*rSd~w?cgM>GvDi7I~m598i*xxCl_N@4w;xjJ}X@G5W zzN|Qjl>5as!pI;aPzMLcRetZ&0-DD@-_qnG+bX=vWvs4piPli=t`_U+fi{z}E-Z`a zqWLO7Lb&U)=aqomHN=;ZGjCe7jt5<#rno;WlMfKqkBFsv2>6qT)N+3kIK@DD#d(H1 zsTK?z_+22IOu_so<#-Ej3tF5S%C-tBaq!s*|2qp?DTz7IXWDEkeJwZcd) zj>Yfyv*Kq5;)$wS6w%CBqh+QteMlCSb#GgA24&^7wp=6ss z9URAu?5ll4ra&j=;$5iAb+@iV!1$xBt^5}ueQw0Zy4^d);U!^OD*V)=KX3A}-MLhp;jl=zC>{etv?r^slb8RN>L_Qipi?Ee?YN&Y0FlB8R;v2vBUo;g>7r90H+xCu9^q_pY++Uq*>nB@P zd=b5q+9TBhrRxofwKy*wp zPPmEO?n-G;*C!NCX`iMUkSsevn+5SW0*R5TUoGF0I>0CtPXL8tJf+E$C6k!g&z2{X zY%FxevIioyh5GoTnWW*|Gr<$}ph<>s^Mt8>WZ#=?DR>TJM_(-gQCQCsP&vKOR?@Nj z|6%IA@M}*Eg)5Pm*Rp5y9fvoa2FO`q*_6P3R3Kfu-FTTB(CckG@53N zXf!d!NKCAW3Tgm58Y?#Ji&#JmU}N9o?|I($^ZqgS&TVt&&di-TbLO1ym;EUfgm!Q< zO?j#9lctR+mK+%h2yH&vU*xlDgo~-N_|@p5e}G%LvrXX`U<|UOgGv|904TuO!s?kY ziEjIt^V!ArW8Mlv4U4{{sIACqf?x?XsnedR5*o~75Tf7-Vta~A_QUNa5Ct94Q#*O;ZWJ$me1OSy8Dw3(Aj<_RgtFh(1@W8P zhjH7XU&!G3hCa_`UBdBjc}Z(LP9zGea`}&=uX8EaKjtT)oHt`ZCQri|A|CmP!s!g* z|6B^x9Mo^Dje4g|s(Z+ci}abB(Wj5lCgkn{6+C|4U3kl&gM5NXAA@MD4SZ_!dv4|U zw`&=n>?0K8%gjGQ84xctW*_BJv5)e(xR0V0r{-bocT~CbUtRhq6`o*X)&SR^1c!!} z)=+Fxf+-~?#7Q}&my(3m^j;@a?u}Axi5tAo8CMwKWwZb;72GyY$h3?2D2;NJNF7}z zib%64TqXyJyg)LP7VBf~23JX5O39TbK5_@dBgs3Y*>kakqVnvyAfYhyT?vjQ(ETa6 z+8}K=)XNn?IpcTpZpe4+JlSX22vqWUQ?d6DQPU?~PeAddF@sJ<7B!VRWGkO|30dvL zdVkUQ=#0bzhCHqBDk?-9R8L|gp~kdx6eEu`ZosJ!P(SaG1dc^9bAhAuP7|9rxAi}$ zS;ZAlL8?>5VT49a*CViB2HY7cxNqJRpmKn@iWnTp)gtaU8vMOV7L!mj9Rny&5!rBG zZQq%XDQ*{d2k)CZlv1|3B70F)MHI*#)oXnjH5K!$&AI)9SVYrQ4$%=6X%6w2z7u;6|jA%MhJdhgr@thJIhjM zJj=p`<`X;{x17d zzlN}s;EWBxmc;p#uLrvDJ+e)-O|AXcAqGNAPkaxm;9ur^4>d>-8jPrRxaN`g0|EgC zkIWrkR#*{@#SgvWb@2~TzaOCecvem8BdB@A)rsWQsiqexmRb0JzW5w;ZgW@|;O~$@ zYg5hhMQ*eo^Qgqd{p3veV*yTT-r}T&OKnbIJ$n;af&d-|XTJoux2=w1jb*%GAwA*| zgCG%&X}GQdSG4_w@Ba|;fn~AWX&UB?z?9p@@g$hpOhTP!KWAYz3day{Vz$=w0mSKD zz%u?vW-nkrN;Q`z5L%lygsZfT6Vlohvss8h=%m&a6fPTSPNKBEl_*=6L^6^C?`BFS z&hk(ns8}#Z0IO$FWtT(Smhi+4d$rpfVS{ZmIU@LjNMrvX^tS>;IzxJBml9uM zKN+E4X895&x4*~*?Q*88@@fBA$fr?)-y6w?0@+See&c2xXEUa%%yjF?Ra^@r<$h%e z3Cj|QX}NIb#wF1&4pB1NkK1n$DyFGqj7(nxfo*+q7VsyxLg*pN46GoOc2F`OdIQUh zI)=(f;P$7){^5M_fO(|cb}IT5(hO9d93;4xcAnc`dMWxPq9s;dM0`)_)ijcoU>Y4u zUA0rTzrSkd6TS?UP|VCRh*!Y(HcQ0^v=gN>c6v(%r$>MHV>wQjkKM4@2J!NvGm!dt zOm&jOAk%Q!XrXVt!)3>S%MK4@9;FXtWT)7td#9N8=-Mf!wu}A8P2VmSwTVdrFtHNO z0Ae4p0m4I1PBXwj?{WhSNz~ZRF@$I#s}wu#u0!@k@zYR!MQ#rPK1GzLD6JX#ox)YP z%~xwMC02cHFYX7EAI zMJcA9pX1693*!K;?e%OMMPAa>84<)w<;H&fM%gF$Ewg@)Z);1=@aOLKm5swvd^qhB zXN8&e9vxoMAO}0o3Fsf7M&kzqve$=}PD}L>z_<>DQSq!#-x49MI5739D0FNU)32Xm z`4nfyCuNs6Jr?`K2>mS@yhWkLyv1&;f6&xs=RqkEhR z(mSxNq--d=(&=QZ(z8F>ZyH(&!`Yh2B zpV3;vy8eO?5NjfS5DF`tWoMp9#5ZExa%LbwMxNK_!HTxrG5{$+jXSKI5^8$t>c)T? zNHB5fmAD1y^7pz^Z=|3igG?*!(XK~tYC{nCGfvbJlsk}`V$eXMXv@QexGFjv$*;a) zL)(T{1=&UI%4g;MscV0ePVh6}MqJVfqzZgGt8g8r3zswGjL)PsIE%jJV^^4jbTQ;k zp@2Mzl)L3kVPtK2jGyT^L7$E!(@g}`48cXyCCTO`5g7`B;aKTG8LO|)zR+p zYU{pII! z#D$}k<+}P|lOV~w+*1*OQzB1A-dP4GC;pAz%sGkl>1v-)C)!H^IkP8Y;+^Xcd`1>~ zwWeM~zr4N!LIZN`WNb7}okcQ8j^TuUwC}atf9Vfr9Nm3(3LlarE?} zbfvj0oPW&?3+dNCCMV4$PG?FS;LeQ&Z`GqoV}VPDkdQAYWs0>gtPgxIC-Gx0Cv`ZE z0n2b<T}G2h#;Ubk9XsK49+XQ&}Ut0 zqk*1_mg^0Rz&+=-2vJzXOXnkzAo?I5+=61cpk6wB!Jc>_&?8YflKd|HsW zZ|*~f%+`tM|2Try>Z9-LuhiKm)5_jS$@FraX_8xO+vT}HJTvD4?==^ELgxa6M!Z62 zRv)(^;NlZE1gN0v6VcmMZe-HG#$*xz{ZbNu%Kc&@7UGmWGRNe;2V-WAGovTcI$ zoA|FKnx=SVEr<6SK0MY<`H$`hZ16zoI2~2?NlC-uD#d#nfsZyqQ&Qf1w93>)qak+6 ziGo}NhP~YoBu~FK2h|k3eC~v4pq+#|;x!K9#;!rXcIi#`aGBOtOg&s?myy2?y><2} z1YrHqE?iS@+lN-;4&n`x=i%ii+?ctMd1O4= z?Nv3c`M~+>m>DG>@Z(Y9YZO+RM__kUYBx9{Y|eOgNv_!LQk9}I>~s~q-<&)jGf;MV z}6<8Bc(!B5=Kq0}C;-u-U%_au@UuhJWQf?APi>c9f_80SYRrU~8+a;`4qi+-8dG?iXc1GxV0@<+k_y#@PrO;iH0Dc zHtzsuqRtr4W)`3k-HIt2Fp*z?UeT+**(q=nA}hmP%>1KqXR7$OD-c}UavgG#Ow75~ z{uAtragI*!pdn?J>wo|%Fexhll{D&(^~ITLw389&9_9}-vt<|1toIx8p(?1&RAPQ6 z3;Yzy$YwZWCi(vsRZnOYWU(-zl|)Ak;MA8`kgw;v_y0H935%rb?J{cqBvkSt6{Z?A z$>#8VBIW3B{gx}r-~Cd>Tko$LfqC%W{x#(qbRPl>Gw*|PN$7ph8$&5Lyvng=ouKGj zanhOS9D}Lb`seJ8DqX}BFTr-ocg)-IlyW1Cr*szodsl8z>a>>vgQsBXdU>kp)kbCP z*e#_08oK@9?}*NmRd2H;o0#W~evB$XQ9HIPeue_{KL>>_nReMMJ{4Q({Bxr(%00q$l{bWsC$iv~|%)a2{kh zKqUj6gFkh`0ulglD!WhLlN-5=&yj#)O>xeo!B}v?+e!7#F)UaX5bNOn*rl<0Jpb51 zdmHI^678G3!|{%Shr;nM!ez{C#szbajTVqv2Rc%=e zEnm*nGX-thljyq|b=aeI?MqH85{V7l21c-l&v*;8WwE;_&R(Ud{MYW!@kK#j`#^m~ z(=MXH?MsE)5_{^3NMqUC)H_|?DYeS7vsH&0me}S7WfmZXN)VaRWe_ zHUK@xk+%WObaGJbm2|kEVD_YvX^RT#S^tTHfgEiTb-v}3wgWW`JiRzz@w|-2m>Pa9+;V@rde48tTR?gxrxAN_vRq5Wq~{Ys~q zz#E2BTYJbn7mJ~n+qc05kR;2=c&Flxy|J0ww;nnutip*EJ)y>NIQ>X9Jxwu3lK4c+ zRPrB_VTpLw_LWm&HR+U*Pn=TDoRKWF}=5`(5O$zrkD*@0o8 zFoST^X3>d7t9+&$bpwLOJ@}r>`rkj zZwA4nS*0b@@`8YMKNbWX?6d`wCYKf#;;l)Rjc7@QAGFc1S!s8wYB?1I{Gmap{?J_D z_HVp|=H=xtr%eWgly%#f3U}ue70jM8bJApd6fKIrBjO`sXcx?!W;AGC;>(N+3)xbOOz)}qL8 z_%9!2>m$5A8sk^+JO*jj8KP>f-wUf|<`z#Wm^6P{Fxm-H@Ef=+4uFe=#ksQzW)@%_ zUEt7%S6%V4#1CBZ{ea$1Ns4Sh63ORBisqC|GftZ`+XmH>F`oq`CI34>N0hDKfb#J5 z$&`HCt1%3}@f?H5C7Ad8y9i-|wKpnC1@^U`*uZAJV!x#3K1{>vDt?%#AbC=R|>K*j>BtGnBfR9FM9OO`Q;PhLJI^4^qt+5D2! zm3}L|PPr8?#`fD#QMSx33|eQVLPj_~@;nvzt0HH)#WI}g5^(!;1pDI{x$!@yDaLNz z2wXtrBfdsw2KCMFv}-EfIllVk?lPfirTLuZ0}v0 zZN9J}Ap@A{$%;?Dc;dkKTUMwjweuB)ol9a@8bHlYUWU?+g4#7*rkLY6(olZ9Npvhm zBBdd=&IBL;Q}CF*V{%91_PH^UtgA0#_bz~ew`J)HTE@K#sWnBGS%r0gwFFMIX~Uga{G|(MN_XM zfK?d+@XJ>ne5AIlSH9#0ZnN=v7rL9aSG)-=ZNd|wrKb+*pq;*epy=Gb5w?mq@=_;6 z1*|8tr@ff}6d{=2gc@HLHjq##+a-XB_vI1S25@128rVxjvTThrne>&$TB11d1DWts znDqyrOTi0K#+!`!Zm;q!joPVI0LkL>aK5z2z-}_o1xdyCQcN9I@yg+RnH+D!rKM6i znwJO57m4XE2CR>x-Fm(XFGo4RAA@>OGX4#kJ7agFOx z;ILHX<-SvZfA7dp2n{Q>qtrO%3BuGQ5xy|uBkZBdV&MYLs0O51e83p0D?8lm5N7m0 zGKflyxLGUA2VRwLuVDO;qt~oktUJVshq04TG8h^Hd~*nT?uS69{r#b6DPoCD`pE}P*)n-FVnZUV2ldm_(t(+1k~ENGfw0e_Q(w+#UI1eO#G{k7(NEcrlBy#h__YX zBYOP2P561b5Lht_9i5UaU;b^NTn;0Kl~e=#5u`Ce^BQ$bBCFH#;j3i%*e4$XX8k7l z9nT&fk&qr0ijl2AtbCSGDCRW}2<@ICHyt}nE2fv7VfnhL;D(;-ic9*b(8ntmB+Jls zqcIotacgoRxG6CgZPga7ntJ;MI)`+$iMgX4vp`iqxr54SHJN0NrJ z*CECZq{OQ{S^8|l4SU7|p3!=FrX$KCJmU4ijR}VDndal(mLE z>$Rnr4zKW_+dZh?GsCRY!silR5J(qW{8Z@L*mTr&!Lk5@rLyU*ytoVpbVt9kyS=^8 zE)*r%⋘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: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

      sS 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 z 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

      tmzeBmsFHE zfZAEN5%VR>dLq(NYf82}R??qIffa``hJE~UWMZKnc^u7SjE0-hj7klS{>O|_zul)C zN%ll$Ccn4W40gd%WbRLbPUlwtcXAHa_4em|ifpQO1Do-bOw|XTqCz&a;_ItwrB6Z) zF2eVPQBSAgzGvNvHI_yz7q+HB6xNNdwl-oGoIUPKDzP{0-N|bzE+y}bybP%LGZn=S zXgN-AN5!8;9!md#3%n*F37)7YRwp$+7{nSU>@9mO91SGF&yGK{`B)?se$L$ar|mrW zrt1N#sIVAMa_~o!g-^Cwk4G}R(E>}8UZMOUtQJfUbF*xin@LDlB2^=O5GjWGgqVvv zu0BBnJ6Kc!gLkG_RApnuMgR>f@yjU^U{!Q=y^Vb4$mENd_6KQJ@(!#i2Qi~LM#)(= z(mX|cMV5VMBzz-OmjIKhB=?ybyPY3}(|RT!&!R&8JM1dcMqg!bXQNLzRB%NdWD(R= zg8Hr`Qvs(pl5-<2j1rI>3Qa=Rnxw|3@joYcP0(vZ$?fXqog>i|NsIO&;*@61a*kDG z*M0glv7jGT&uLT=8)D7hlQ_Q8{@UK7-V}0HR>4)&eqt5AV`dEnzY20pBYBM7C-t2E`IC;AOG_wiuh?Pvp2D>Sb?ms^eI*d^0g+YTz9gadl5kKq=#pX{T})C zdU^Ml+o!pQ1@}Lw*lqCHkD`yh10VFu*FyXbP7`zq`Bw5hgrGHz`%$6S&~I;u@Jj_p zR%dx*&?{sNdI-nE$k(h&X?$f>TH|x8<~RNWJLD;Bd&Ahy&Ms=*dlb+9lJwr*8Kg}~ zzuCJVW8k?}3t-O=J2B|%7X4=L@B;^r;>xIl8>B2D%omdh6!!(_HE&|x-U254_FQ>t z8k6xJCgIPYtc?HV>uh}S3Vb=d;Jud_KS{n&H5Tb^bY>G8yBnQ*6`efx1dMc8RPxw* zkwzkucg!cv3Vh}u&w^Ungp`O*sATG((?G*7=Zy0}rWZEhldi5#Y@AQVJ*@gD6UQs< zO&vt-VbvSa5vR!Lc*DIB^DYTDW>~T9$u}{K&;AbEL*B-J&lGOE`e!=^@wCbp?8RP4 z2nPyGsG@4SkIfUtO0J_Rogg%T!h9Hu2)Pai?dmT32Gkx;3^QvoI&8(f%6DgW#rn zX}3}a)4#MmrOMbff^`^Px#VZ%sZf!sun`6?g?po*wms_FFdb@XWoC3

    1. ryrSlIXtO=m$4+A)bxbiK( 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%0D#Yzq);{r>ch=8h-= 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 ik}Tk#XZI({OyDI%88B)N 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

      2G*#9q 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

      C*{+`nse54wRwJ-mOG2iO?7bc?1do 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

      V=MH2Lx%Eo2?%jY39d3W8U~pC*-N6&^ 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�mBEIn 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

      oN(ESoC?2>0Pcj( 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%0D(=H!py6|Xa64XrJCW3%fWk<++?vHnR{AVW`|2g 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

      Je1cZ9>R-{Q!p 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%0D62vvZ-}^0x9wr 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 z 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

      4dnur)B__$<3w^IIw(ZAi$XkKiTutLi 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

      ->h>9cB$E;Msu@J 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%0Amn50{MIOwWPqbfoDy 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%0A1F!mf$Q>o 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 z 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

      4cZL?lJCC$H@GXf1c)Q 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

      {}j38E0p$K#ECMB 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 z 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�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

      -m;9e zf@_heV>Z}B2o7|;&pRdl@M%Kf)d0)`^#M&eAM_l^T6jHOJ)Btz&$dl;?J+P|;8#H1 z(_2{W^fbr5It42~SHZbGy_Fs3EjQtvkyEh~^xm&LeR@Ky{bl-3(*F$3d(?3qWIf_v zoxaOxzn^|fZ2AtIC%==Zra$5JUjbJIYcC+M;|t)=5OZMqQPy-GoKpU!l>I|=XJA_Pc!hiI8NjFFrqW=Z-W$75# z0s0^KkAZ#%dUX0ZX58QMBD{aX`vPc9sYH2L%5b9|mS%XrM9xoxGU6tp8piY#u>PuK zAIJm9Z?8e5eQbISuYGiSIXfK7^a+Bs| z_SIr|{(<;~(*=_1;)mc9OP3H8io@=o{#KHp%(cf;*t+Q-Iju7LPgc8T`hdukfmq`| zNYYNSYS}WPBNEk$#bSL5xI1NG$E~!)G50H)=GF~i-SUS_eN5Q*dk7XOM%nF8Q`+u zOmMky`EVQI3gJrNO5w`ks^IK!b#V1?4!8!mMz|)pX1Er(Hn^j3?QkdIy5V}@&cOA- zorCL#8-N>xy974`cNuON?mFCvi26nak|@JW@A^0)TtPZMAFw8E{>sbDs#cWh~FrF-q1f_4_W-E5^ zlE4%br}#+BDweSC&NK9Nh!l&NIo_v43J!);JrcUZngt4BLdB`f_7Gzot4L#(D)zCT zuUJXaee5RB`xx&CDXJy@+C$mwSQ&NkGMXa;xJq!Z-@D%q<}jFgF!RC0IC!uZ zyngUfz)Q-{qkHj=g4YdR5_p5lVOku_<%wXnftd(qADH-?9gYCc0iLdo)O#?5sKd?m z@W&y}8N|s2j+Qbv8N@RIM}XfAe#$xwDK%gwfhm9)u$ZST)LWdA#?$j)27_7G(&r2V z4hX>F{%!ybn3E{?d0-`QE>idySS~Q#i+DN*DDB7l^8hU54B|_seB^a5>YJ~frx`u= zuKU)Ve;l`EfO}F-%_qU?jDj)kA)>Y0F>G(PgVPL7lfamhq2MGMya|+OEmCgmgb}Dr zo@&t64M-&mkF65e(M*pc!3P2BGf@Bg0qPLmxP+(mz;-F)KoVxasvdGIH8zq6R9 z<6t;_#?VT!QdD{fB|jbs!5`I_y8(r8Ao!?y%w3qlQw#XVHDm69B%T_9v;4>0gZJ@N zuY-lHfHC(d(m#PB4FHb-mmtnG@HFB#fIm2E%w78ZgS6*qrw8h9KyZ_C%q_gWdx0B)F9A36=fQM1pZS(OsffMm! z>X1nD!3lQ~UbiQ}zjScI$(aJc#hKZ0Z^W(zcVp9pI~X_$DdqzYp-sY}v$c5uZ^vdt zC=8$%P`qNmlBQ;SQQml1{fPBtJgU0$mb({sXCX8ISU|oTfV+X~QSDEVTPJW8YOw?S z9$-5X-U8eUJel|Dm;(45FpqLpp)Tik-Ewy#oxR{YcioC+l-YR9qDODJyYXn>LZhAm zo<=jhR!-w$-~im26~WO-;DH2mHgoV%chfCcoX1`sicyN9wlv*#8}N=sBck-_+wOKm zoCbD0eS4Uc5*gj}LNe3g9JNQ?aUVyOCxMRwx7~Mu*Yzc)t{yjW)E0GTf2s3a1ZG=P z(xZs=U@X!`EIraYiu9VJ?iA9vVhH6siUbHj<*0ER@O0!IcK{yy0};4cNJ-@>4>wGL zTZM#bP{;}3jo^O+>;xXxq1Qp2(a1Xv?sXHYl7e))=fdEF+zXZKLp%MTLnVH@<8Hv) z`ZI9u?{|i|o7(RHhkw80?peUo2yW{8
      bM>T;pLa7s`rVgD!VF@BsKa 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

      af`QmE^Au?_gv!y%;D=}9ovi-r0X6& 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

      _kAp2RsbWTo3KWVExoS~#|XNslh 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

      w}myQR3yA>7+0s>N#U(vNo7$w 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%0DnK(#1P^}K=V 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 z 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�n)GW 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%0Db%z;IgAZ{ijTjB`v}cR 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

      c1g<+xl@oVf7-aDi3?jm9u$Htk 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

      `WD97XlpsL{&I?pv^4!r1{B!z`dgCWaNNhKv(b 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%0AEfzu}hS015`T}hvNXho9*#YGbxtGw+ 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

      Ojldr4NW_-S7(OFSsQ1@Gj?ui}Xs6 zWgXIjTwnuLpa#@|CeR8xKo{s)S4Mw(LAP5V0tR3NfiIwvaN~g4K$kt^(}O4lWPw~@ z2Q{ER{Q@~Wn&4{#XF)$00^>klOI#e6v!%2EcG#fd+%{9qXxsyoqs+wG3K$y)G9U*^ z5C9|)4on~x#Df%&4y+&-6oE2O1!}+nP!F0w3uvndYJt=T1fc72m^dgTQs(t~Tx zAZW*t$izxy;Up@kAbsF zi5x14RzzHOU0%+BTn#ewm8i;3qE3H_+5;pkLy%~ArbOejBnq4@QM^{7BAjGRl0JQ%}cP)Qi(1s!}d6dx|d_$n7(SPLU{+5YeM@TL!BQ-IpAzFj?oin%aamKJ%#>x8u=eZKF=WkR`kiU66HRJ{(oMgnl|L~ z0^*LLeJ>*K<0$(CPOg*an-0|Z6zY5$CtWAndsT`_fY5eaZdE29Uq{q50URjI8J>M^?!_XpP;?{Xzyp( z|2+EcbM(sq%K8HR@+Ip16;AdGIA6X-yS~A`-y;2YNb^0?{D3q=$oogM<0A6Egt`pl zJoy>z`2`ov2iQe<_#JtSN;LF`MD!Qx>%jhF=!45>&lTh|jCxB zhO)1tU;ja#lgRUbDDz*WaUws`Q46DkdQlw>ayq)k>nK3fVd6qZMmNNRQJIbcJ#?^v zp`!vh@X}GeLPr*F9cFuVWK!uU+ee2f9-z@tqc8UJ!+!p_?FS&=8Avw^=>m0RovkCg zR!6l#I_kjZ<&X~L1?wozpriB<$)Ni4VVixJB4@@nFe~FHYmg?xhG99(Yp*_n{hZQ<<0C|Fr;#ca(mWaBV zQP)*ycao06Q&3(iwy)MvKNz_g@fICv)?nLO)G=L$rvma@r=zwEv@KIdJy|GkJ<8vR z?N%M-ZbI8`!S-8`M>h7q4g2Px-MKod&O=}4W1lUkM*;TPiay+iIu@ZXiqWpyQAZo< zz5{J4LHbgpFGHJl>Zr9G)5(KYwHeDev_qpO2J=sEY@lcO(514?j<!|jzCjH?P zZsgPA2Em8Nqc7g|Uj&+p$>;FPAcmW&(FM@V(9Joq92|B zI>8z6GI#}afmgw6ZnWTaA`0Q#-5q!IE0lBq!~qAs4qAZ~$U(PUi3wFDg@X&8*aoUV z7BGRhM5Kdj^j1>82eyNl#Y&oTscS|gnk}doR%A4T6kq@&7+`A!!zz>qH!eU)*>F46O6pmr zq*(X|HlQrH7$A4t46%e>Fm(&^T#s_#uLrGGCE4Lx0lx(4v#{TMCH48BU5KmoMIT{E zPo9K);kE!fNC&nU)P+~3Jn2x=0H>rjPz@T>(3S+Gf!_!Qm!b|bx_;vU@A`A#t+@l# zfg<2C1uTIn1|0!9fqg9sory}qZv!zv28Qu&*bNSVY!D0NV8rQ7ouCHPt-&_9u|NYH z|9VsQLM4r&;eGJ8-;A=*pf>nxK`w{`N-+FCZ|VTmARQRMwJC4v11+E$SV0U>g3(E& z2X(*-j6enk{y}VXZU10#@Nal^6_eFOjSRqVF{{R6idRDp5yVK&?zd?=Y0DJdTQKyYmWZ32O-&<}8{ zfiV*Y&L3&u*MMF~oea)G-;Sftz*!ScHn>?p0#jGK$((^>3AY+p!Dup0M!07;Dk%VN zBUEM7-Gmb@N=f6Fy{R8`#^D5nJBkzT>}p&z@yHk9Y!C}tF)XBk>li~FK?|^f6fgy| zx?P|Vl!2)Tv1VBk;e3u=KC7{Rqa&==qUFoSR~HHthzEyx9NKnVta z$FTr55DrFv!?6anzzU3jK+mt(4;TP}!4aebb-)S?;My-}3upm$5DR$F{WJOwqyqyW z(DxI{1zA7>Do%76uggYoasf1nYR0SgERJm?=pdQb#nfD#OT zi}FA%NC$yn3yOdlD8b-Y$QRf_3J3%vU!oo0 z0I&cFjDLasK_e&vF+c_e2XNd#EwBOuaD0w>fhJ%B@gNXfIFELLSkUts>Idu~9T)+D zzJA058;A#3??AnuVn0v@%pd@aeuCo$>VOrDe~d7w1t~xd`uk8{UnueTo4BW z!1&wf1JDi*fNT&8G+^i)&TUW+vOz4E>P9}G8PtGAE$%g;xEI173j%|2kAXY#7S0dQ z1Z*H3!~g<=Zz2!S461+`1OWRSJU`w*x!^2l0yYp2G+^W`+6C%C0Z0KF;CLO!0(1a7 zNC!qB1B0(2A5Z{dfd-7ciu^$nC;+iwybH$?R0AuB0ZK6X3eGLi3Ti+$hy{Uwz~IZ+ z57dHOP$1#qY{b19{s1t12FC~3KngGb85jt`Inaso7}$VChknC7*98CgOSld|9k2oe zATW3ud4Wby1mb`a44y*UK{ZGR25_wdeFf@4HV6ki7&(cygC<}HDIgGBJAw3|4OD}4 zU<8iiI0rxzu!D491Trw(j^hZLK^4dXCNT9P>JNAW&JDOtzz$-81~`u4c!4%x1F>NA z1+)#+0V^?EA?^aUcfcJA!|3&H9hv39)QPaB8TMWdJo)1<7_QodAyP!ejcL<= zr-I+~!xxQz_S<2*t!Om{O1Hv(S&UzI2*$aPs0Z}rl4AzkK~RLj%^ruAhT)geFfO(q zw&>tL@SGO*7ctgqB**;fB}R9BZviN zU;$Ym8x#N=CSGT5tf=fqKvgnm{vX1?`{{oQf@*d{C%JwTmVC01USG{ zyN+k~$&gBOT-V{ZXp9esKL*4BGq4=jU0|GI7QDHj0N6k^sI9`w>hpE*HGx*p1^U1s z7zNh=e*z5#fgl{jffSGha)Aw0fm%=xnn4@r1l^zyTmZws0j7ZLBn})f027D@S)c&e z!2!?=I>1@b2Zn$H5KdlY$1we^Fu-R5aUca`fm~n%RX23vrPkNNUk{oGIY$WGPS6ed zzy&Y}hJgc20of_!4g!Dy7~}tRy4)0C1x26=8~{zA6|{p+a2E7{e!#dUH0%eh&-zfO zCYTflLYxdQE%M`~U4DFkAJ~8eYav_fFZ(>OVRts&q=J#v6MFt)Ny~-Vqk~TzaiIOH~u0i0UMOApyc{9x&Go^f9bBjT-RTj>#xT3SC7A0EgIU=Z&g$4 z*0^i3CZ396Cr-co+M92`_u(h!zx?L=i$DMN=jE&aI4R;=r_DpIQ2J>6 z0%itkCA}due6BIl6dkiDc4^#A@hi;wdi(RNm;plSJfTW zdu#UB-h1GIx`*o<8V@%;*8F74(bnhMjV*#*63b)q}>LB2k!7bAGQ6T6>V(T_UdFDUgJxXJN)ZbEl%-cVS=xv;z+Hz&NkIq%}$gm?DlUD7A?=<|lx zCcImk_me5%T~ppq2?_7!;eXY8d4)e46W=#(`6YK%Z*Jj8*s2f03V+?a>ch>2zv)+f zq%ZtEH?=Rfcr+~aZkhRzaq^25e1IDYd+gsGM2mcd~WIGu(h9u zm0sDrc3^Yq_};Z&>@A(pul-VAdUgKV3-e2_<*xraxAJ<}`ftK2|Jl6$+s&1e`t^hQ z%BiqT--Ye@UslTZ_M(3)Dt^%KaaP>%Lvcfyx9ft`IhnSu5WJ~@PH;M8`Z^uD_Uzuv zvm81{yd&6QaD+HEJ3<|E9pR2SjvU84$3BO)sbxW6Tb_)oyZjER{OvnB#3W>07*f+nO1-GuD2`(?K)vMcUaJg@Lqge&3|k1Na- z_6m1}t|+gFm+A6zq@M_$pvx@%qf%U9|Mt2P=-~bqE^EfPs{v!oRrad?7+sw)<~!y$ z7D@TD#|VOqaw_Hi=Kgl=_1BokEJu_h+Ofb9<5=iefenqa)HWAMt+Iv7b&p;WeR{@Sadks3v?S)DxNs-wDli_Oj}_&vo^6 z|LcnD-q)4a1Fm~smtXg~?ty)7t#6p)$dQ3YOG$y;u5ic*j$svvD#)xMyLrJW`6MyqP@aOcy zej9ms1R7(;*fDO59}~vJF}E?!5suGU;y-iQGiL6cqHqIqsuc#p-2E|Kmd?HI4}V- zhy`&Veza6m8gm?WWjmH{_Rb%HAy4@kBb8R4z(wB~L!5s#mU~JsnTXHD93|nLR<~k7 zebo)21)j)2N1IQ>L@DgVHlBjDygDdZk&!%(WH5r;b;9IQlQgTVi}WL%eUM!wbr(-3 z957~93*;xwF14)g5ReQSZ6ld_w2YZM+7ZZ<^uo4h$6EuGFMk8Cj%ULuf8ceL@;aoB z?kNG?`F)%t80p70}aSqVF3iNRvx zRRv1r8$k~qqu9rHV#%5hM#K-xd}x_SBL3aT4gV@q`HfpCi}Y=JnTE1U~)Q&+eOi_;Jep7PRAh_tAVLSt0ZTjG7DQ}(H+!{L6@;duY) zupL%M_$nBw)zFL$txRZl5W=lY*pP%eu><+80ud}SU^i^84w()&hTRAo0_S2?9OAPg zAW36l{UfK74bPuWHWD=*9>ID(S2m8A8{y!p#nAbP-8z;|#}6!n8^HK2pAL4fnBHwP zemX2A!X0Myt7ZkvaP4MGosO?sJ)N%3G9Auc3->JRhgXdomCm>k)MQQ9(P~8<>&PGG z&(LRnw@!yPPiJAznck-^Z@Pw3!E_C)w@t^_7EPzSaQk$4YR7cAw{$w(wev<;s<)#f zlTb%<)%1pfJ#cNT-+xeCF7LnhMy%gHgjyN@yKaOuci$+>@4o5C1Jg+!KxlyTe+Z!> z#_!=9kzq}EW5RI=HXfX=-hso@@f}B|tHVEry+(QeC#HkpPfc$QczU{aj%QH2U8r5_ z^GL^w{%zQ9V*QRyCu=_rH%{<7F&(_n0k>Y%yfoc^y)R=QG~pG*_V9kMPABR)J6%-I z8`I&wx8Pb?_1n`GJp1l+^vHYD$>KhkZdTuPu;`QN&DQ?u3YtDg1@A=#hrgWOz+ae7 z81T(>cyw?&Oy5t31Bc)`1kJ_iI?8{ZjyC=Rx5mxy*Xf{U6fRDTKc<7Gzu@*U>apoM zN)xCPPK>M5S=YEOPn@i+xGY`gd^;{nSGd^;w?$Y1%b1X2>M8KYLS0~89!Tcd`L*!2 zVnACN+k0Xq^e0Ns4xFYed~{`lI!q58wS*usDB7x|=j8Z^RRYJJGSa6n=2xq;A^v0o z)u0|UgLW7a?1J?9?eO=5VHqu)y4_GfOFGI7Wr_OQU2Ur`&y&40n~cD67IMFE>p;^P z$OXgg>6}exK>+9k?VtuoplNqJU7pwR)@-Iggb)x#(qd3 zzXRb}_#L3P%C+~%=a5YX(pM;B0A>6N+29|M;_KPe_7ma|FCpIg%WMjV-w1y==(r;u zVolv+kWvO+zy|CP0P-a*lrTf0_uUa!F)#M3f2I78F609~&7H5jDr1 zBue;UV_9BdUVbr@FXxPDg+;KQC4&wj57r0zlQoPl!Gnkp|EH04IGZa}-RADc- z=jBu6^Oh@AMv*0@_QJ@7m8lW1=%t{~wv|*y=2sTm3L=W3b(ZRj@+yibvS3fiOOIh~ zkKSI6#mL!PWnNU4Q%;fPg|={F-DzE!%}$Yj7pNk?+W2VX*5Z<4Y%6`-d?_*^BQ3J9 zs<;4Z;|q)2^L-*;dY;N&XXoR+2Ua<@l<%k0c{_@?P~^5!zQz^7Ho`sE&_e7|O5*%@|E5wc3%ZV*4yA zrr+W(g_DLSJJu*il`$|Y7GwyALc*ATzmlA#@by@>HZpkNyVE{3k9UfjT1m|gT6SqX ziCR=-2;=$^)k)*tYF3`6?+oPA%7f-Rp%xVoLxqI`|Met|^t zc*cJ>x-}+sF=3#Yc!c+d!-_>bL;YWe_Pb?o;fquJ51{bsH914ckg!K}{2w;4Z;T{k zoC*=?i^X(I#)p%#tcG^R?t>8EzTiNb<&{qUPp8vU@ra4XhaevJq<%4bi<;A{oliAb zysdtv1|j3xAk>Oq_zo(Nkt3_Yw>5(5UJaw>y4OU>Yl4SzXNg0M|7Yn$1#3$Tcfnvh zU(fh|8BT9l?+GF6Js7lGMe&S!5PgD32c%gY9|qHfKVS$z^W#W3W`z+Sxt#1-KEFXh zF&3FbMSK+8Sl~U7#mIu~w`~3>nEnYT6oB6r=y3MY$z#WfP;^{a5EsChbQg-7$|QW7OP#bOsZw#Z#u`1Ry3wvv?o|7Ez* zjIHKC%31f5-F5mC#nTl9`jX~j8OeNHw>D@KsEWud-%+$RvZ6F{0TQT{uhD|!HS4n& z7H`%P#4$BIgVtSk>$lzcdCt`5hoavUo@-EFn6oDKqvh|Ck;#ikj-IrH9Evb{tE79I_Orpwrn}I!`yo11bCeu=YZ%^Rzv2LKvC#=NkYX~=IDq1@vhRvTu8IOA;T?s>Qo_t_WJxicNQG@JfAJCVNKKCY!r5APFz=x_Idv4_k?5=9!xP z0gM@Il+uJ;R$k9gAOj1MSf8q-Obm0A4^%CwiHqk1f6Oop16-IvftmDzs7Rz2MMI^$>R4E4qfk=OI{XYbl;MYkML7y87St%HR2Vn2 za(8VT%XZnK-7%@y!j_a;w$P@Ep(vv;)rrFW{`^J{^o-??<2$ zH~@43FTs%1%lI3IbyU!U@T*Wwe=QxA@&*EL0>^+~0LK&Q2ko!nc^hy8CxCZ=cXR06 zNw~iOdV%+GVfm!~Pap7moUA*AEBgB3KgpRtRaoO^c-R>o*}eejPap76sK&FCFE)(u z*TA2FzX0E)QNabcUMQUSd)XV1pVoXIdtcL;v%07M85jF&`<{vU(?7pww4&wx`;$Ja z%iQsclb;^ljL`()p;`*>FZv-hueoEzJ|+;Mwn)2lgK-W*x;RK&V- zad+J~`|sG*#!LRD=jvmRAGOWg8*6t5&gIW*UVAWdgJIW-sogj4|7T(J+wVP)^^@-A z?9>$x?wMGUx6Aymm{*!M+tw{>a^Knd`N0lL#g&|>=Pv%sBK7W!{_tO}&t__VW!(Ep zf7~eZ>yLl^FS$MXRUAhtgAi@RRGb989cVD>*Z3OgEhMlXNimY?$H zzSLxXr8R29Upp-8x|YV?U!>DdFW>(5;_8OfV@o=lxJ!SDO@G2w^Y5s2|M~swghh|u zUm~nr_0{F8Q~vQ?9@35 zCO*v-mi{n&*OW_--+ZDb;Mlt`kvbb+X{uZM@Q3TZd~1rOKQn3BGY6YaFWqK&1!dIB z2b!L2KE7;M;QMci{(WfMmm3$y{w;RU`@35oOIQ-U>)o4UgFn9YySg5Y%i=U=}PO*8&;^fl9grb~AmZu)JYn-2HyxJ6vf=Hh*!Nz4+WdHIlIMr{ zCjOq)JL+%b9Q^gvtDCAr-@Cx)Ph-4y_)5B)Hi8E^SDv%{rMAfO>#wqszV7U>M9gc5 zeY`NYvunl^KV4m%|MCZc{Y{HbUwQJqAK!`08M6vq%Qxwsmh8eii4Q)L-1GH^w_fXL zy50SsPg5G)Ec15u*g(eD(Nj@I=6w05+D}e@^!sl%n4kFb%S|8n3)bKHpNYP&ia+wK z9{+pnw8!83<{o})Y)NJJmodL=jcR%SVAF#S|1tj3xqrt5Yu^0f8>e&j2M0PVt=g&R zjLD`o&lSiFogp(6=rRJ@e9AZgZL*A)p*xo`3Pn5fRGBhx#T-O=^*lU3I5E}JEO1Yn`@AQL z{1HgKUtrAtRml8>gUlWjeV+yiC7H}^Aif_W^Ab0ii|u6QL^8L+y;~x4l|;8bPa+eA zJ5Am}`ngDx1bm42ryQ*LQP9TWx5;Fl;vw@<2V?%t|3~WrZB%5;A3MpsMj~^%mn?%0 zCJOJtg&1=NNYA;+d>PSa9AsW0lKCHYGVcK%z~k;gxYmnm@Q}F#vm&yDS$~4;W8lWEo{$eNd?PC&pWd5Uv%pbXELwO{ox~TkW zk<1UWCOcA_P;yEV%owjm(cCe=hRbL^9($utW?+MZx=32-iyqWd0{eHyu$?9;&a# zOXfGm3bZta(ugr{akJ*tF7gm2wEsK#I)ARTc*@lo5^Y>vxMpKHjF>&TsUEh>3fHWx zuGvyih+ASRXye95aYlM$eM3oI!^VxY@t(&wu1}}BmDMHn^%eEYD0Xt!fJ1p3Vcr*p zZYyf6b(?fs)RY%Alr-QW zSlKpAq1W%KtEed0T31<8h7E^2T3WE_$#`n9)!;huO*Pn~+K;^JD{vcl9gN*p(o6R_ zDz+@&3OmEO^r>}I{p3<*HDViO$i-;^ihrHHvQ}VaUbC$b7HYTFImxxMdXuBHrlbz$ z1}4ptt@e-xs@bcp0zG>FmTDNc-AUJ&$pfXZqh422U0qR!KW1hkc2mS!*bl6y5?uCB zv87=(MQmc`Bkmfluc%wSrLv3~3Mv}%Hf?FZx#JheST=|G)&DHHud1u7se70V{fy=$ zQ;DKsn)_BJ8~?Z)ZOx$d zD{$X^`8*~EcjBBTD=g;KKLo=KOvG&dj0!^)Vk&fduKWFYM+|*F* zB1Y3hOgA@c-PUcICN#Fk8fqNZSgxE3s=&YUZ7ltgfnjjd-7_ijZbnMI)Xg_NLM zsGl_HOqDg8nUEeiwv=slpsUzaUsJYt@y7akG?GdxQ+TYh)>k%ER9DZYAruO;|7BGr zb+j2PA_r=x8l~L^<6mWuQAueH{!@KJIbL*g#pbfAy4y*1l-50_qm+8bW^z_G;IaiO zt4d(RjT@VF3c91p64b!v$1d_t2h~+Pfu1H4e-HKZ=;kb9V(8RkR9R7jI(xLDp-fBj z>#1x9t;6e9S3FKD@Mmb0mg8oC$G4HYp$_j4la5KGb zbDoiqLx&TE4dpdk8>sT1gv(sAY8GY3Qe6E45*^##VQ3kHVUo#UX42-pG{3B*Ap%Dh zD;^<6hD3yfx*QB$brqXy9axUC74viUKbM5!#_NMddMmkj?R)i%^@bvP>OdM1x_FRZS40^*a;iBcIR zK*q`x1{b2;*GjB~fo;8%x(b&TRqtWB!+LRZ$z_&J!ZFMSM>%7v=b0;99j*|lri~To zk4o@gAaGnbX`pk)#*GlqpwmXLsH1)G(7dhnb@Moeo=JI~?#^GmV&%s9bF=l7aJ!zC zWZg~-Eri@aOYHM0Iv&>W=yqmu>n(wn;QqrEbUQ~J%x`f;lN*E>Id!?Xw$cDwp)eW1 zByq4cpGFBhUK z8U|@9qn$idp}Pm1?8cubHiS}&@kE)?<`DgBM(T?Zg)=DAESolMik?LaRz^`Nt-!UO zI+2)*DGUTN8d`%5L;29YgW9!>5hF9ES_wd@eHeFPv7XpeQ(uuO)zlb@A2PiF8!ulP zY06_n7ObD2Bog7E|4DSg;9#X+4Cg^i_~4wyJPb}DG zl%5UZ(_#KC4fF4#F#qbp{ChaezrTd}w=2v)NOua64^pQhIP=5&dm_xg_%QzYEggjJ1ewcsT!~8oK z=AR|Zze8dEIm7&$9p>NZF#pbn`Ij5!-^wum_J#TP+c5u{!~DA^%)i<&|2$#-wTAik zR+xVYVg9`o=ASRjzoIbzGQ#|OG|aylVg8*6^Y5-O|DwbElfwL)7Uth`Vg9v*`S(ef ze<@-9X~X`M!?PYJW{)-e0N2(wQNvu`BKzAwY~_t%ehr=wFa|&P*KoMXA@&Fmg0VE(D5P?KM0CWHuX!iB1P9_5WF~AFq07Jk4 z-~oC8H*gG4fG)rVv;t0`5pV!ifE_3TY(O3$137>Mqyr+52nc`ZvY!4DlZPH zI;m6TN%6_z&VWv8_VeN{&|1`sG6fy@W}zaHz#uPcSA6d+q+qtxqiRLPCkZ_&M>ZdM zyd3XwC0HpG8S62`8?u_cg4ChDeLn>?g5o2jwa|&Y8VP>^kHtQYhf14KqUU%q zjpHkHsRa7iaS9IN3{bYmrG}Odk`iDXijSAu)Z#+oMreE*=Tv-WPf}1zxR;6)fPTrx z9U5h*Ho#)z?{ma4a*H1q*#a;GZ?n;S-Uf+dydC%8YHYL;Zyo`if=nBQQeTCl$gInXPfwj=vj!C3EFOPLTIuJ+ z9bV3RYLv5oq%xk5RF*zcucLnrRbirsYIib{UGZhJIKez_GRWnspTwVUP}kw8u{pGK+^*3A~Fy<>_C>ACql< z10h~Iq|r%xVC`KAn9|9Cq_gqAM;M!BsNEkrX>jP`FtF@XJ6SmqJnkZyqk@3Ml7-bB zrGiMJWWzBEP3~O#(oumrydjUK)CC$RoKp`>Oa#Bf%g|&l%q~$BZcx1iJj)?xg7Br< zh6Dy|oSB5L)V=Uy`f`ayViQv1(Rz$s=_ET510S{!pN209?vrrwT@^e5_ZDnFHrUB# zK^ZVr&SWx4yEB<8E&l8uUdm)1Jc$1YLhAXxOvaUnKjuJX8#0-A;W}3

      =e{pC$y> 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�~CzrMh!mOX;exJs&wS!NM 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 E|1 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

      `mF~GPy8Qmuq?@@>TeU7EI#Swa) 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%0AQw2loFllcu>k9)edKBeggUtgs#x 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ÐwvKFu0yY&Cw_M$4IGeDavaAw z!R8$;5^StYR}e!BrK;cD6^c(3AVT~?!Jv3~YIW(BP&~y&(is=r-lW`eb7+~nCT=T) zXQ1Gs7$^#v4Uk4i6C?;}hO|Ihi$a0wz~27}#WPn0%f-&f31w&I&7t#j>9}-qJO#YU zuh&j{A#ffeX*$I0UCKob<;@`i4x5)%0;-Q zFff6oi;if_ACr-?HgJ||j(P2Vf7B=VPmS!WejRuDJyb$tIR*ET!kht2?F9;xZ;h9f zRJN)|;+BRz+s>Fm4y%%tr_Cn{Mm^8Ub#LtNL>Z8$XDM5lrF>bQrK(O`P-pE(=BE>% zA(-}GE}HoUH%lO<2vhdWvxE~&o!sW8&i`-M92tL|DrgxX&hO76y0nUFj(Xjcyb+W; zUTb!;jF23#5j?DQ6xuHSXUeB+>WI5t&XOh@ynpu3se;^L3Y^e-ik++6ldaFMhRW5H z=KAF&xp|X5zwa^7-l8N$J^{g(ZRXR)-H%PZ*>8uhUV*$Z@!iZwV};kH%RW&FZ=~68?Su9;QeH!xwLu|JT=FQ7d}8;)N0cA$J1K!{Amb8riFgU zkA6q`VD5zU$*4nGq`JJ0_;kHzXF=_Qo(`k#IKt}Qg6wu7%z5MMLXiu%NzIE=g5RUMmdvo?6dX5f6N1GJ88njcbr@fsydCpY zQ7TQcD>z}_l{tSji|VGORRb33E!X{Itdml@8BM^okXHS+$)Xo09-?lCOlwIYupZ3i ztDO9hAqL@~^G$9)H7t-J0=WC|;0-jsin=n%^#nEv4ko6wenN1-QJT0mSa6Ujx3`Ot z)>v;F%C#MC#FOj4K@0re6x2S`UXjVBze;v)_x{)&OeQwc;Z^$jOFRL~*eY7~AxNj* z1?XE-B|f5!w`~)7aRU^UahJHM&H}CB8_g(Bw7uadx6DZ;qjw<~X@_Fe#L0HG{~yb? z5U@r9qK+=Jej9!006@Zpb!{t+rK)vk$;p=Q-8T4wI%L*vo6EqT1KZ9G(xoLXf7SKF zmQ(N-HiA#(`cs$`F4a1_9eBMpJAFOoI|EhX{ZY{`^=dR0l-yj;qHis9P&7kIkN!>e8kacr5oP6l zRHT|dMB{0+{HCyQmWr3u*`iY>?5swoGbiV%Fez=u%)}}4Ol{`D^W8>EY*2JxBqnws zSp|yz`9YJ>o=a`wJ1U@1e*Hk{=HdQR`mArD=v3KFG!)@Hv^N8YQny3hMcicXC`DwI-4xjM>O=Dv&>FIU4- z_O~z^_jj^6-lL#$W}i(v3OquWK@BCOIebjtGs;z3Bjxe5OB-P~D0;8BxbX_j**=j& z=16KlmuA1pO>XB0)2of7*%nn^q_HEOihMhFs99ZkKZHaq&JwmbDQppY#|8bK*d}y5 zMtzB}#g`J+l3R2kl47of0U60`xO>~ZvFloi9M*a!{@zSggNrJo!<@q^UK6r-qRFHr zT|ILyuPttD&)iwNN^Xmnr^~j3BMt!4y~=*7dmAQL&bNJnYR$PyxHQ0`U)zIx;vd^( z`N;WV+TE9Mh^oSpA0CLpu-v+^hJ+1HamlZiik*u>N2L`#_gpa6@OyKy^ptsywnClr z+cH)EL2qa8QZ^8GPVw9qZ@G3WeK?y<@;H@$qEJs(XuJ2EZ-H0ehPN;9^(&t9mx{Al z*}rI#7fZWsh|{vr%if)K2UiLML0GJSJHUIS4Ws-*hEtlND;7~|DeGJuki;Dbk>ZQG zsi5V-7#r+}=htLALo;ywHaV}TTXO|UFUr3@R1YJV>C=XZJNfOJS zO``vE7?gjCN%SX>pFvtOdapv$8(2KwvR$s4uRD?V5=H(g9V%;-=S!xZslvFKqEGEb z_+1sE&o9hzDhofEIc2GI02BDHvWH2Qc7xeNi`rPPK^>;%!UTgX(cJ zM{B1yg{fyfzkNhGpErL;DC#_HY-au@(O6DZ`pkmRk38ZKh&C$r#uY!@zK|lL$9(dW z!0YO6q(qK#q~9+!gtoEJsk|7Ql*Gr&0suqipxP zC}3OQ4_-?x*4_P9!5ICB7WDiRiG|eqV?O$@Pyy(WzqJ0~;RLeKcDiriLw6I1Lci9v zCsUcdTFHrY4Ev;cCHr(B6u$za>$7svudDas^9b7x72>(~^ZeY)pfHmGauC;gi%MZLfR|hW%l~Di0*Y}_~qUG7QqO-5IAB8bTUzKtX=?% z|NDy0sY38bqBT|gB*)=VhXmf&pCZVY)xvPki4o+j$3Xk&wFgFkNe0OYx5qea2$N56 z=jzlGu-lh1C3R}Vn(uTD<~#RyBMtufe5bci_TNlXUiGi&Kj)a2`_E*$v#{|$&I2vH z-x@|dpy*I$a5m^WVYRgIszvEE?AP|$!_WdDky%nL;m$-0FJ5e21*pAWLu^|s+QyCT z^cHC2Sybroy0m~m(aT;-@Y25&d+1?CuZSVDO_b*M~ z5kGEhA^&<`q|InX=EHX8w~}yYQV7M*oPQ?)7eT^CeB7q6c-`dZebPILORIx2#cd?S z6<45L=`bqg5uV0=Dsf$3spkEm_;SPTVrwIa%^nIOJ-#6bgu`~V5r1m8U!)fNZHBZ$ zLcyN0J1?#dV{rh|4;h3ELv+XpBmxWOp3-Jc(+U>30T9!qvypOL8M>}b{Oxj!H5o@L%D1B(w ztO{m{hnup*%HhNM{ut)FofiK=!*K-wh$A2fMK7en&kUWoPf#uuO*i=g`GLHNGY04K zlMKr(kY>m)(AK(qAnC$#2%VGmTbC6|?JX!d2zUsfMdhRhcmc)nuf z!40^HA_V~J{93+S~yi?@%!b6RXCX2a*EjiZ4Jfw{@Xn9a^O1+ z!dEd^Ou;JEssI-)2DmHGMo)SEp&s)Ud`9`rIeI8wA){ksZO{fbga60Uy9dNkp8Mm^ zJ2QI$He_aJxg^nSmEp%xFCjt`Bl5&q?LsH|7SkV>h?Npnl zbs&s97oM|Hxuk{SP*Bl;iB%#5`Qs_8TYCw`;5zpwtGgvcNQ(a+ts~)a<(X5n4~~4M z;|Whoc&F^+shI_#`_}>R#Hq)i@AtW}Qh5=)(kPa?qQ`w($XMu;5f#Q4C;7ciQ$nEC z_p&Ql5LYRoxYHE1Le*_iF(X7-oCI+qbd5_r9*822fdVP4m@wfJX^X`1{y$UA_R}1l z7)8$-3m)vWa&76}qIk(rs`Q$$5;nSUx?S!c&?g4)-6rv(3}?3MUstQ%m4spjB$2mQ zUp_A$9lysFJXxDT)miS2)iW2ABi#6=COu}qR-ZV(d*E3Fd&=QLM(sdRy}XkGD|aaR z#GAXXsC&W|)r7m`;>AKP{*5VrG|(lm0CG{=3cFbDA=l%E8a*~i4x zxUHtpg%}t(j6EH0Q<@AhcrvlAlDGT%i3Gc1az)f$76-!_e-83?JN=?}YqP=JO@_&6 zGCGjo#cO0fP!uzHH(KxXGIdv2L3}2)-Q>3U0VD*e*b*S(*Ro4&s%-Z{~ofOcD9atq~Wte06jmn8BZDsH+%n%%c z3NJ5lTgYdY%#dv&1mkza%vGAjqmu=4@@zG=^IHCDOmkJ*S`@|tZ2+^v^zEXO!+k&t;+BdsU|5ndp|b=j}ZU< zk5aE~dV?N1cZ{^`iWqD`m#8%`xUp|2$|sVhk>+#J^y zh|Y>9c4CRYoO_B^(zJTE>`0=EZH+mjM-q>hZt_-5eCtxyMnsz_4L=aij9PXCIH*~x z3$|yMU!N~rM7VrRKHqM@sJl1`X%iWxS>e8L!bdAq`U1IJnDxNDUp zSl5-sQt}D&g?p=~53+PkfX|~w3tl0w)?%e_X>fdU+f~gDb=uai;Yza9vw6jS=Qw>Z zbM{E$G;S{pR)53HV>G!^WP8e4VWxGQ7VQ{^GIq6BP7RI|8)G{HU>2jbor=!}Urxbb zMGEHV!Tn;nf5v`vY~_w^6aNe6gYIXUepWi6{(`!^UobBE-V`ai7g}`}A3Zyz_HZ?S zbXoibk0_s6W;K4Au^QQjvH7iQho2DUawVVDaoDQtPbA?j$4fpJV3I3u&uOmi7;Gb>glt z?`my@5zw{o_)NN-<`>;y0)Iy^X%+KgzF~FcA4mVqua07QH?4sQID{F+w={0QNzV?d z2bb?)v|*1rJWI2tHv7_6=+h5R&OpnoI+jwNm38jeiU&CQPiq4WVP?Xo%Pgm1r#rxg zouu!Oy4!QjCFZO>CE$d{oD{U`{W!i)J(zg*pNb#a7{2}8i{`Bp5I>S7$P*_}+EFfs z3;a#6@J1y@aB9K=h8fal+1YdYkc+lZi5W?W%wf=P4AgYPY(g zp-xkge)i+3ZfgMRj7J1BWYw6S9Ebfr-yYCUCQ`)acnx$*yw^k_TiucUm=tteyC*?Z%cq{mL5t}=0hCIME&{rIVX4%ske z1VQ)CZ9<=Q6e45%_(8hdzN0+$8%RQ#Twh~rt5ZCAly7W2K2wMX1P@G(71m0V*rPi5 zLdL2y?P39QpFXSFWXy+RRXw?)o5sGys?CbR^}KyCIo?Q32CRukEv`*XJoJm4bi9?5 zo6^WT(}{ty&QVM@Vt&- zXsnEf;V{!$s~~6e4K{#j3FHgkBro((76>}<3dN*^YoSy`i`herGyK`HYn12Y1=a_1 zR$R?xQbYS9e5dMEx9$Q~bv?IL*JE1&w?zWyz1OXe-2n_#L4`G$X+b=Mfq4@l7?4sL zQT8(yb+&2v*2pw{uRiZ;sW$FAp34aTSMJ0e^shpEjQ9N2s{+f~GJi|H9cYl>#P3De z#kVZWWv+p%v@17O5Meyp3i2tB$v?vpYp{pKscfPlSAH4$IoLm9#l97feHsl*(GX5X zLlPP~wC~)73CV%SoCirLXrr!Cw?ofu7Jmgvy3LiIr@;nPG@sN#ORii0*p&-m@2Nc| z_so@9Ca2CK=0-xKsy+exS}sZPfeG>P(#Mv_Kz2|2_zGNgFcY;e1Q?<_evN3Qp5=8N zSX)QwU}*}qW%|Z3NLJ3=Ky#*h^Pv0mD%PEB?&@cI$de+El#sYG>{jyh9+NV$Ct9N6 z;GiSL{x$8FJf2i4T%>%NFw7gxbapD*B5f1X$oY&nRHRQ{edu~zWv?1YWnnX40|%9X zyU-8zPuHiyu1|2gD`oP3d5|c#*zNA7QQFyyvD2f3GTnu0CDV@Ku6<=R4G{@ERYj8f znmMKJ$S)xVbz3C*MSJFvU!gt#>aTap|0~+1(ZV~WBZi%I?Qn?)J0r4Xj{#s(zG>UU zH-fsH%m#+!(aF>^lixp;a2LS!M(w@TE&7ZMx1ifr>}0|H@k|9lmjesm<9c@(OMbIE z_R4E|Y=5Ek;))0ic%ejcZ*rk-@vGn}bNlpIc9$OeUhn6hKCOTL zX+!YyPoGdf|MXG|3m?#sDkdC==HCmKIOAEbS zBpqn`QAVjk-?joRDg_#vjBOqmIP~b0m?39ZXOi|W#S|W`auHN(E*H z&o_3X+6z*W4q-b08dNmzNJ54$LKnEvZ=xLZO4i{duRY#gXxkb|P&AVFW6_v)l#Nd< za|eqzL)k<acXo*t5`2iaZE;!Sv>-HsW*z5YwUfujL zeSw3S>4Gg?T+?A~cJ;=J{Rd5d7|xT{*dXp-hr8_l2i0q=E!8ESQB%YfZMX3=q@?c@%T~2n+{@U&ik+paP9@48HCB|*iuyzvI!R`x?DSBm0Tb1h zM`8WH7x2HLW;pGJV+k9~)}+oUzN*XzEEzC1Ym|1Qd+j;Ko}03YhxhVob5rhupB-&w zN>dYa?QJdYUPQD>%4`!{`oxf++n8M~G2f6Jd}D;mI1n~b zyQw_763%wLE=dcUpeSP2&~)&d!T_;K;I7;g8(1I?`%PkR>2j`^miMmg3Ku1_HKdA6w?bkR69Cq8og0N^uKX%Mt*Ip}5G}t9`@srY#KK4PW?_i<= z9t>%mh!@f?K`1aAYuEZ>tMFUT`JxcfEVny^W-d9S_ z6wz9Er}(PBiDqdXf)Rao%@P1=LAqbiED15FEvwrbPoZtGCDuWBj8|7=YRz$LU1)XL z_LxaKJnYJ7E6MSk%nhyHcrcCB>gU9n8nX=Dg$*|w2?RgXopxJ&P|(I2zf8XA2#&C)|inL!!h9`XXgr-!I&rQFuwCbU03zn6=k zH=&0-djoUJ*F_SKcxdMzAW57ixUWykVv_A$UMFcqlu4U9Z;)-7cZ#`%k5agtN`bh# zoT7KT^tQa!V%>OdSUH(U_BI*Gug-QUa$?Y0^cakM{flU%LR73@DD+u3PzQ%!{wuRJFo3kueSR$7Uta-2$^J4iU!~X~Xf6YcG(`Fv=@o*qwy(g*A z-Q)^R@j$g*xaXAK;*yP(F(F*b#I=`J zs(2?VM@B)p(90(*dmfj2+Jz&fji(Y#u<7md<-(k|@tqZz1UUfW(-UG+uVpJhPLo=jC{-ED7CqU+?P~M*b=ak^9UFColhY;09j<`fKyRheAH3_o7!GM-L1{ zs3GCr_iD&0fHQjz_a+h)Q&hhS%1m@lm`|u@?d;O8ufnn@5G{kIXAoTKo1iy9UEp3{ zdHLm+hfseD^jlE4()T=gG-c@N_m!6Tk?Z#voEL$vhdfA@65Ln%o_44$cx%N|u0xg1 zwNkM5UO}m+UPd;KGH1!)S+$3Hw$mst26D}1^cgSi^)twuBt9i^dATBsY}EE!ytnx8 zDVpG2d&QpC!jwz%5IS&tVq>k7p?i49#aDa%PBYIB3C(K3Dkt40yxB> z`zHrmXYf&auUpd+ujCf6&L`IdODZ`&y|I#`fd|}8XU7)`Gf+QeiFuBD$-~jmO@M6U zFVh1j@OfXTg=^ zf1-D1GDU2TjsS3=J;uUTYtR~uLfMdvX*-wSh?H#chVGN^O)Yi@W4v+}@GwvLE-8`e z=rXTpoXlUv5S(B56w{wTG{9w5UetF>PNC|2OnQIFEZ*&ZQj{YlXOiIiI3S(`_iJN8 z-gS5i4)9YB7WLwRk}&v_ynBt@#qxeoUG8G(!P*YrzPOq0Y2PJoXz!FM^D%cJb#8PC z;$%Gul0R+(=wY>w+4FN7exwC;UV*-+QfXte$>celka5|?SQo29S&2-PH7L__)5&I` zq564Xv=3&MSbAQDQZIB=nzT|hiMs?2(fT8c!p8+)B++`sk>s`cS_YP7*&Ini`FC-V zmWb88Ij7zfM83h~v#^HF>~*K@>9In^CVxYrjM-kRbfIzy*O#8NKBvnfTWW8|@PVS8 zhSIz>4_^sS(P+E&XNZ|rzqev|DEn)EWo%kt1a&NyA+{bven^ zdn7ZDCgl}3t`c~czTeN3zkk}lNxE0yvwi^fzC8Zv)eAg&cb7S1f3D+5ZuDT{%5vD^ z!nca!BdK#snQJj{^aJtE6j2^wvgl;HFq@{RXD5@z#iN1+{Nd#8P58IpN3psIq<)!`Bt{lm zX9+ged~!tdi5Emi;xZxv`z+a)H+7A<0^yNULiH}{+p^Zxt`AkKK;G+b6D@t|a?oMl z8fc3zF9;-8JmLTR)791TeQ@ox`g18gA5g)-YLNr^9N$0{Px?OpG{r+Zz^ht((W>KV zEmdjoWjL^Wh!Z~^-gP?{njX8fOKw&uSj0k^I3`1*jMmOH`FjdUpA2ldAv8Tcz6DG1 z6ZmSs$F$t_&j3@9phg|(6}BY6IooR7LbLT9h03coeuVk0kIlzs0fnE(Am&Dm24 zQ*n#YIXMhfXS*@@t{%JdT&>Z5uGZNL=fc1~pd>vcuQyhgEsUDt-|xKHUv*>=>GGs0 zpiuh6V$$c1DT}Gk&`KfeJB4)(NKbn zu|hUeK-YNumrEbkmY-iwjbf4FAxfwV_d>Y}RpOF+%kBiW4r@o6$nXA~q~ zlnx2jDD&;Y5nAyPj$DXn_OqhN>+=+8#?$ zho(Y3)*^UJu}k+zo5oL*xLbBQ1Pa>S&S=9^q$%#L|FYqR&1t4fE!4OA$!6qT+n2~I zcy#3Mi8GkB^w&-$bnev9E;d#`!hZ+NP&21M%{=&gkW)eiQ%5HUzeBlesQ5|NV+#~E z8R2EkhRQCQUc4S|k$3Mj`1A)26P}i>MNH!}JEA*{RO7*X7EK*$kLBefq9j+3>5J)- zcqk9XyT_H!Kee@2VLN0KW}4Y#%Oi>K;EN zWYGV5s@EVjW6X(q9+(#!bT8cHO&HYo!bCPSwGM5f^5=xPo2fp;Fcne{3u|a}pwW~` zVqoSP4%rC3xgPhQ6Jy{n5=X}tI`p}P8}--|9?xqmy0kZ-Gh_rar2yV}1hd6;RN@j_ zC$F>j>U$`32Igh&E)NA$#m8-PvYy#DpHQr>HqGLvjQjkg3x1thdv#{f#7{UsIEyuo z7M1v7Cf`{Fpb6(`ZzwKw{}oItMqoRBzg^yp)vS*WL21L@!~%N1rUDrpeJz(VZUn!g zZhjDc{)_*1wLs6|JfHNhPoMbs5?v+ zl*lx05)Mky5Xl9-hMUpoL(13H;s`e;xM5Wtf&27_;By97Mf69!Df|O=<5RP7A!O7vjAvlu-enXX~ zd&Ln9>yZR!j3lZ|GOIF$Qzx5aR^UwX13z;`N7_v5^NUWko94AbrB>Od67$^Rs%Z8{ zyaGKN-Yr^awox525p)Qc(PMWwprJ65$b!M)hy9ayyH=kpS*2{VoWggq7RO}t2iH9{G5+{ z!6`<}ovFv%7^ChPJys{?Vi_=rR>3qYL?O)>(J3YlCpdK&FLgN4{SMSmStAXMRt)%Z znc`bM@YVHFH>%K<%|B9P{y~ECo7(wJB{tU-`x+P?D7Asr)lUFEFwxiW5FgM# zv2!8D!oMNi;tjr+h`>f^+60sKwyq~A%9mj*#ZqQ>>hzf@_}eKKyp$My#BK56?eyPD zhDlAK?K3%RPaukOGaE^=XE&IGNxhg1{CNE>q>oBX&CtlOY ztN7xD!o>x!bO^$}Y0t18tB26$!RPbf^KI_cCo0DuqiEA?^0_Hqi(*to@!_HgQ*Sh3 zHlhhZkJe|gF{fr#TjRc6iZ!SQIY-5Mj>;W7R9;ukzs#FCUZ5={B1 zHCcIM@4vpjn)kR%(?`o`GAf>)l!~-diBp-kN-fc6Ma$$Jw~8N33WA?1D;|6sQW6sd zbO1rYAU#$T;|m*01&6HwCbQw+FU+GwWV>T6i@rZrEE=Wa)k?>+bHS%oGx(#a3ibPD;ByuO*vz4Ki1> zH@aR3+($zjNiP(6=Q>d=US5XeZS1X%rzCbc-`>=d+DC6q@yf@oyz*A-TGmydeTMyAGmL)zFRebRZsNWSm$*Y`DhTPYk(T{V2pQw zCiT9zzp#?8HDS}w;=a&R!ssdJAr$?fnWRiIHk<8;bpqo;+$k7$ z#`&{K=UPE~-R8AxU5uh$vYH5SsXV{~ZMD2hY=_ipHQq=dNtv%=Ef;MMK73mI%T$v1 z2J*cBCBS><tauh`hz4^EgVI4x#= zBxmM+B;Tn@Y>YS?28K_3NC@kBF7f({fok=>rP25eTur;0Blj7 z>HBlS-rc*?*7ydXR%azPGSn;q#U^kzVVhk+vzyB~|2ZIO-z9RLf7#^2{b@aT6!&bS zuQAvzA^1(y`O=?c-{I=|n=2a8mX=v5lr}MDl}@STeJ6)P=UoEzoE)97DW{I|-owX_ zU?r>Vp_-Na@JR)hL@H#5k2@i)wu>}*nA6*lmNZ9U(PXTQ#XN%KtSLOAEK2V(O~#wx zc)%+kB(8RUn-i=|T!a~!4f?Vdv)oURpOfoz0wGTPFV^>4=2*)vXWJK#lPFIg-@Mos zJzVq6^;Y#TasVgQQf91{WLTjyY_(*qfe+K$6g!vD_tBo~$b4Xgg;pGfms6x#*xC)&{jx!P`X zx5jH;rEspa*O~5lO=*~x_U3j9<9EwRGZ{?%ibg(v+;tp1^!+KiKP}>4Nr9WODu}#( zkOIk@5LEps*1+65x$YCJqfbos!T3$mu#Zc=1S|lvFi3)}rw&svlyp+&9bYp4QADmD zn>w%11);75rUVk-j*^PJ!gyB=g)XY-+Dd>-dPA9`&}C!_ih|vm_eWO_H4sG!BB1=; zj$#^;gwn%qUi7bX^Zv{BVjDgG*N*P6xeTE`jfbbczlYMrfuBk=u6QGfrz)6q?_{5g zdNsSqizf1@)Yqw<#7(FRANnDR8aDhrH!1yT8`;^Wc(h6k)o)@a{?w{hR1~FhK zgns6ao=g+elS8S#G#lHW(UsI&x#P+OvPGsXr?+%2_>zwk0ri{xaH<^FOqLE9)RQjT zYMyJf1)@{Q?7-CEUDqik@yiU8B{RNA@S2UMr&!fp=#_PPBw=YRi3^w1y8TnL$b%4} zKp>iC#Xs4Wi0j*-aLZZW8%cyAn*Xa9f3hY_o5(k@p!$chwVe+AT%RF0wo*PLfm>K_;uf|ENnY?XeXGTQ$o=g26mdZNna{Aa*%AuoEx9J=}!ZH!#=ONz*woC+VU0NSWz<%bvTc(0cn&j=<=6;DpRkCdy zlfydq_N#XqaODD= zdjNZ)N2qoJznacQr~uJM_{M#=I`F0H5MX8eE5XQ)2%w=RAwpR;{FwC)Hl%Kl2P2e; zhWU)18LvkuEj2>x?wLq}_jpndd~$-ixr5Ta?4XRK4$2ZcaOO+cQ0WTy3lHQAnPR?R z_vH&Y9n12Cw1pi67k5*>;7EoIE^|WK)TeRPW-1sh`zP*TxD%)cos=zh+--YpMA4~ z5supOJ+n(AchLyoDl!C<^4a})zl2-#^2QQ;ln%@HCzoP)pWPQB&eUO95x5ntm%h03 zp9vn{Gusx7(5(Sns>71=&e9Hx*Mu=_b-#K4(61P-QHP^{V__XrzrjT;XWMX*wHAir z8viZ$_Wy_dY%vfa&5uhMoLy8-I(~#f?T?Vsn&G@#L{GBh2|}I~cJA5}xQHnh7PvgC z5Efjj5*DOb-ZKkTtF8P2SR~G?RzVTn4l(Z%m3)e!^r@_Za`Q!5@mYl`>sL4BtHFc@ zDg+gPia{lyQjiZ+0jdO5f&8FqNCNdJL!dTLJ17i_fI7OZ8BV|WcnfZ;SUpOR*RoO$2a?Pdz#;$Q7M}yJl&RAj4f+ zt_D?s{Qo~y`N$?F`73bZwx!kTtm$Z?9A{QxzYL`x z^jV2SB4e3t)Vaj&_q;4=lO#p7EpYu-603VS*pN$>+e1l z-9In?@AE|_*v;P>4h1ze1TV|irybFXFM>VO3+aVv#jw5{Y@beLdhA6f;8=XIk|DXs z_cQno_iD@5CY#htJoQ~Jb}Gjbh2mO8IhOZ~%zXZsPoF5p#f#NriQ+)W0aOC)m4Y<4 zv@r8{_OV1yPUET)oK~tH>)L$I1l$i3taoRSB(LDl^Cq|!LERxt@1ttW%{Y%?@nqEMm@)D8-RBA^b?ac7jdk76@&#EH0yKues* zvxSPksUhS&Y|Gh7#}mcQOsvbq^-Jl;8_Ls_{Do4;Kjc4#5&hm&gK0fN-Fu#;Ak&y{ zTf7TsE0W@GnOQF`F1{;0?E9^l-0lZ&p}h;yb3kIb?^D&@G6ddqYT*Qn>~)((r{}@i zsw)>vK$_G@kJTU$K>cq{|L5LnwCW=V|B~7{UidRFTOwPD)=hdn++M3(TrOwcpUpI)a>;VhzKd^1}4Y!(?M$SVXNQ;RI!Z93U$Q z;m!vreBhad)Q{fvV~yp!xp1%LyqA z-mSkGDK}iv!~Pbk=#9ZkM)&r{a;rsqu&c=*4aNnfaU|2nlcCF=9qVmW z7I3Pm3fKPwQ@}}qMbekm&TX&=`iiQZtZKz|F+JvgO!|57t@W^8)rOJXwT>%#Z;C~q z1I!Xv6zyJIY*XHws)pF2RENvn1CBb{Oa`e)`e@rEek|k`!ISew2l8&#_{8LqRq~f3 z>!>{?YBF?**FjNTa%|`4UTln=W3p3(E`_;{4+_ov&9=~ViHc{^1<01{_ zz<<~{aeLKYAC!6Ze41^#Px&Q_+$L6bw4au&)Fh@tm1b%)jpC)dCF5uwIGBIqBcF#l?Gic*I6R)Az2`_-;EGirm z&B{UzS#bJQ|KYPpeDit=bt67RhSRd*j5=D?`zC(cW3n50TcBN46Z=Q`HEUZtW0ghp#*hl|eJh#N6O^+J&}=^N9u<9wpo zH#!wK=JFNUD4Y2lw8?iqA&!TU12q;HNig3?!cwu=g;y0lR`M1m5Ea&F*@K4#;E>`_4o2>J0aH=)cEI*$-Wz<_m`Ylm}Q5hE6 zYa|;VOhJnt1|rwifMEPNk!(cuMsXFDQSr}wW}t9o+Vo!Iw^K<#cui8Ht$tBTsnltj zHZ~a}Ul$H(LbRFl|4f12^9Lg27gLRib+w5!eyUi{7W`dVzTlB0s&u|G%O7DzY7=}d zVq9RC!FK4ev%U9;M(F{nUWRNWc_uI9ZPsJXko z*5Jc!`XD7563J)Cm|x`=e5CQd^J)HT07^(EaW+s(6~bB(`ubeD?4XX?Lluc&HXpNw zk4T=E-CmVsG*;ZN{KQqs?B6alFAwjd%5TWg_Cj-+O{g^- zqsdLi1h2l65Y>_x^}i`Cs4td|Syz`izyQd-JCQi4chB9a>P|y0{*J_ZYJ}cL@^N?p zQE!SQ&z2Sy#kYUvys2o~+IwJNV=zFUf0|4aQ@N+lFnS}wfmVJUG|NL>f01u--lkcw zU^&(a-9#lk{Mp4dRy=-V5qze8H@*S@)pKwtND(tRmocF#H{)#@jLTNfS2Hf~tuhwHShg;p z(lzVOn^=gW$sG5mSLT?15?&6ZBmL;;HxM9V8vU_!+i+Ul(|C6_+NZrJ_2`u5&$pT` zGd1>{5oDy2aG9-76~29$tz+uj5lX-RGLyrXnTEwc?zxTzZrlwxr&M*vWoAaexiJ5- zRJXk7GIRg&uVeSHY35d&ZHt)rSLx)qS@68*efi4O2BN_CNW1pc)!=!)jVC#vh6>1S zGJ5Ob$|O^O7aDj(>hj9yWRREnAWv-;@n|R8MUo-i;@W*r{m2{s5wP?h>xB(ObZht0|E;QI=K$prUk3-qxZ?kL1rs^|0?CV;lf)EM< z`SWsx)h3I3dbJ@O9i&L&VU!`8%zGSi8@vV{fJ^}$O*;<14-^J%2O)!jTn?E+Ot;`4 zJd(RK(<3QcGPUAaT%!cnh@iX$Wq)s`nCUE@jwCi>FN#(TptfN8^?(UwGL?^1pI&T6bupDseCAhSR;RubHkQbWjv)%QbBUUo*Hmfa#_o1Gn!0}CO^LScStB{acS>`? zHPG2|!8J>Rs8#LCxS@@xXA^nS&ys-UJw7Z4n~(6(KmLy?Q-Y za1HQ@q_)g8{*Mz@_^Nbpr|cqU~Q_@(Cyca`z#;n;}*cNll0;%=0WC;bb$IF@;>1{C<; zlm<2_A18_@zaef8?vO`p zyfO6mQ;9=7^4UO%dcD_nUioWnV&gOI~Ip z^a1Sy96>D^*^pSzqgruYof&TnfJs&#>;m${_e*Y-Z_dN=u@w?N)%&FehiTo%iCe{| z1Q^eJ*GnaN&wI-!I^jX^!9>&0_H`8#NR&OBTBGhuSaGE!d=U<@{`J@ofNDVx`(LEY zhwNX3Sa}ne{2PKKpL3FY(g}4K_KP>jA^H~0>F(X>gBk8kERU0GJrBF9srYsu!8Y^C z;Gf~(`&myD`0g&mYQlSlorZE@e?C6hrNZ&A0x=(K8;IqfqLGKCgW`Kyn3;@ek%j_t z@c>hfu|28Ewh5tcmR$olw@#B_SP<)P@xL)q`GA&#*QADJOGp1s2v)I{_lJ;Pj=#*P z;~GR2y3~CF7kmc)AArCKYnubHf;PKSQv)WZd@B};_eywem5CNdnXeMNKM1o%yoh>K z+q=wM7p)hsUe$OCIH7RM}6KUSGt2rQ<`Vm3YMQNHZ?L`pW^a?|#? zKf2V`nFq;}?B2l%4^!|u`F7}1NA|m~OBdGd%*U7e{Ojm|^0%**^t&o1zAHF59^Sy^ z$@t?G5lj`g-G=Idd`=wq?^bm^7SOy|s^0Z$>8JE}y<*~*0xho5_9Xy~_QyRZ582cM@no^lFlqbE#oo0{*(uC&q7m-eHv3@_)qcZUIh#+TaAIZrhg8LDE0RC$T#%X%Q6ge6t8+!FsRM-^13;C)pn&o}(A=y{Gd46mOhsOO0eh!*95Jrns6 z>Rn_7oHr6@xS#~0ZhohPQ}PQ&F`|X?Z=s&k#fw0ur(R(Dw$ex`d0toFyLtg`qNVxw zihmq>o40cAe_fd~iItyk>+l-UOWk{bq#RXRj2RkmoPG*z-ox7|k+F2a6%6Pke^RZ42BU9SgI$=m=#; z+e=>YQ1UoraFW`c*)&QIZRTkM1#l5hplgeAh!tlc{KtNN?iMLCT)>eg2CSP87aoka zV-7cz$iBmMBUdj3)Pr$P_zgB*LSuWWuL1(CTo}b#3RL2Ee8oDz+z?w*@xQl1;h9e% z0;JX*s*N*_lnZoZvT%4GjP|XDARd|2tPO{lh`MrQ(&I^1Iwz}(DD%H5Lhg4)X3XW) zcoZk{08d`Z;H@n|`!WD5>vBTdOSSj1J>O~6T8$H2vLTGVAeC1=Icib&$1Um`5Z}IK z6y$wR59<r`@F@{y$!qBSX?!B7{g7sSffTPxc7mNrfl?FaIf&{ zC{Tn)GnN2Fcu83Df3RZPn~@Y+2h>i zZ;X~iyAfT96w`6jwFl#oeRvZm6BT>nu92(J14khJop_1$#%OMTng;UC?U$W%`!@|L z2jiWbc%7U7Ec? z>-b+b*W#l4N3NsV#}zf~Jh1TqX1{>$HEHM7MYIR(d+Ej^adfJ1rcWQ7N>)F(K3P3~ z{Wz>iJdKm2^hB6=y3A0(Cep51GMeI?|54-68`*{#Id^*gP-m46O$l0KDSAN{5G;$B z+G@=GlIFS}H}q^W^mTa$(tO2>SoHb;beYg`aKSX`T=gHg>Thgh+6R;UZ&2<5>HIV% zl@ht4ua(+~Q!YwnqrVnURl8~YJsr++hv4N|6+Y?Myf#)HC^$oZ2To@d*?C9GkEaOUW2KP@l@nKx#Z>8p!y=qYpfH|0>2WK zDav5U?vcIBw>QXRnPTc->*X7~4Ybedq48U^bzfe+Fno*#Qr*k0bZ(VB;BaSFp4o~A z@erUbWJKkJ9u*n{_xPMGt?o~-B#h)xds+E=sQvNMzDxEGP#Fd30M&jU<%gh;Kz{&@ zfimm=N^K^WT0Ky!Suwt=Zr;iKy4=Qk-(Ve3&Uw(S_8KYCT?SmbVw?!Xlik77(jTU5 zzM#?l7!56!%Q{T63rwoc&PacSMUJ~?Xj?iX9z%{1IM>wX#Uz>%6kQG zRuy;i#FeWR{D!Q83cgZOJN%1YsF6>w67r1{?!Nq z0iUib#%Moc;sY-seX&&=#GISQgb^QktZr4TFuR>f;K-Sy9B06@crsrpHg8o$9?cTj8gHW{I_VLoic zUc}qAfUNE5@l8!QlfA&C<)o zsm5Klq=2dgobZ!Z3&?*!`U#E|cHPJ0*qaL|gD;>g5HM^@x^G9D7j4iWWpVRuf=`=o z%SM|CZ47PH(Vdx|PlpkuWQInk%w3ZP^mx%`*Ij?g$aFPHy6f$XJ}VWjrtuqtFS`CP z#j8fF+bL8fT{HpE%YGWiA;YOXb6t~k+WU4!cnjZ~rkI!v5z-yx()72=VU)y+Lk}EBAhN^|O^WDqoEfDm3jHl(pQe z{p!9rBLu!n&B0-fShJ!3+P(jCxT;l{b`JdeYI4?BnG1K`1BUJA|IWAhpFrice-G~# zD=z1-=>=l<^a8s$y#NWVH0EeFCQ*2rjIjk`Prq&c2V^#;jD-O5>II`DLImkkf0xkz zefc&vZ1M$8CQg49+NIF5jfjZVuKWYCncXcsl zYmeExz2b@oE)-_c%nt>DhxF3L0(1E*h&0;bWXj~f^CjofeLx)5)&7}}{eUcRm)XcB zL781PNFtiqgeXR;L)a)P>JUhRl~*^oDk{~D(n>4p@R0;ll5P^BXo=Y$)2vZTTa}0dx`C@fWBo z9T*S4)1Ea|!Q}U}(tTOhtOF8QnFpfztkY_5t4u3fhyHDWy<&Z3#>(Uc3{jqz-uiT< zusfUB0DS+xuHe&o`WT*p(tmpXOVd{P?YG4mZl>W>uI+{E5mRw}gtSjEJX{<4JxIiQ z9Mv~KJg)w}&Q604cAJfgA?_{m372;$Z|2!qXP$jC+B>Ygso0MkM627d_pI_}iC{d3 zy;SUVp+5DW-e2(`AM42A{62+!9fxYbV~0N?`+bNIMWHU6Pl046@mgwuz{T6&gy{=h zef*sqHOF3M4bT{a5Hf}96KMDP_% zT%=ksr28G-0%PZ>stD0fopD#xlj&P^bi%4XC8}1Hlv5LRj_Lws|5gv{evuj+_QJto zD&*m!9)E)p%>EgdV;i@Yn3EaEf^Yj8kBQ_Yx;S; z6puX_`4pXIRxr?I83DNr7TdlQf@$9Kpgrz9FWeL>MX$Mz(do{=Q}9-IWX(_#exF?+ zPc5N7E~vaQ!9(D!u}}f0+3;YP{5lrW7|8{L+#)OK0I_&ZL8PC%f@j;S#H0Z(d#tER zq``UF9Ym0=VLldK7_R%-2N1>Cu z7W_d2w3kzcFg3riT^-tf>UxkgLU!2t-`TkxCEW|4%atRyCrDY`>J3@=4!GX*?PcDf zCxpxp^3oN{NCZ=Gm#IR~=Q+cDdVGqJEtwzru^Nv4;Y|PeYafq) zG~4l1mL)7$Gls?&xpi(PCFh$odak;)Y-e2OrX)8h?Y~`qYA(}4b!M71mms?FG;(6S z>aeJL*Ux*7tsE@OB3n5|hJ>0Z^r%H`GFa_K!EpKVwX#6 zw_c<|*SPrbD$$eCG@VALON^G->?+USChNVIRv7J+FN|O^$fsfR>I$X3KoJXlSQ)O? zWNcqvF<-76(prqmL;7DQOXT)A@)kd_MTUt`_V~kTqdxDp_~IF{tQ~$u?G;^AaqYA4Qi(x<8XNh#E6ZV; zE!E%~+mn`m(W>=h1tVGSy$=Dj0E*3goZ9R-r8RfLh0y7sNze^vQD+HNRnf>Mzehe0 zACeERlDEh8TdONHT&2>}>=Lxf+p>k%x;n}~hCK9+avd}JIqJF8zPq!Kjd^||TennQ z4Pz%&V*vnYA z`i*oyv<&kfibfqO9cTdRBZvPigX!@Vi5q>zT@fykU6lmFU>F>>bzaBy@RVnv%prBu z*cqREC)AFgbO4>RKl_SD-4!_*??K%U3`FXO^dW2v1D&sUWqs%9v(;~Xhulp;>$l}T zG_zw`U>B5DE~WipK3Iy@t}u31Jp_kps{OOr#e+)bSu;F;{+mjt{qxp_%7@tAQuBFR z!u;wgc|VvX{P|!MBGd3n1s-dKP`XM|#pFVg&EypATRQplfay#0{2?lV{)!Z*QS?x+x`2i z*030iC}rCwI-q>{6zBv#0>Z!t+W$XCtR3fg2S4sWeKNJL`77b?*b8ItP1OCU-$)&3 zdG>Ye3}WYaYJR$8RNO#A0_n&Ej^VEanv?US%D!H02j1i7+YwH%KVJG@uJrvdRKa*y zSYPd!`cTcp>)U-d)&4Z&soC5rYw*Cr2Zx07iiU)o8GT4_nSKol3X8@JT32o zd7VZCl*S4E;8v>q-23JYXRX()ygr5c@1fyq1htp~ zX>PL|43T~To7O4apC~LEyz%VmL+?`VoLKN`I*ncoHeToh4eV~77)iWdWfrT!;j37kt?}i zmD|4)*2h`m3U9a~9PJ`5<53*>Fis%mALK@^r-sYCY;U}EGj*(n3-q<=LT(M;Gs}%! zoFBF?ZP;AA{jZaO%&V~$+Z*?Q8;hg`xtyaQ7oOwcXa^nGI{aU^34HYwq3SnnaN|^_ z$(l!qna>NO z7xS|u@BG}#iTzkjf>s}HWqnWp)~9V|7+%dr!9}aatPuy79vYYvRZ?Yj=cJXZScv~P zY30(Do?FGX>m_lzSj3i0aPz)^R?{nW`!^XVPbrU>KTYdfpIEHGrfTHe;-)I{&r{dez zN}u~`Ta8b`;3BOB=8dga0`tb!HSjxa^^xD_US;$9Wbgm|bjANw7yn;%(f?J;Pzj`M zw9ywcH?{h5xM024o|VUCw8JvhlEc81hQCe7eMh4Yvtjtq@R% zLak5!?}DIrRqGGN-|zna^?dz**W>weLCAZ4D}FJF4fkjB#rS*?n=g#{;?wzJbU|%U z8t(MT|Gd7_m%hEz$8|iC+UcVXUwMHB^KW0V6zD6a{$etUA%{_^@9QfI@r4T10ChkR zs0HeQ20#Z|fL5Rl2m$Rtht?l=bi=v}IK!~;0*4&yMC-aU=3ac?2Sk8=U;r4DNj*I2 z2<7e6pP6*%EwOxmfn9E!#FHKXYX~jOtfcZ+;AeQKYTd#otL!x^uigANK7V>?nRXMP5oT)Rv`l~Z|v3R%$ zK6~Ejp&N3qTT8*lxH2s_#r5C0`0!v>Px zf`^%C-6tfx?2^EqW|+D0Wqf*8WqppDi?DdTx8_#+`jYd=xr)uP<$`k+Yy;_Ixxe9z zpDL;B)Xteqf{hIWqmNb6{t1fNS&3+`XM+)>I7b{ zq^ciNA<@(YG_r_1SBn*up&6LZj>9xnGk9@&2nNb3zq{$gjHHgh%3pJv)(e5FulA{Q zn)17C5!UFfKQY(xFts1UEDgUbKKB#(W^Ul(1ZM`DQ3(ucHCG{1nf%6>Qq;}EEz<%` zD<_9L%9s#LRO}N3;|ZVCyak@FFqvIZ!BJ+TsB!Kb@(i%QPHn|HO4`$bo=6$L(ztRn zI~B**>~Y+s#x2@%^5%Sk=Ssv)KN(6iO5=^ zkTUKqBncvT#+|5nq=S3B<55xO*rrZNTYPUayeX{bjTF4Faxr24a9dgKcfYBDNCMx4 z*c<=u!IaJE`Or`oKtmn25~X_o^WI#aHSi36IiibZdu9D%w@(3u1RM-)&z0}P=Y^Ah zr2Za_lpXPs;9WfNmyT^tRqZZW8INM=f6e?x4L(Vk-&l{0%2hpYed`&wRUs};$ z&pyd>YH=QWg-tTA1$zA(qGqh(3hq%?uocS6OqQ;uZIf3F2HO)F~91e9BJw9=z4JJdfKME#Njy${^?|;F!5C z-$gqQEt2xt%WhI@NP@pU^-JD6$LA{3JRH|g3-|XSUs;%2k1_P?bH1NpG3{29YBv!x zFJZQ;s9)T25~jS`%Ma+iq;nY`H+bEJq(1MyKB-c)^TWNI$ieF>J$QI=*7p#hr7QDk z#nd_Q#%SX(@U=}oB8-}mP69az6kHv%y(7-1!X%UBx~#1jVz|<; z(v$QilaJJ(7F#i5Qv7W(6(YnIXcGRbNQSbtWjLn`}v%hbrR!> zG@egcuff8Z_452(e2Bf@&hH(Z-+K#td*}ClIluQ;>^*`#3i@b>bN_Me0s;O=QRh2kMFKCrNbrZb!^?Vc%R(q@e-00&QY`)a+}w_QvAiCW0qeC;p|}@p ze90sDvZnAkugFgIxD`#_Io+tl^8}B3ZP{3c(3*V1WdbEz#q>+9;)>SKtl|RgfAJrm zbP;m+44lN=kn_R0nIy^5Tg?xZ@P*avZJ8K>FGq7GONHZ?yYIVxR&*ad7wCPq5Tlmr z-x=fSFfvnRz#K@<7u?mK<%`u{!FH`G^g0Hra0~Uf?0yV?(hF{q5zj3TmX8&~vATmD z%)W!qT}O#J3U^WAe_6QY83j3WlrNRdPfnEBw4!Uzp1x_|E*e_tQa&glx0^4$S#p-1 zp}P0U?~;?0k{9`4#JlR+v-(xm7L%8PALM>VGfnJFd#PO=y^$+ya0}fX_v$>`8Z!m| zK9O55PTphxwsIq~f7&;8+&iCgYC*psEpFqhlhm-Ca4%{*$-7m_x||!6;yXl95@I)oGQcf$HsZZ;5A(v!QrzV`LY)0pMCb_ zxW|FilGmI)-SVYf%d3~VTFuhSt!6sBmj;w-r@AvPclWh#Np1{BlQ-|J;@n@9RB`r; zk)!v&-Eoz66BUGFvrYkwtMmAt?3&KAkpz;Tlcy~^$hW#@VYQ7(D|rw*5# zJzduc`U{L%b^ov@72IV1En4!JFMr(sVD<@%|G{((N@|Uhk~FLwd{nxW zh94>8!C!72UaoD65!>yoW>VKL(oOys*w~;VCvk1RL(}mi#YKMjwfDW|EsldIYhjE0 z6E6IWOFuRHn#u*Y@zV>GUA|Md_TAr=fjXg>542@H196A=gqt1ym4 z5Ce;C;}_K+Xk39<=QNkn-?P7nx=+O`KXUuGH;|+^P*6r*)$aa@7S79c&){?o#O2rV zgi|u@7O^SYVm57i%&cuS3W-M`fFqf0V9SbJoYFLY6}xNd z;zoiyiiJ*hwLZFPM=V+C-r`jEqZRjSPb@KJtkgA>^S~Q3R`NsZ05|jOJEhnh{Uwo~;dqFVVD9Yi+soBTMera%O^Wp#DJV%PyTBI8}xbT;Syu(^@ zm}4y@MyRuSEs|cxYG~t)P_dM@WeRy4{q%(x`ujwE6aGdVO^0W~My|%@YKb*$Q$wdF zrUS@M929BzzMOOBp{*1YrK#yUQWvY4Ry%pq&LlZddw@b956B06K<9!+sKmf_786^! zg&PmuPi@zUHAU4f{Bb1$IID-@2{J zxaw~55AgHWo;=%8_MDH-lMgjWW=JSgSHOq9xvE$!fy$V;!wodBLTDiIaKrqZphhuP zwF>Uox&Di&eSuiOOPNqF2a2p63qW#L!f(19%9GOWFWnR@;cqvG`X{XZ5?<(i&5>Qg zGyRaTsxoRR;WJtf3(ITGhXoO&9NS8dQ;YPgR+Fdqu3TuA44soK91Uix*xSU@_OAj ztNt@K7kLsSPSc{c2#wllUe1Zc(UTJ$L3Dg+$d&> z?vG8GqJ7WsxrdsK9K3ILXNtF2p!v?p6iai!5F?9T!5?8k$`rk3e@mvg1V56@nPN_H zEK_84C4x}NS^J4SRKH-JTYW+Gs~9Pz*&fX1z7+S1CP$t8&;NGL$xTK{3XSKv)kxxU zR+2ES4;`EEMcRH&p(M7xY6%So_kc`9&_FxGdWa%H$vyoIEc)A=br9~Ib$rXhWM>`C zEYI4If0@~SNv8X}b&koGT;Zto=#vxHqsBP~sbJhA<@b4{nqiOR z2Z9lgR3GuU^+-u7vngF0VG%FXhdkc4$jNq(dKf>g{U^11SZ~{B6mAki9%c-9gbt5* z$m4b%rD_$T>*TaYTA(d*j~gW+8ut9=Z~vJ)?IX;y!NZD}sJB^(l?0hA*WQ*NP-TxNbvc;+2 zk|;})`N%o91qBx#+`-JwR}ZS;F+K$RGCYu%md|exJvbJV z@Nc=1IN6rTQwCdh)ya5QE>c*qWt7X8Pomk!3wY7F%sr_2|KNUprldV*O3y=AF*u9D zXK47FdYPBfP&c4a7N9K^gjVcxi=y=pjPK|04bH|d|6X9c^eqmV*MofpKo92rw}3{( z0W$BN5KzR0id^@YFuKnj#jgBM!6u_&KM{KOxjz;H-J-&~KNLVvtg-`ia0}D+$Nx}# zw*F~p^%$XldDkoVTKrnOvTL+|F%LHH%%v9JhJ zgf+;o$OJRYO?>4=_LKFz8&qICc_7c@4tNoK4qbJ8S}ng&49xFk*=o_Yj|jDB+d7mh zf+#F-mc-^=C>AWat(ISM3$Uq{&nmCwtx{<%FI@+e09OM(U@Z<%aX=x?mgT@v?xx~e z-u)oHbLQ3Z>5TvvdX*}^;{1FyL1k%WiKP-kKiy0&yoVodkzue4Wb>!BfRLMmiD4|L z>TyxkKUZ>?V{(fS2uQLgM^X##kxFbiQUS}6@+xwq+`JsA%9pdSqVgVI$&qT6oJDm? zPE#bV;6L)2Gv~;NtjEL9e0C{%X3pNj*y;v)oH=Z`G)Itg?(D^peXJmdMgyXflTo1L zZ2FXk708*BQRvK(0@fV&`#d&k(7x~DRdD7Q0jNaZ!Z9_d2lzruD!vX*E_FxvnWaB; z|2`aB5A*`_uMjjK_?hzT>bE=zsGjEs@=*ORADRE~IbQ2oyDxr_ zmvcmsbMNQj8PTt7g}bupI^41^9svpW9|4>%` zP;SiQ%&nKQ^?6*n*7=S)iiWFOO09ygeC^rO{r9*Pd2o~1caNm1XeqQ(fg^|XrLfK{ zm9&B!sS@yOc$#RqU}26qKgZsmn^PUe3cX8n=7bJoqZ{a{CxsyH<($f7t+8H&zzpNl zq0F3|K1Ip#zCS)UvXnd*rH`~OW#DV(9CQ#aHRqvGdX3gZhSXo5!+Ps;%0sO&bN9?$ z>EW5X+`Yj-&hh~*NMbDodb^=#4F_`gnY&i^8y$fh_a8YF5#(jNs$aoA|I-N6rV)nC z%lqZ|14eM+tNQ&Nvv;wLJxeIu;t{^XtrQhLE)>prN!>c~(<5E%Kpfdh<9{kTTk({X z)G|blJn!-1vt6d_L=ns58ZKFdT+tnmvK#Aal*YeKLb{n%3GwSeNAM92G&5@D$Oq|C z33QW^(IAPf?{JBr1{eCJYduffx79DTpS6+LB_KDGTjZ@8Z`(yR7>q6v>0URd1s}<3XlsBFoQpv!3FG1-lyU)5Z)9hr$`8sfp2>!nw zXvb&uKm{NJ3O=&}BPn(|4AcNBz<@p*&JWZB6@U|%SpcFi0I^h9R@x~5sDKR^M;fy( zpdP3Ma)DC(e+|HK+H8}3$M7zA=M-oM;-3GeCx>@)rMtqj>eFt?TbpYA&##| zmorICr>4p7T_XKT6o0Pkzmv&!WGGTI--`EBkXCBifq=jf!IOS&b5NZ!<)AtCW)J!&S{X#kLPtJBrTg?=2^-o9z7!=Whr{ z`wI5fE#Y#1x=LvlY!|lDvmzL<{;aYM_Ew^bdaoM(qgJDE6=R3adHw1(`FuT%=q(=M149q-VRZtPAPxHcjSu0xm@hU18IepTq zRZ$gH*Ww(pxx}wCX2!|4xM}W-$w#&_MPKLu>h}sQDmCndVf$C4ruo-4!9gpMxgv}l zO@QSq&WsU~+mUEd<(2Re zdI-8e-C(|IZsdVgq4?JDgOqPe4sc7h29SzAz_I^fXch1-SsOGogiWuwbXBWi!WYY@ zIhWGjJM;hxZN)v`9N=8x1N7`Fgoy??X-9zbZjC*KE$qpU8@+S5LlseJleL#f)&S>_ z0^DLfFrVperA));}1tq;E{9kKyoz?*Klywn5yHAxN*6T zQ+RfV<9?43Ozc1&iEg~b`34X{yxRgfU+xi_@LVB!+L&mU978Ols)JEJOPILqb$31f z!pSesjlSCPvx=205qw{D+W_anD882A&{^}VExQ^Fa^F>>W+;>`a{Tn;^hF7gcc zYMzN(^jyO%yA50L8C;UfV1YBaN%%}uvJDZnMRpm2wly|(RX95Nt8g^7A{@PmHjI^k zTv*k2#eMRwxE8qsfg-#74<&>f9)n`=zMZkPx9yB^rEvQGm-C_Be~ydF%W;wYDHzxy z$~|#T$;Q~{2;j+kMdkMcTQnwz;in~tR~@-DIV|S=jMKJI%ayD< zKUYCo9sh-tJ4=;vLNH#6SHRQCro0v9*e=6nSSvIw`uX{d#%M5oL1*qtqc&Rqjw>nR z&ti*fWT{J|>{Pv8roNL0)tBN{WNJx@Tv8+I(H}K~W;M@{e~0n-U@}JXyNjSE36E|g z>(Z5rg$RpC(;BE2$Sp*IcwfS=#K+g2NfzZ@Q9;>Zpf4GsoN6HOCOU<4@s*&5iEcjV zbFW3JX1In?Wx2cTHI34fN8aE(IW8%-us+V;9OczeM^4z!O`lskPz+A-ICwYgg}Gzz_`fla+)`wg+?zBG2WKm$%TZ?!L>2YU(|n+ zJKWv~p8G`OU#)@B-%-OaSow^`7CRbXTs*=>^jK8{Nx0;1hw{CMiktqhIurU-hZ0^X zIUTz=+aQT|H|s4Xm8!-jCcl$ibB7q))OH~p||z3(B!)`J|Cg% zu99m_?6S_EDAW|2y6`LH1*4B11NXpHpuDVt?L9MZuj{Sz^Znf|##M54Y~sqZr`19D zG8lH9o0~gb1!27ew8|JwGV{n=AXigP`Nud2>T+Vwi+VC9)x`xh(4E)Nrps`KlLbT~ zyspKBX%oWmvnN5+i|Fg@D%4;kLYS~y7Q_{KqP!j%agqHlTmCJeUoR!Nm zTaiZVsUb40#$OIodj2q3hbRrRH-rPd01lteLdA>}IR%I5@`<^*5)OZs@e9}zW*R70 z{mR+^<}78;fwQY9GGieT>xs_I42IhJbNU2}b~q(x!cT`6R)chGajoL{QsLM))|cHeYv*RWQT3in zX|7!FEoEz4??PM!4L(Z)r6d!zU9i3mg#7Bv|2UEZ#Ezi-~~>79X!Q*CY=^i zZ>8zwVsN~=5MB0-D`)Le!=$<}C?1f*QmKj6_A6d>XG{@}D^0OW@D5xB*N@uamuXyl z>@jAHm9k=m=cPp`1_&eYDg@qF5HvC-DW!+A*H&C8c2*@)(S|;t0jNZqP5}b|8uU)} zWZu<@^s&3-lkq_CWc&{8Wc*&`WW2^W8NVA&rT4It@$+!f9*(`*e`8u7ETdy8PdQ)w zs15H+QrfJAbGI+lPOIEMZip2&aGn?3Y^PDGvhWxjUmBN%$3FZKlIv-ou#Lm-J@D3} z;>NMxQe~bOw))KDMMrQ)qwne+2fz!mcbsc0J+t7=ow27l&X6N*v8Q<6IJgKS?8^t@ zjjSzUdX8IEgfX==Mq%Hjnz1wf?6R)gsOKw;d1IN_?WUtqGrl&l(pdf%ZimtK5RIQ; z#WPna;r(%XT`tP*`yXv*>`%eneZ-;=9Vc(m<_7iH9OipCEm*ICIO6@2-d1@+wP@`V z2(k4XRT*sh`Q>`iShJA|@~hJKf`T3}IBIOKU%A|-b{w~ho&{&D`=NC9d94Tb$pSVt=dmkZ4^ZKU5f5LDrMt ze+%4haR1mDt7)KGPK6=qt?>59p^bPzA!PYn1WWGCVHvSw`;w9j_j3K?BOqsSffIV! z+L(1R!S}5lG9wVlrWeP8KSSOV&yI9|i6Geuf6EyU$ZAururj{v=~=MP@M=sziya)9M^No z!ibrADw#5UnS3HXoXbpA?+6{7)GoHH`ylDVD}hwr}7eev+5bYOJqA@HywIE zVTwGB2^*aI%xhS~J9uk%GrvZ?kSqDOee=jSA$!*S(JZz(cC`NqRYnF9%_6f8LU+i~ zHGR}5uZ^Xl-7J0u_gYo3TO>X9*b2leb*>MskMf2Z=M1&(b~Os&u=0NSt#c)GMljxd zoeMpFjPpMpo0HcbBl*p)*Vt&oKzc;~$5F&5#<{0<#`Y0s4Di9w<1yD_5Nq*X-t~At zPnBiheLKY++%v&>n#i&UXn;&(%F2 z#0`pJWU9po{zq#6*gow!MB@Xv>K-q3Tn2oQm4$$1}Fud7d@$ zHkpnh1K)Cryc;KYXGK0+uQc;7%+*fY*^s!tA}Y{&PzJDk9zjSO*b8D4Rb0{pGEfqf-Xie}8_{2*bDfPC53V!`yUTUJ_)Oenbxw4;r< zf(kodM~F8`&s5&$Fihn=tqOF9!5$92L~k2nWNY0amusWSvwfp?jK^&e#jt8yd26tl zS5^KyINRdiZARuhXvauxY!GK?74#x>XNr6j$6mXQrA=Ghk+;Bd%o_1QCTYCCD9+(= zbUl**Ig$q{@&X{bnSR z*n(BB(IjszK?u;lm2NtQH(wh#lN385?}-XVz&K*)QC@2?<}$a&=2#;;Oox6$odJs6 zyl`11U-lLT&>j7MruO|by4YokOtQ6TgU;|jk$oVhfFpOS^ruRGEwPW{RlNVLcxpHt z9l4t8oD;FDjYhlaRQGdy6<-`_7OsC=$8I4mFZ|~|olD>Cx2J_sEiMma! zJ^yu=ycfR0nflH++3+p{U~XV(9p$9%Y!pY{ft~1Yg@&)*Rb-u=a{!A?`z@j z=P*iygBZ;oh$mq%edC-*AkFNO)r6Ou*(1ugtI+OUKWI8`Y>9J`2as>&)+n5>&v40* z1CIRsvS-e6@E&>-v^AsTOjFd($y%%TQL()Db?SUcw#r?Qd0%!W2b!5J|KXKNqtURM zwe@d(_g$O5^L@xZA59&{nq!wsy>B+Ibz*|CvAfc{OGNVBuJc9u#5_0olpZn3>tdZ2 z3&h`bG3NsL!e0!e1=nF%g?*@Zxl7)u_qvNCGiJ3kd+&sE!5Ldi@qxHyb7;cSs86)x ztY&qWF?YBH6U&YnGgTdT^T8RUu=YPQF=Jk}F}n27<7#Pnvr+r3D(LqarJK}AbQ;?b zbe5f7ub|yQ78SDFM^4e7W?&*w(BEcnUVjXaq)D^{;VU?YR0d9rYs#QiTxkr(E6?zv zW$hhn&YtdmW@(M#Y!RrrNY(V=yU!mwG=hRx*~dK+qw#uxmH z?WiP{S($`GDDa9~K=PYaFR>G&W~?X6T1M^rM$L#>^LC0py_qlU6mL>D$HY;y+5TZ> zUrQlwvA5^|uG20Wa0!ejg+*7SEi9@XkcPTMDqORL50&C=DV=$RYzG|Qc8S5ziPw>Z z;#lUTe3xiH(K#ut8#jBkq66b*U10Yaw#a=LH@H!=>!=R17^C+?6Ci6xv@%*GZ>wQu zIfFlSuu^_?S=8MoZg~UGbbGAFFW4&+?>bE5W=S14Q~N<0H(#r_#$FjWuYDtK4vw3d zqxBn8tLVp=r=E%){zAl|^Ihflt)c@zu~%S4-|eH3zg5>_1;YhH;+D+t&iEdSrCy{; zff_!->Q1(;KUBKvMEv1=a>FO#EK}R@UY}hBYLm&k31^txPT`x`trcR>-w@}t2jab} zr5_KFsEJ8EwsfuINsxbFyx?s6(wEidSN|3bE?#c^!hT1uP1!JZNA2faug$)p*T(+Z zYop2|)N3o3caL*QuPunz@+m-7+zp1ZuqCfm9P zZFZxf0>NcCSvfkfRSl&frg*)7XS`Sri0ax^yC*u#-acbbM1XM4QrpeNZ5Wq)<0^uU zVvwQwf~|r1rC*QDzPr|xerfQy5?w2dG$1o+b8uf7#3!w($Ho`F3*#U22ar+ZirWQt zry=+o7IX)zjj0O{#1jhI8MBxYL@=uIUs#Wn=mR zCQe&mQdd|JIt2y&oK!?t0jPuudE;?uUAD)M?uVIIomHYqG1ert@x|wxt{O+!?CRK?sz3 zpOJuiDLHayJ@7YAWJSotY_FzCbFM^$`jhz`AycTcF%s zul%zBEgsg5WWukx*7Jpef06QgyXZ^-iH;wO@hdVcxhdrMl$5P$2q%T^J4Lq|dQ2VP zWeg<;tuU#k8cpaQ(bfTK2H$cl{4N=j$>j!QCvDPf*Cvw}eq@*>z0|zKkW(%+?BmG- zqQ9_R?Zhi!?QU?g%)~{Ks-#d0rsjZAx%y`>MUEPx(UM3G8%Sjz*^56Ztl4oHj53Mj zuer#5klRy@3%>qXpTWz5qt4wt%@f@>V>_ zm*Ugmoo8LZ1*$k=M6zN$6K{axZ82e{tTmew z$;I?heEtyTw4bt;TS`;1)lW-P(kp7r#l|k)A=7-$%EISe#-}5qm`Ju;9d^Dp8C*`A z<+3=ZY_Qp+zXhJ=#FP--ZdheJd{6skwyo}NX85hyU!1Gw%iVbDa!1-08BZPS`T*yS zoT%p&h>7!ZPPk7@m-|G%s$zM=L@d(Q~sm#Tvwk?}!1Z~e?bSuw=1UHabDWSj`{I>XZXv8#$> zg9bOgYjYUw5>|(QVGi=)atPjouXB;MW8>>|EO(9(GIs?MW&eY?YpyQEw>!=&bt(LO z=xPcmd)?1nUY8PXRzQ()d2y^su1jIZ<{` zr)0l4?>Fh;O0y5r>kGjYA%Bk7`Sd;hu6b$42Yo@x!fu`Seh{b1ZT1u0N$j1O&k@s! zz=uhz|Gj9p@op4Hja$okxrxuj7~ZAxw;S(aY4dL0zvV_=UALMu_WC~tdAQr!JrZ|2 z{nlGxJG5`<8?*1Okf=Tbno!PXQ7;ESUC-s|{%LE5-jKre{#?LqwWP2=)TabBh&jds z@i3_`z;#Qxf+7~`vn=8IEcUeN6h9OWSR=Mw?iRH6uOLd6dHb^L1%9dQfjCDGs;Nuz z+f#gvx~_MmP-}{*aF4g7b25~2liG3d@}l5R)E45O#^XSnaT= zzT(yd*KS*((^;huzd|k#(WlVh?m%$T_Emgl1!KOWAW{yNr_X+^X_u z&tZ$*K5EYL^`~IO>rY9d;hRKgb_y%)hG&7dDJIrlw+g9_1}$Y%mty=IPm%914m-$a zBDEO_6M`xhhLOs6jY;YnOo>>vwpeKe-YK;ymWf0PS_><(Z|?zn@R)5q`ki*{{RMrL zG@inaMHaD-##1D6P#Nd%AO9XS5dF3g#y>Q&hDzR_QUhLLIG%NKz=@u6^)CUiG75bFwIWo1Pz5Jn0Ly_=$CBgD%3?>WPLMEZO2{@n-SX_&~;^j60&71EEjTzH0iT124x zp`++^Sw%6P74?5lTI&`*vKF_!HgX%y)Y!lAm=avs7|F(Ql3#xvd@{#4xgfo)=oow$ zXH(eP4hseB39;-zoM-uQ0dkUvnP?xBE$tSS!#fgAfw&Y5O>jr`39*k~n%UZt&Ms{K zn=A569(1)1mhCjrP;ELZ;nROlyR)OonOAd8QxKX7f~{#fWj+#Y(&6}{)1*d_9Zkz} zv12_U=~Vrf4r_;i+LZCF91~6tPzndpvR;8#!}Fch2-uHkw(laY%dxbt_e*GOKkbuO6bo3qqVy3$ms1 zvCqd}pbFZIL%vykw*D{$KA_frQR%mE_;8C_K4KwEH1g%jy7B{oTFSdd7(GF)e}Vz+ zPm}1ivC4WiwY$X_Qnr|l?M52yOKi6P?a+p@8)LTc_2HkrWQjmwAG$GS)vllI^D5WJ z#;X)I8n3xucDZLewJ95;zpg4%BF#o#nf*7mHz_wsmg0fss#T`=>|4}% zgM#SH+GWW7&efkjLln8wutaK&m*i0xN~!}7?cI&wt~BB>ncc0Lm1;vSCEH@Vx$A2G zo^jFNJl>K-rQR~D+_WdR?rWhf$;AZ6GOjJ@Jl2+Ee>?YE`~D7&t4}FXM#ty$U&*>b zrD6@)>40bj8L~Kv zQ1Afqyz>6$if@B4fzBHf^@t5hCvISQFc^m18?5xpjmyrC#2>T82V)CECqFST3TNfw*SVVnd zvg;ZewWyXLxMzmhPpumj*LxEYAG03XdC+xyB8V&Eln)PG$Blm9t(?GI`r%eyIkB~N zjwbJ8wH{I;r^ey%L4I75KioVwV^5B ztOkKXf>jr?oH~vZv2md;F#Aw#@)cFlFB*i5|1=0$pEU?_me?S$@(*#(*sy07WTZKH zx(OzoNf}HeRE5DFyN4)U3RO zV3%NEn}-9y3fnV4o!8o?g{&V>3zW5CTCh^*ch(jm{m96TT#K-TT7;}8TLhbQMT?NJ zvjsf!sq+cV+k_$^*l5@+ULF0@f~8l?@2_hrOQYXUnwcfIZ_*aJK4z)^Iv5UnEy%e% z#qG65+R(vwO};YwrPnN%$`-FRR0=uj&|Y*r{PD(NG4WQ$6>;Fg=(g@}S448iXucFHi%a!5Tl@F`j;HPccpZ#JN&%d~K% zyni=3Z_{|D#ARCCtTEG)=8Z_Bt#VVMe z(~;cT2n!3F!h)O{4GWvzjmyRbnU*Ff2eArBMS4Od)p)X^bJZTv!2i{!p=*|*Yc`^5 zUNGM^p=t165ND0D=GqTy)QVz+E(EX;|#>Z7*c{>*(zkj z@ve^wzNxiv?|2uKF4=iQ6_L%-L%;L#Gc97`KQFHpPQ8)t2ZrL`9xQjHqZRBw%TU48|*}sR$ar;M97GfBrS@XCpGHSM0K@huS)SS!@q}oq0J^j;Rb5U@+F+5!l@qqmM zo$q+)4!n&2otx8%{j*YV5OiEq&FM#H%nIFQv|$;gAD#SmRgAb9vx}H7Z6&Yc%Odi} za40)^_&5BFxse*S{Lgb;6i4JLino|vk=11g~`Xvda}K0>MIWx zJZ6QB*(&qlne=_5Kzdjb!%YK6WG+A>J)| zahutce$exCuvH^Vp-btd)tIcS1Sp=)Jb808nVOB{U{f%el>8-CFaqc`jnI!r8q6yr zTklRJZH}gf!qHcIH}eG*bod_m*DG5W+aCx1lxItSzhF71{>5WR1)M2lUP`4QgvdOc zRYt?Pp}Z{5%hnZx$d!c+E8?OCcfr~8d;&Uc=pu3-UFw72Iu5n1s-t6P-2 z_qhvM=s6ny?Uv;xdYUiL2eaI^uyHzM!s4(3taRG!Md?h;qnbxqAQ%VFR=o28Z|*Y( z*oD+}`xYCFG2DgvYXhJ01C>7WejO~e! z{^&sb0b}kngwq&%ArI~{!qI~W+Tgsuo@iM`K}&j4-VQC6q=a3$%k{r0JE9!2IqH|V zVNE`#+T`YVJBXNmRN5}@j#vC#ey%{(UB8~_zS$qV-4JP0*MMV(o!UF!fY&2}zI*4ml`|H+wlNPc^Wq#I_s-BuirFSO=j@T3X7>*ZN zYT-MLMz~Q^c5Z!tWS@OQ%PlliAfFLN+{lXUdLmx(qKlNeOz8`UgBt!plSvwGbl+cR zQUvu;zBhx{9;IQftQjmWow~ux3PluEP^*nF$+H)cOKyoFjdp7m^B0`HgZbh0&}ef> z9YE=LhWfBbA1UNXlP5DMeB6F?*vU<1tcLBkA`>BVnPPhu%{;08M>%`Cm$!=!7oO*8 zc+mMbkYj0n_x^a#kL`;hce{&Yy{xR+Aa+;o_o@ljn@pI9$lm0uSP!*9aEJeo-SXae z<}C-}53;$>W-p+ci=@WFT=uMSGE7?ZNN`7#Kl;m=ckDZu!2TaiUjx^~egFTthlBtT zF9b@|s7HuOHR=VhQbj!;+R=`-5ok+W)CiwHWINlm#Iozr`7K)2$}X)YIQto+ZdY50)MgMN3TzQ5_2o-r zi)ln}iXA>F)Kis^YL9t#K-?Fi(B4|4BcoKgA=~D(F6^pJlUrC;y^eHOUoz!hE{7A` z_QTXu2Re}2S5!D-y>Riw`a zP#K8ZS@Gf}l~0;#X1LmVnmlH+3*(0v#T^tI!-c|;Wuoxnvh%bcRcxPFE->~bo?s)3 zgu86-54Ym5ChqvLy8^r$qXr(-O)V$SHRur>ONF6S-_ zFTO1VUwj*m5NA(y{?K$}Y!lP}a}hxnI)#-*I+>7prE&#KFQ^0IadsRK-7osSBU~P~ z*y5EAx1oo_yqLb4ufD{L_IkwnaIU>U4L;9KF3od=9={n~ApeP_Ps?{~pD%((MI2g$ zn$!4+rE@IwgUHD;@t^iNnQ$5-OfFqPiRlK8VwrRUTe#YmM58(?h?QB4-pc3mPK)Q& z>t`u@g&_01J5IJYs^z2EOm<^td1zC!X#Q0{%uBTJU2`7IimBOljw)TCR>r@ z-;M{YiZQ)ju!Kc`puIczV(Exhrc5s|y`1%`{fOrI8;zYbIh2#8BXC2UZa@@)kc-5} zGbF`1`edpS%A#Bp`KFH;1mO#-aRf-(vAUOvsVtJC2#F6VPZmKYI zbCmd^4s7pj?$|`JV>wN%67D7@QD}c0fsUY!_nKf6atA}7R^BQbys&IhO^6>YG>ax? z=76wsI>HpLU|~2Lqc*EkJUhlOcyx?E?q7yMCS#Df#`v{9d5n*z4pHbE<5RYd@i05& zUpT52Btt?z#=~a~G|achVAmB+;>oCrjL{yMKgM&56UO*tTtGrqx?1(#)rIrl&3=8Y#rrgMr2jHPDg1{ zYP~w3Bf-A%71R}v;a~Ejqx^*-oZeern z9OYAGADWETkl{C`IO}(l%g1@v@(=OII`!M8P792KNUV^icvF$VU^?P^(!tSno*lQ_ z%Y)bXyz z6IO)uRg_Ebpk8~@KYQ%~g8YZhz0HUX=aQDP0lVp3H@x4;vX_~-$N$GYQ`NunHgB|ESm`Nm@v$zrU`kz%zTKGR9T-7X%t3x8lx65+{8+1XEqrG zFZ2?1$xM!(9sV8p;+9(ok5vZNCSGt9=mn_*vwc|3*;h|-_h!|r$Fqf!%A;q=hwOh-&E zCp3AdW1%8y7|6FV!tiA;L;*pIc;xLeod<6#Xpmm4TOMVx>&3Sn5&(^{K|1oWV-xi| zOexJ@W**TB6}_-Rx~_BSO^r>DnzQU#CTS>+Jk!sWgsve7cWFAD2ZsLF%nh=(T{lO* zG?a;qeFOPo8Eb-Rdydp##KjlEs%L7DqSR0lNtBcmM#-|=WQe|;>Q$Q$F;=~>wPWHV za2t(YUdn4Qg6eP~dkdMW%OK|Zt`jofoL8WzSGfVd*)f<*-uQWj*gUNJ@}!>|W)Y<~ zf0#`q{x&%8+w3#7T-tq<#HR`QhFBUodCP}GEc#?7L+6HA7Fq7wjcJfrtuj-gWd*Ur zuyROQP-2Kp=LAD+=2_JU`(JBnG5m@0cn>E+rTjj6%U54{IP=PGLL~jAj#X&WU)nQF z^V2EuLqqJ7Xn|r{Dy^dOc`_^HYvWZ+9Ti~jKeJX9OX!~xQnzHSB1oUJSFw)6tdFr- zgaABQSd(LFFKgU57n>wWupXqDKT+@JB9~}gof*{NK!zwN?DR#NT!|Pte;fQuqTHSD zO%RpP)36P6tua}9J|~fj={E>+zrj@6Z!lZ`KOAJwzu9lF!AjV~_8VZP`Jyi8X8(eQ z=RLEZ@vesOK!>Su;)^_;sHEl?6OV|QUa=LzqYSkR0g;+E)Afyl+QCZ=@T`x+ays!> zG4!j>c)^>U;c3-)b${59oxxV=s^W;Yg~^pkbU}icx{S9O#HwoB*jE-tWNePt+(FHO zFsO(a;bEAfTLp38Q|YYstxAoVAoByww-%2;!~BQZjC%JjmL)G+8F<4~8Z_sUJfe-< z$_`x=SchQxVxkqndgn5h6$E_<6#z$JPA&S|b9Vd1GV=D}Cp&M7%wkiL>4HRjo01EBYzVFg+_w!5xR0 z_S+eQKE+%B8HiQS7I5>6jH_%bznY1$$y8+AGB~lc$QZX}A`6?_Y({TqmDv@DhlX5F z#;47tzQ5SAq{*Y=^jFGH@VTs0goy_ZsCmQMUvEHPuf#KbtMY={e0aFq=Su_gZb9az zG%3H2zon#)N1Ql*)$!R{RwA!jdJFa3!r~JZ*RqLfjuAR7h*`+XC06#o&epO5O=cy2 zR2u+EC*%F+m($z=f7{JUFbGbz6q59>_?QMI^eH}qTk=xwWANo3x6;U?`6zh0A2Pdo zmTz-7Zd_rj#B&UP4mOcFk8s2}LCkXS0n!;Rm z?|eciB7XTPqXJG4Dh1xvF<^8L1-i5$cYji1t1)?-=P~uL(P&Ke_QH14=xo2#{!QxF zoAt(IQ7@G(WsS*_vBp<=&A-rygghi4(I%JIFa%w@K`vSm%*F%pVuuDxqp;yUrs{+& zHmGIpbV;aCM^~GS!~Mlb<0CeWt)WUzN`=lPMm9)Ia|-qHUpu+fhO#x3{;KIeoj*wI zn23Xupab@@%jWY$jx?0=e=UpV*{)52xRKZ7&Ohog8 zlwyS4nGY^3oZs(X>K`P2O~f&Xh0)=zX@O7tyS}hq-RUo~kv~Yx042KlI|_|zvo=V} zZ~l9b%x3_j{|>_-kwdcyswaj9?^quF_Yl-fYe+4kPMEIiAjLkpR*AH7tjY$xsx{cD zdC3~-n%N<>Xj>-lB0J3Tey>D2S)*!HQ31MRFD>!*QSW-$81!GtPLPv`-oOxXk;JJ2 ze>VFDe%&joucHghp0j3hxmO z!6p*QspqP0@5#@V$Wdd0njqtbayxFA)cGT7&U7WHez3Zq`6cDppCM~73fXka*8c`> zkM}az`+MxQFi8((5mMcksEy$Sb%@gBqeGOL6mbP#l?AlFFDv!6aM2p!A~b5em!BX+ zjVx{FI5nx1D!@evYC|bOf?P^AFd#0V``wqxF+*7PfQqmAp z0Y#x8!k~dV8A)x`6b4okY&k7`)WfhQB;6Crb6z!_aWjZw7fL8cgW*gAp@SgSmm})T z2SRY#03Qgm6{jFmZni5gi1~wX)kJ z+K-$3%7U#=;<+ELT*MYqLA^~0sV;K-f*+t11QBB_i#dr&X+Xb*u&$G_HD-)oMchkj zri$Jbboo~+d}9UdN~DiTM;3-I-z&!#UqO}@IJkKv!`lrMIxFh+lGqi z&aQ5xH`q%U2}2)}k+m6x>rT3!bKC$eqTv{{XjR!SdwK7k@V&eeD$vV%u~KMY5e ztETM65L5j?cou6OdENzcwmlpNq55g*Z!kcp3WbXFrAM?{v8()EA>u0*QY>3sn1QS0 z>uVvA!T_R1ai4mPu7;x0pF#z}uJ$Z9*uHQ+Z`TQ~blhsHFKY6F!ugLn9-5}{&}=X* z+?K$pol=^bpQYeV@2e26=2&>TKr++P+AGrRkGwRSzL$yKD_qFdDGd}8_07J3*~~jTi$sypGC0Ih zNfo|)6?&%qzQN(&!^a7FJN*W5{6rIv8g`IV|6YD}hjg^=o&H~Eyr+M!{X-IHuI4G! z4CpuHpO%SHJ=8=22qGC}cJ_(KAAh{+VIlgIRD?+o{faPM0v zuzg3|$kB04x;AXZ%!h=%0$RPOG*YnAyb|K}X8~+o&%UGn|C+pv_rWlAoPlnJ+gDGXT!yse!geX?su}!>2dwR4%)^}-!)kE85*iM=AxCOfjc4=J030A4UM9T~nK%5Grv6Qi zhvYV%R}1PM@61b6{b^7&So-E934N5jwT}{GaxSO6XDHOwv$3uS8>^g9p=yWiOlL+= zJ%=X5TZ~_4}iOFSS zg-GXxC}G1G+==X*WJJOf(Wy3wMuPM6RW?p;|0|Z90yfs2D3JWX{rBIWq>EAkTwO|4 zzh({kHByfTz9EN~keX;a|8uoHyc^tol; z)lt)1oASe(#ggzwDL)T_vaQcUK*`3YM7UeGB{H|>VxcuPw7Xoz5iZcsR4bG_#)T{fFx2b276<7DwG~Dg2)w$u#LUDMbke8Qhg3x*f(95tV7XXSHQ+tmQnkMG{U!#n%gzg$tFWNf!(A$*q* z2D*+-6dk2VfW{0`@d7k%!5}?bFVw4?SWo_9u%x-B@|LX(UbADEU;l7K>t<{}0nxN&y2IJ1GI)yiI4A3EGBVE2?Qg?88=&j@Iaz>_A;((bNA6;- z7gh;*=Jaw4sb&bsMo-Z6f&zFVhK)TWBztr437h05b&P5XtzDY$j;ccIvE3M-ElIT?ztdHD+V5A6 zy@cOWiwfpB_nhYCx0SLG1(b_SApTr?-Iuz-UqJJ)5K41-r#k%3Q|euBD<(VTDd!#j zo}R1L!8_raL2BrQ*BZj}#l5FJH2YbsYmv$XR)x>qfgELlc(ry_mlhw`=~^m!{aGo= zk5-ej>XEMOujD;Cw>sQc!?|~n?Xg?Vdn?hxaCYo3g*G7ND`qHK1)bx*;_U%YR9P!!%Q7lg-H@8)1pBGwdUB+qPt zpgyqBc~)qiu`@|0C47kq15GkC9w->t(4~ztavO7A6_*@8yHp9CPuiwhrE-(=v=H(C z>MH$scJ{p-yvTCtu*Q4$l{Z%yJ^QqIOegE*1?9XI+<)O>A-ltLmBT8Ow7Lx)f2$98L(%7+Oj~MQ4>zAb566G#6CH@;vW-DfNB4*L^AotoLu(rgrWOG>J`W0}RYx zI(@e3=cL5ALT8u5Tz4l03v)#bdgz+b_`7CjJ2=zgs(r%U?Lul~fBRzUwp?Q#j$~|9 z%*!__Tzs5jW@D=%%>O-a;mmg9-LMgpe+Ex0I}$8??<#LW&nr8GtZPpK4|QodcXeU0 z^?#p+mdcH4gX&p>^ifwCZliJ$4EqJBrq1d`dtjsYG{ zi)j2SXkox(Q1vpm5p$F!pd`0E9NCYsab?os9y0H<#1rfu18-hSkn%rjmKx7-8QVu1 zoyu9xsa$w^bK^$_sqrI$I@z}KTh52l<-_2zs;DkS{{HOjr_y?FQ+k*7!=?4%a(-*; z*>kFO!k4){Y;o9~XV>P@7Qx&3FpNb)LYCN&CY0E#23@ z+!blbOjEDN3XT3PZioj@#1>cXi^jf}1Ydi*dQfBImB?CpG~xpFD+v3`{&nor-hR3w zN#3w5oNy~=?l8k7aWQ%rrV+kePM$B-pLR3i`E^!R*{3GK zYyY(Lj+*uNw*L*xe&)d!u+&vh&%3Pnu&_Jph7cD`e$L(kFK+2z>071-!#ZaY?RG8M zs>3AqLe6(FiFNuI?@{Q1uI2qHl*3B0TxtC~(SsMxY=IrKBp00HbCt9Hm{D+~{gh`!`BS?ju7+;WDIKJ*;ajX6kBUQpLk!>9yEaict^gNqqtjmxZCw<`LBw zHhaS}f0i3h2X&?CdGKx~eijDubcI#+j{H;bcW-p=)7DOU#V6Gr-^Qvbzl3>We3s_q z=z2$7%RWu>BNvl&SfR=`J*U2~rWA6&(=JB*_B{K~K_q6;J}m&Z>2T8L>kt~%rFW*y z&SrB?`vYA$9MKjVe4iFLll(`jU2>xg-x8RGFdKJ=pBHC8dk)ic-ZCYWziv9F23BE< zz&U%rqaMD*L5Ui(N(t>yWIN~l(lEpW9mvP#^s!TdU8CA9fD_7%d!=5@iJ6;6RQ8v5ztX50u{0fuiz_fhnFA}&tM6gLJm3A4 zdRqBV9qWV90V!~p{$a|MDYEt69AT&`_A0qFFer}!2hjW8?kZcdwUHWBd+!gW7d5e5 z4q%mL(yJ2LTMJpT)f_#29>iY0D+ZiUUf5v}c8`5YAl#K03C~&E>@?ipHSu?wUUKn> zUP#lN{4y9tgT97GD?2mZPts+)Z?7oikv+BgT^=%^=2n`4c0gJ)cO&-Jszd{H8;%d1 zZ0w@;fvZL)c2R`M-kyjBj%~yecC_Su(1zbs*$w$S47T%<6|y3d+1s}#)*+`OFFa{o zl%XOd)~)RLLKx0(yYJ1(o)tGHe`EU{ZsRoYU7q)-`b=7q3pW)yKXfZ0_Q}Gqm{!2v zo)=c)WKL9$i3yY)=i#JX;p1x?ilXjg=OCEMPY_m#8Au8V35PlXhBWzeQSRM!6PhgS&-GBH}Ct{D`<0Em( zQeI&5v$1BSpm>na&SN~7yEe7RO(WSM+^26Xi(yJ%m(ya|@qq@6vd!sAVoCwXl z*r%s}K0{E>7G=9J*Wv325S~^Kp285&&+pYU-z|aoQ<4gJjP^RIPh~f_cYDIjn8Mh2p)|dbibc zM0@W>X#irRz}Ar`FctY;O-l-vv9+oa`ssIft7Y-RI|cUbPu>~k{Eco_*pQTiQpJ|zCaIIFSXyvDeQs+3d>gVc!5;Kn_n8CwW@1`IHVEG?fGt#n$G3J zi{(6&C7i!|UO}v=oKojlH_GN{lyhMoMcQgzSEF z^PvfmDP2-8fHVIUU0K>6VSMGTvqg~cx>By{t&;XxYka)Qfp&}$_hP$G72RoA?VEl{ zgZ<(gtA$mrHqD^6m3?2-jP#%+?9|fF%La9q=G!D2X_r?1pdbt!JumD++NJ}V!*xK@ zM|%@vCcmA#a5UkNWp&8vGKTNNy@Oz*9l!5hNPV&Yj141xk4nLv;LO0Co!Y0yqkG$3 z9Ya*}9_k_q?GD7h8W7*u6wpxz6b-+SS~W}mop7B@e?*QrT#W@c#WQBYw`qVe>@r4ayo8?vNW2i_+hB!+49&fpe1qa-5X(mlR z0htkm_Y=dU$9z*+bNlT zOORfLF-`PCiqKD{k*sgZu;f}+SYSHRteB^}Gi~hNUe;-qJNlkBW&8hbYN=x7TilV) zB%Nvz8pBM`rwY^<<~`$OO8X^mAO!-325s<7)9UO6nWl)r@qVr-wI&C7LDfz0v>P3D==YuWytN; zhwFl$k4RA_q|ay!K~o&^5)<|YIU^&4XVyhIkUpvxY)g{t3pZvep?dS=cRZz`N<=qt z)6;N)35UjieS3k_(9JNt3j*keoYa1aQIs>mKOHlGN(H5Q(I^PtcFpPGE|xW=8iY!7 z{mHgCP90s+L2KGh5}h3VQHK_z?4@XK+Oc02aWYuTc1UA*M!qvm6*?EWVUL3BJ;Uz{ zar_en%{U{6jxR!=Sb)BIa&6(kidH?VLbdt}YO*uqgOroN>_{{Dx))w>1X?va44cvs zJwu$>6y;iV9ZQ;Yyx6K!e%qvjhEE5gAU>-AaaDAk|7g-x+GxjOaue2s^hNTE$;4Fa zB%dlJeLt044&LOg%*b^`m?kA&h^w3R*1%b)%}9_Wq(1S>vhP0|I=K|&7?rM(TkuVK zm%;^mS2sPEMQDQ9>iMZ@XWvh~iDKll7M4*fzgt51-2BL5p(1d6E+nuR%%%2AhKWLP zCtfi4Lu;gE#HAe2;y!3VKiH{N-ObddTx0Q(xl8vZit5f}2h7paJ@ACi%63L|F<}Wt z_`9&orJ8nyVxCh%UeWh!u|72T>!{I=&hWhF^UoOf?oh0)A>{S2VXvTv=;@k}`gy{?OQwwTZH=`^JOW!}2&;B_!>(9QwY zM1Aj=b_RR&qwXh)BZAbXb$%>dtc?*KuM@5^0VPy{!S-@Yj5_+GCaqXbAoXXIblFrr z!c_Pr&_Igq@E1m4q}vx zh2&WwsW)3^ z4O=1U5#0wY+nByBvaE!b6t3N-yrkK^2keQ*<2+aaJjxkF@_uHyzt0~dnCo6nbatfJ zNE&TDZjdk%CFLRlEWB8c!g&Z!F3Q9O({p2fNmmBkg47?w2ot%QAT&xwnt4EGgk5UY zVk$^g4GL!aK#P_DaVu-cnkPRT$yO~NeZl)QLa@jj(WlASisaK~?SC|VkrVSA7y=k* z7=_zRF-6T{g^IW6V$&Y&^N}bX>HA-%?!g*6PBRLPm4BtdsZ)%)OSMD)kWRjl^VIYa zb$?Vc`j4GD8**zvFfq&uNkJnwv{dr_<3Mn}#MLuXx0qnHXCu{j$Ztir9NmmCp|Eha zSN)0{qRdG9Pl#0DM=P4lH7xY;O`8w&-GeMI?Ioj|cWSX6>k$pknQ?O#sw<}br;xSz z51{+DYx2gIHSdxNUrLu&l07)UHt`L<rUB&d_@~iOyHw+E=v6{(fL;q43D{*TjqeNPj$4I#O9gzQtleAggcdE>)D;j26=; zk|pzz$S0FCQ~-YIThz{r#Cv7E6Vo%n`2MgB{h&BhQ+}^m>z_@6`)!TGhHP?JU~S#-4+i zsx1+W%a(i?eP*q2R)26{B=f4VApT`-7&ThL=TsL);qcl#wdLGd_1w~2i7jBoZK`B* z!a~MUox+Z$G44-jA+UL6;jpW&tQ1f;3g21xG z|EU|GqP3odUh=Bmw2|d3m_FnwLCzERhZPs0`8%&G{f()y@?#2QGG(vF`4-vooxLnm zdN>!tgMauZ{3Vg^<7NIwQbuA+)LDoRnl7cCl4lsx3)3#=BauhS-@!EAhvo1r_0MB> zh_JBrlyg#X#N7ukEUy~mrgTo9w$NY}9+_$rPW3D?89P2&-L6$rBH94~`fZN|F}{UP z>r1j(ihL%=UTjITVg7H$s&0-Lhu1T`x;fX=K1RHL+PxDO)7Abp%2$M2!tbl+K378T z!>)fn{t}E!84GR12kYZ)7jAkZ&L2TV8Dlp1UbZEPou@1Qd>ZLyB!0hm_H&+f9?{km z#hB`gVyFtHzcG?kGWr$@YGEAXWn||rHOYH3HCq|@S@^r)b-W@ha`8B`A~6C>42M;v z&mbqL#j16w_=B6{Z{jsH3ykrv9HOIJ5$Jj5C&D*}ISJ?NF!HsG@b1h9bLOHCHZ#fY zX2$$_@9&-Qv$Ih7(=;;Xh@OWd&%*ul8HJ56BH?7^V>JB^EQ7rK|vQK*S>(aqU6;2}A=JlAVeg`(e>S{-os zZlSTmxv(orj&`mk*W_|m7D?gK$p95q&V0clN?g-&m!DsHQk_5Tc)AM9eLT{0XIp@J`D-_t1`1UP$8$Qft_|z2S%cdXM8foOM-3XwaUu zq9)CDO9vEkV`Pu_Y~)TspfT2iR}K@Y)`4+?L8FWF&E=j zS#ThSh{-{UjKe=d9#s1T5?~ZguezqYMmIyUR2{x1UJbPo6pR^ZYEeyQNo0$hO69d; zex{lvo(1mW;h>SG3r0BA|YeMj_FF>jL^(We5m2m zzT;z)+dUU-*40L2OEeOfz015B{4MwyE5Zk#p#D2$aZ|e%Sm_26x%aiz!@pG;!e!^- zpK0=6vNyNzFcoN@Xx4dkGG!PMH(_Z_ zgAOpGL3_TlR!FM^trNlhpwyqzQvokqQKLiG?U2wu;Gw_f%p=P?qE9z-SvEpOAel|K zmoE~E={EV(rSw3~Lg_vI*|P7Nn$uT1Ip^-OA7omot=%oSrf(HtoBTa)vPW0~dMFzn zleeWhckhU$X1-BHFBrp%nqKFQGf0qHj#Y32F|f(;HnPQ`Kg`a)QOKG{gHV!^aKUlr zYV6{6&5e1Z9Iv7YughQ?w|lBh2P*}^KeQrMIOyG2^CI}O79HbV;6<9$_gZy2 z6>?o=x3Ie>B~>~&BADOskg*`4jS&@-C@S0=mY-3M{wg&=1Y!rdT$+00iepo|a1U>s zu*sXoN!UE_CvIvxd08R7@IkJYWrlvgEU477!E^!C&EN4UKlEw62^ra`T~!&&sAQON z@59rbTw=fMt`D;||E2a-!o1q@V=yr|>1YTi1skSTQ}-$%#p>+_wOnQry=p&uHP$SB_6Jy=TqMlh5a5qoSmO%|5I4I5 z%XK{H)ljP=UWCm+ zU8Qo05sSkEocYTE&L)Zh&h+zIhaE<}jOjOJ)q=9)RpD~)Ej7w(A{~8AG^SJSDjNEc zpZ$S1Jn_syZOdr7-1z3uuD-7%X{S2yS`B33q2Fw3ocv#x1g156_}5|oLC`y1mGk;k zJ00vf%-C~3@?GNn`!!C)HrS-@&H^JAb%>F`@E^q{ZQ>~T-wN*Bs)W{-?+lBJ4{F_y zIX$*kI~&vqI0Mck6VL3{qCbLxn5}T#%qlPY6c(op1f_D=rq?-KL zYOE(E)F>z>2EJtP1n7zpX3hVBti+etYK=`j8<_mq6?$taT>;J12^*``lw)*G+`FqN zBZW(f%Y7Hr-0-3h6^DjI`Sfq*?Fmn<*)_F9k;og?JCw*_(eNYIem<%Lx%cUXdv}F* zeQQs6S{e=cYmqX_9i?Bv^!h!hWF~(5lD35&=}Q&g+vk6TtisiJdP!>l(eazr4Pi+I z8!Eh{B?R}V3AD#>@l?9{lEx}~R9Bd0%#`kHn>$=khOg8rMTvZIQ%Bep?hHEE?z+%s$E+TLbCO02qcM zu1hlld*#Z5tT?YG9n(@PbFMkX=J}Omj_ZES9l@gD&FEd$0IGIln^uxo@IlnH3xco=_$Ho~u7%iGb7cNP zE=BDxWWL^jaE^hwgsJKd2o-GOOZq>fu}$9E;9H+v&-_EE>^DwJ{8}Y+d`;)AOb&UZ3N>ldE-i~A2PbD?mI+v#uZ!EW)>h(0DG=AE&9p``3p>o_w%_N1?084N9k zYRhx0yaksQDJ8X&TOkUaaG`7ng9{IE$J4zpX+{q^rmOr4H8J%@bWq;ATkGUjt2@C{ zAOA%sXF_2)GAeQv9u~aF2MXt9pzuOI(o5a<-amm)npF2>UPHJf!^1jZd}Du}rhbjU zgiphc>;-${#NZ7Ia%Th5MhrjJQ9KJ&Szsz3YGqAAk-4&M69VFO6Hk0=m^oO4=-K`GA*v<-pdxh4f zABxh0QlWJBZm}pyJRcd0Idw{SDTH_&k<&s&55}XvqrB0){rWu;^zY-_(#(9eV2Y{R z@SJjjk+{<|afYURH5LJqEtflKO5`N(1H%11J;JftmBQxn6;yjwmJexO`8!geG2F*{ zX@pDv9QC6f&_hbEp5pxDMJaSa?TGLp-TB0KJ&i4#s% zxnuC#!pW?9L7^S_N@Q=q_q$xg|BV~{fbsuT*w9gQbzVFu+<2*8ZIl#K1D3`!QoHH2 zw98~gXzM;NjVwzQng+gYIv2RY7CcR5u`Y|$^zoa9dD7Y3Fhb-^<~hZC!-e-A6L-OY z#;2ZEzc6ldo>s%z3CWW~k1~au6W4WiBgkh-PEKB*gAl8NzLZVep9dv;Y0n< zZK2YTh+a@om&k~!pY%EgV0}_JWb}kHd zWHo4lSut_KoPPZ(uf7Iy9~F{tR#E}X5^Sy0Rxe?Xvc*f~YiiC16lNx~tM<5!bM<99 z+p`*a_Q)3@Xup2kI~O8mD^tA3k=1$8=(8hOEte65f#L>)R8%c9 zn}QT~1mo)>q|TB&G-E3DIQi&rj}?{RX>pCB$mB0FBKxFiB%d=v*PVk~{mui!XiSxD zvGJ;u*;V!LFStlsOq?p>7^~bJZdE+#O6Qul}f|JxPInPSl zvok1Xb!I>s&dzYpgsw>=swJIZm!6)Hd^S7747b`ESS+3Tx+X7!L_w4Z&$xwLX;hH! zjrZ(UKgCE-B5{v@SRX104TI<^$H*~4t3PQ>HM)F1qbi3vu8(YGwy7);5sNZ!X%sUT zl9*X4K#3Kf^@{(C*(*`FZitCi*3{Mw!P3v16Q(XB$V6Tobq>w5w`s-%xRKC+RX)BH zVVrp(v-igjfKD5Cy4e~D!?H8At0R7SN7mG0TT{l4dFH?Q{+(;XDp$QFRq~CNnE1Y9 z6$(d!V)j3OOYv~zF^N;->5;$(+?df7$0E{&&zp8a8i-KkibQd+gb9{NYUf1xmP}r) zmw0B!W-+cIXCqT(f9HsH20<3jKw3H}O;PJ0`sXOju$nB$de`1>tIn{J>D{JW_al+F zF&Fkd$Bf(=oeRa-gG$$ERP9V^)5gD9Af>mlsmsceYYJ0VEWUBspVy|@@u7%RxKWevR@U-FZ>N#>w%gLFZq}JQK3msrPU(FuHAX7>>9fa5 zRZsv-IoTM;c!J9cI$HGHlIZSxY|drFp!x=uxU{w7vscpRQLsR?3q=X$R_|UX26)o| z+wLR7kD)&k$2z6k5g>G(c{=*|E4MB{rY}5#l9kROOC)uqj?WqzV6%(s`_K(p8iDyI!#Fm? zjFIRm8KGMa1lQL>KKr=^VjU>TpT;Y8VXV6_cKs{b{E0%3=WoUM;dKZk91grQSN5a| zbQ}*H=fDs5avW&rNZf`=#kC4?NT}&zO_I4wlcknQ5}qB4-G(2Mu4N(-Ap&b=!Wdu+ zkNV@y2ReRZ-qf2Y{G{mbwpE=`*q}A@Tjzm|Fv=!YhH}AHnvv?)hBoJ}YzPa@f_UH( zMwpsxPN;@|+(Mz8OxEgDQ?aCj*-}lfg)X}{c8-$pPM@WC zLvy%1+rgU7VW$#F2bDG`*a+TTROMtWTdu}Hm1lt_iWiECl zK4ico2?s7&zL9iaExR3bwS^jLaWC}F0RbLu37(x^GgHgv3XPgkp&GBoq5%m;f@6qj zQ`RI4?Xu-fv1l>&Sl*m#O(bWT*<)c%-?uY)jp6D{^!DJC9FGG@4DHC z!jn@GSQkY)OlE%_Yjziqt@(C4%-IJ|&Fv08YgPiRxx|hXHvOFWzA^*+Ih@i{N84MO z>^F-q?+-gJjjX3a#

      Z1okSYAs15JY=Whh4tZ_#8ITTF1;owlXUE|!-c#v=t)_D zMO5ajQ6k^MDF?rPQ;!WUeD1kOE!fcSv~vg~5{>aZkxQO~z$ZXV9(mRS&-duIV)IE} zA4gN^W@GjDMM*Yfu}$w#phw_mzF^AsJ?n#;lFA8V>x8|d^!QUS6y1^29cxO}wkaBDoH#wyL~YGY%#RmZA>iOzJ_ ze#2@fQFC{?q6;*uh@FfO1#+&dS&el!Pb|A8L^wAe=Dl8Uh|QOD-sVfZvQM*m_G^s0 z`I4IApW<_nRg}VGc;=z^vGk$K31X0;o>Mgg`>^6_9Zk&f`(UXQIE*Nfu_KpHt;dh< zja{0$q^$$C8mYF9jitA3%>kun_O8!+G;)Kf`km>LfskBzgel`~=NOU9zXDE*RMCl( z&zm~t39nB^^Ivc}VVEQD`WGzQaH!)Jh+$11Dz}*0MtPEmvCj%JGD(_T&Wa(}{wax*WPTabbP~K! zQw*#fA>0|C?>)E%+}<4S)4APfjQ?bxF7f3gq_n3v-^+bEru(ud@(ujhvA0iWLShW} z2K=bLj2}k@@~_4ZcO2#k{za~{xS|x^^U^Ybp{b}?xDs_*JE@`%lZ>){2TP*~71F{k zturYbA+F2pH2O=ItVI01ei9y*49~_1IM}=ZeOM1^amT7uhaT`q1p zqz(S8sFl1rTit7g#Ag$YSxOB4Lt1P$F~)`4a5c}aj_4}#P)#=s_^R6u6?|Q7{91{@ z+o2h7hPSjL9`)Q;Ec~2s#Ipw-tm*5E302vY50y{?YWWIfBWfwr1?hhSxBYip(cizW zlkB#$ERJ_CJ3bG`r!9E&WZ2vWI*MaqD9BbH=W{6eKEcH15S6(r5>QE6+0Gn)9)o5W zwH+yiWO~lWXVym80mQsuuW`?S%$bjRHz2<3h85okC#Tcc3m}JuZ%nO}bCgK?z&MBZ zXVKYux4?#Q{IArx*BtG}$Eo5giJi9jL-&Jn;^uDlW=(;iOAAi=c}Cb&I>uqC72m92 z;=JKu-2}<2&<_72HJ0oyEikVwiO^5XK@h|nMs>D<4LgvM3iGqWVahO&)34bFcR0Z@ zp!~AtF_7tKWfOH4nwqeqMLT66(XWkuWrk3f?B`1uO!4DUPM$@IasL9dq_U=O81?ps za5>|`^Kp66^I3RABjf!uB)vv>(L>5IwQ+96LPqk1)6g0vfL&CMxAn0l7qJIUnaf9R zmNUW!1${D}?Lc%1m(B}=LSONQJ>i+#>~uVcYV+_TuoxpL{c~Gzla;>rYwS$eu*c2_ zzfAi2#Ckr{zOG{^Yx_cGLsQsz-Dv7@QC?FxXmL?VH)@Xz8cfGrl-U#>Hs%R%y_ayi z9ru~VO1;otN%@!stUfyKN7eZ#kC<^@Gk&Pi7-5f0`Pt3k@f?zOVwX!t?jcti(XRSV6nN0)`P6=8jV8 z$wL-8o`h4ZIA!K1>BwN#$IRW2`2Vv;Dix@Y|$Hb#`X{VTAp*l&OCkzwH$K=hCjMn=h^Og*|I(Ru}ogqT0|GFCwSQ56HXV zOH;i{?)po-d#7e~gBnEH2w2?>8d`L@E@LK^vc8DUYr=)NxW=#^G-fQw6XveQaLnb# zaNK*1VVR;OB2KnG-KYuJI)HS*_?TA{00OLl1u()PZ05;&jh?F4qSzX-H2^b@@7JcD zY0#p83d{i0z|?n|wLhRC2Ah|z7Q)>0p@wkWLbxWMYzW7`+z_638T)oLgw0Pigk$ao zS+utyY0< zpO+fI(xVBt@6~9-UM-5P5nBT=bDK|Fbh075_-R-LFVF+jIqNki9@UF&-R64DgKaa=1Z1ql z>jE`4uwkFpnYCAI&hcq}zzcK&9YFK#d$j7?_G=!%4b%ZUfa=U9t$bs%<_26qHBbeV zXV+^*NQUMDiqK{m+j5``$XT~rlK}}R0t$f~wB4~`rzQa+kOO1`j`a=NLpO$w(xj28 z69WI*0%I1LJP*or{g&@~-o?-LG%x-Oo9B6ufjvLMcpbO|97OGRfqwx{0PBGm znWSD5Q@g#C72V@DcWyq z(y`e6R8sQXZZ!?N`-BQ3$|LF6|AX$>x&6V_*neH9xDG{qz$TD)FNl#z{2)D7_x!VQ z<0$&)xS~U)H;PgArlNeTuV=380aJuzh&BC~2;Cc7bIivBIJp9;5=3Y3rbo9A+>sJ6txM zRBg6BGL!A1fSKgD7Ex4Akf@&dVmSTFc}m18HfkbZU5#;!tpi90MzX3ITlcK=Ry3Z$ z@HZ~QVSoTDU;%ovI`zr*%}h$C1YhZyTXA${qZY;1h^+yr%esyly-Z5GME^8St-(=1 z1!jP0zy&GS)T;VnCZ&0<%6J+M10%o`FbUXEWn8SEVp4o_Rff}X7zhI6z!)$M4s&=} zy^&3+LsQrRJWCJ=0K>qLfgVGRftB?R)?6#mm+`$e90hvUHfjpC13*8ZWEQe1PnY91 zoh$GQ@B_U-53mCl>9p5Zu_=$uwWQgB!+;m)1Ui5sRB67ozKJz|YwkXEsW=SO;ZZ%< zHUmw7nAy#m9!QEeHD=%WWqkE=90lA!9k2taPOI0h+Xh+ly;aMo5E*#NH#VS?G+^{K zVDvR$^fhS1wk|)!yz(%nVm$IdtqPm=QH~>gM5l{$3 zA6=J|Q7>}l^&{wQ2n+65Uyl)rN`MID0NKEr@;@c64#v{-Em6Hy#v=gMd(bPebpYu} zR1ALEm|?%?TKx45tS$=BMpie0?IghC=*(>*U5n>$!x2CLuCHTt)4(L;V^bSNq~1z$ z;s}6n209)v0K-iSI3KQS&%u5`0+Ij=5Wtzk>*lVTwH`+R8L$KCKs$~OY?wP*kbxtB z3&;W>H`L`okk`9*5=YS^bm$Q}^adSzgATnxSB7&tvt%5t%w~0N05*xbQlJdT!O`a1 z(PCX~CXN7Jpc1H>D=)Cst#RX2bO9Z@fDWHuhtIFW=hqQVt+oMG6x<__X@2Z0fw59kM) zMeqjeMaV|tukxeoSZxGQfk9ws9osX*1obha`q*~;+V#2P=7cm)OuwFjde=`em3}g) zUz&SeuQv#B5w*{NV`QQ|u6MX^Xu{J&yFDdx3- z|L(3RM>+6+RVwYK|Ep3`jolqzpIB0hV)K8C|BIsczr{urYyVr^hho*&#pA6gmZK@| zRhUah5=&et!+f5GQpAFFhJ?8p{AX2`eC(A*NH~?1_+7~UK1`%KecbZltR!aX8+CeP zN_U-}Q4h|aEAFV%gJoHIa;{v2-4pcnZV^R0^L6n$ik1H@4%O++yj#WY*yWv>QD$l5 z+-bF_AhKWAE&T7*p2P0t*3AD$)3*miRp$MF&t)#)C}%Ff2%{W^5y{3pgJV%q9u#y$i`~YeqM~=F#A1s!D(WSpZ5TL7LN*!| zxfs6>z3=aj?>zT&o_Wr5`99xk0h?S=GWR^jF_qosRr3{Wa@pKgQgSI)Kfnd30F(pz zfPIx@)%aP+X<;kD2UqaHl>%&N_~;5gx`L0cv}Sj($(!c3tX%BLGC%?p0P+Eqcu20b zrjJd&IY)C&YhQ}Rjg46Xh=5!`&ayi5bE`}S@~UI7T3x5YaiGFcpu$n0!bz7OjQw~k=`yTyr>Agvz_AhNV(cqj3SDUC-H*ck)L9VDYXKuq((jZnFlu5uF%CgrU}k1bmY zB?Js4+MAhmASUHhx=R-$r(Du*X2kXfp=s^U*tH=f3KGv5CQG!eoM zGqs4qDZEabtm9=k6A+YWGY!iS+V&(TBIw3<73>HXvmmuLzog28O(&dP|1jI|&QqBx? zJrVKng2I((jfEg5fFa#{x%GtL!kvxT03$=At=fA}&-e{Dd6Z)YucrH@XGT`L5qZB(_LJRQQBzSpSpPgL|z!>D

      mjIwd!u5*qU+@Y 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

      X7p2l5%;05_|v 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

      CPd@ovt~k(=N#gXSvmOlUK9oAI9VQuHM{azp; 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 b_S@Q)gMh(oKlKK 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 literal 0 HcmV?d00001 diff --git a/license.txt b/license.txt new file mode 100755 index 0000000..c78efc0 --- /dev/null +++ b/license.txt @@ -0,0 +1,72 @@ + +SOFTWARE LICENSE AGREEMENT FOR PICO-8 + +This license agreement is between you, the end user, and Lexaloffle Games LLP ("LEXALOFFLE GAMES"). The software licensed under this agreement is PICO-8 ("THE SOFTWARE"), including all data files, executables, documentation and design. By distributing, copying, executing, or otherwise using THE SOFTWARE, you agree to be bound by the terms of this license agreement. + +THE SOFTWARE is owned by LEXALOFFLE GAMES. LEXALOFFLE GAMES reserves the exclusive copyright and all rights not expressly granted. + +You may install and use THE SOFTWARE on any computers for which you are the primary user. You may additionally install and use THE SOFTWARE concurrently on any number of computers belonging to a single household or educational organisation, including libraries, clubs, schools and universities. + +Unless express consent is granted by LEXALOFFLE GAMES, you may not distribute all of or any part of THE SOFTWARE to any other party, create derivative works based on THE SOFTWARE, or sell, resell, rent or lease THE SOFTWARE. + +EXPORTED CARTRIDGES + +Files generated by exporting a cartridge with PICO-8 (Javascript, HTML, executables and data files) may be used for any purpose, including commercial applications, and to alter them and redistribute them freely, provided that permission to do so is also granted by the authors of the cartridge. + +DISCLAIMER + +THE SOFTWARE IS PROVIDED "AS-IS" WITHOUT WARRANTY OF ANY KIND. TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, LEXALOFFLE GAMES DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + +TO THE MAXIMUM EXTENT PERMITTED BY APPLICABLE LAW, IN NO EVENT SHALL LEXALOFFLE GAMES BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING BUT NOT LIMITED TO ANY LOSS OF PRODUCTIVITY, LOSS OF DATA, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF, OR INABILITY TO USE THE SOFTWARE, EVEN IF LEXALOFFLE GAMES HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + + +======================================================================================== + +PICO-8 is built with Lua 5.2 +http://www.lua.org + +----- Software License and Copyright Notice for Lua follows ----- + +Lua 5.2 Copyright © 1994–2015 Lua.org, PUC-Rio. + +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. + + +======================================================================================== + +PICO-8 is built with rpi_ws281x +https://github.com/jgarff/rpi_ws281x + +----- Software License and Copyright Notice for rpi_ws281x follows ----- + + +Copyright (c) 2014, jgarff +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + diff --git a/pico-8_manual.txt b/pico-8_manual.txt new file mode 100644 index 0000000..ebb41f3 --- /dev/null +++ b/pico-8_manual.txt @@ -0,0 +1,4575 @@ +==================================================================================================== + PICO-8 User Manual +==================================================================================================== + +PICO-8 v0.2.7 +https://www.pico-8.com +(c) Copyright 2014-2025 Lexaloffle Games LLP +Author: Joseph White // hey@lexaloffle.com + +PICO-8 is built with: + + SDL2 http://www.libsdl.org + Lua 5.2 http://www.lua.org // see license.txt + ws281x by jgarff // see license.txt + GIFLIB http://giflib.sourceforge.net/ + WiringPi http://wiringpi.com/ + libb64 by Chris Venter + miniz by Rich Geldreich + z8lua by Sam Hocevar https://github.com/samhocevar/z8lua + +Latest version of this manual (as html, txt) and other resources: + +https://www.lexaloffle.com/pico-8.php?page=resources + +:: Welcome to PICO-8! + + PICO-8 is a fantasy console for making, sharing and playing tiny games and other computer + programs. When you turn it on, the machine greets you with a shell for typing in Lua programs + and provides simple built-in tools for creating sprites, maps and sound. + + The harsh limitations of PICO-8 are carefully chosen to be fun to work with, encourage small + but expressive designs and hopefully to give PICO-8 cartridges their own particular look and + feel. + +:: Specifications + + Display: 128x128, fixed 16 colour palette + Input: 6-button controllers + Carts: 32k data encoded as png files + Sound: 4 channel, 64 definable chip blerps + Code: P8 Lua (max 8192 tokens of code) + CPU: 4M vm insts/sec + Sprites: Single bank of 128 8x8 sprites (+128 shared) + Map: 128 x 32 Tilemap (+ 128 x 32 shared) + +==================================================================================================== + Getting Started +==================================================================================================== + +---------------------------------------------------------------------------------------------------- + Keys +---------------------------------------------------------------------------------------------------- + + ALT+ENTER: Toggle Fullscreen + ALT+F4: Fast Quit (Windows) + CTRL-Q: Fast Quit (Mac, Linux) + CTRL-R: Reload / Run / Restart cartridge + CTRL-S: Quick-Save working cartridge + CTRL-M: Mute / Unmute Sound + ENTER / P: Pause Menu (while running cart) + + Player 1 default keys: Cursors + ZX / NM / CV + Player 2 default keys: SDFE + tab,Q / shift A + + To change the default keys use the KEYCONFIG utility from inside PICO-8: + + > KEYCONFIG + +---------------------------------------------------------------------------------------------------- + Hello World +---------------------------------------------------------------------------------------------------- + + After PICO-8 boots, try typing some of these commands followed by enter: + + > PRINT("HELLO WORLD") + > RECTFILL(80,80,120,100,12) + > CIRCFILL(70,90,20,14) + > FOR I=1,4 DO PRINT(I) END + + (Note: PICO-8 only displays upper-case characters -- just type normally without capslock!) + + You can build up an interactive program by using commands like this in the code editing mode + along with two special callback functions @_UPDATE and @_DRAW. For example, the following + program allows you to move a circle around with the cursor keys. Press Esc to switch to the + code editor and type or copy & paste the following code: + + X = 64 Y = 64 + FUNCTION _UPDATE() + IF (BTN(0)) THEN X=X-1 END + IF (BTN(1)) THEN X=X+1 END + IF (BTN(2)) THEN Y=Y-1 END + IF (BTN(3)) THEN Y=Y+1 END + END + + FUNCTION _DRAW() + CLS(5) + CIRCFILL(X,Y,7,14) + END + + Now press Esc to return to the console and type RUN (or press CTRL-R) to see it in action. + Please refer to the demo cartridges for more complex programs (type INSTALL_DEMOS). + + If you want to store your program for later, use the SAVE command: + + > SAVE PINKCIRC + + And to load it again: + + > LOAD PINKCIRC + +---------------------------------------------------------------------------------------------------- + Example Cartridges +---------------------------------------------------------------------------------------------------- + + These cartridges are included with PICO-8 and can be installed by typing: + + > INSTALL_DEMOS + > CD DEMOS + > LS + + HELLO Greetings from PICO-8 + API Demonstrates most PICO-8 functions + JELPI Platform game demo w/ 2p support + CAST 2.5D Raycaster demo + DRIPPY Draw a drippy squiggle + WANDER Simple walking simulator + COLLIDE Example wall and actor collisions + + To run a cartridge, open PICO-8 and type: + + > LOAD JELPI + > RUN + + Press escape to stop the program, and once more to enter editing mode. + + A small collection of BBS carts can also be installed to /GAMES with: + + > INSTALL_GAMES + +---------------------------------------------------------------------------------------------------- + File System +---------------------------------------------------------------------------------------------------- + + These commands can be used to manage files and directories (folders): + + LS list the current directory + CD BLAH change directory + CD .. go up a directory + CD / change back to top directory (on PICO-8's virtual drive) + MKDIR BLAH make a directory + FOLDER open the current directory in the host operating system's file browser + + LOAD BLAH load a cart from the current directory SAVE BLAH save a cart to the current + directory + + If you want to move files around, duplicate them or delete them, use the FOLDER command and do + it in the host operating system. + + The default location for PICO-8's drive is: + + Windows: C:/Users/Yourname/AppData/Roaming/pico-8/carts + OSX: /Users/Yourname/Library/Application Support/pico-8/carts + Linux: ~/.lexaloffle/pico-8/carts + + You can change this and other settings in pico-8/config.txt + + Tip: The drive directory can be mapped to a cloud drive (provided by Dropbox, Google Drive or + similar) in order to create a single disk shared between PICO-8 machines spread across + different host machines. + +---------------------------------------------------------------------------------------------------- + Loading and Saving +---------------------------------------------------------------------------------------------------- + + When using LOAD and SAVE, the .P8 extension can be omitted and is added automatically. + + > SAVE FOO + SAVED FOO.P8 + + Cartridge files can also be dragged and dropped into PICO-8's window to load them. + + Using .p8.png filename extension will write the cartridge in a special image format that looks + like a cartridge. Using .p8.rom" writes in a raw 32k binary format. + + Use a filename of "@clip" to load or save to the clipboard. + + Use a filename of "@url" to save to clipboard as a pico-8-edu.com url if it can be encoded in + 2040 characters (code and gfx only). + + Once a cartridge has been loaded or saved, it can also be quick-saved with CTRL-S + + :: Saving .p8.png carts with a text label and preview image + + To generate a label image saved with the cart, run the program first and press CTRL-7 to + grab whatever is on the screen. The first two lines of the program starting with '--' are + also drawn to the cart's label. + + -- OCEAN DIVER LEGENDS + -- BY LOOPY + + :: Code size restrictions for .p8.png / .p8.rom formats + + When saving in .png or .rom format, the compressed size of the code must be less than 15360 + bytes so that the total data is <= 32k. + + To find out the current size of your code, use the INFO command. The compressed size limit + is not enforced for saving in .p8 format. + +---------------------------------------------------------------------------------------------------- + Using an External Text Editor +---------------------------------------------------------------------------------------------------- + + It is possible to edit .p8 files directly with a separate text editor. Using CTRL-R to run a + cartridge will automatically re-load the file if: + + 1. There are no unsaved changes in the PICO-8 editors, AND
      2. The file differs in + content from the last loaded version. + + If there are changes to both the cart on disk and in the editor, a notification is displayed: + + DIDN'T RELOAD; UNSAVED CHANGES + + Alternatively, .lua text files can be modified in a separate editor and then included into the + cartridge's code each time it is run using @{#INCLUDE} (in the desired code location): + + #INCLUDE YOURFILE.LUA + +---------------------------------------------------------------------------------------------------- + Backups +---------------------------------------------------------------------------------------------------- + + When quitting without saving changes, or overwriting an existing file, a backup of the + cartridge is saved to {appdata}/pico-8/backup. An extra copy of the current cartridge can also + be saved to the same folder by typing BACKUP. + + To open the backups folder in the host operating system's file browser, use: + + > FOLDER BACKUPS + + It is then possible to drag and drop files into the PICO-8 window to load them. + + From 0.2.4c, periodic backups are also saved every 20 minutes when not idle in the editor, + which means the backups folder will grow by about 1MB every 5 hours. This can be disabled or + adjusted in config.txt + +---------------------------------------------------------------------------------------------------- + Configuration +---------------------------------------------------------------------------------------------------- + + PICO-8 reads configuration settings from config.txt at the start of each session, and saves + it on exit (so you should edit config.txt when PICO-8 is not running). + + The location of the config.txt file depends on the host operating system: + + Windows: C:/Users/Yourname/AppData/Roaming/pico-8/config.txt + OSX: /Users/Yourname/Library/Application Support/pico-8/config.txt + Linux: ~/.lexaloffle/pico-8/config.txt + + Use the -home switch (below) to use a different path to store config.txt and other data. + + Some settings can be changed while running PICO-8 by typing CONFIG SETTING VALUE. (type + CONFIG by itself for a list) + + :: Commandline parameters + + // note: these override settings found in config.txt + + pico8 [switches] [filename.p8] + + -width n set the window width + -height n set the window height + -windowed n set windowed mode off (0) or on (1) + -volume n set audio volume 0..256 + -joystick n joystick controls starts at player n (0..7) + -pixel_perfect n 1 for unfiltered screen stretching at integer scales (on by default) + -preblit_scale n scale the display by n before blitting to screen (useful with -pixel_perfect 0) + -draw_rect x,y,w,h absolute window coordinates and size to draw pico-8's screen + -display n set the preferred display index when multiple displays are present + -run filename load and run a cartridge + -x filename execute a PICO-8 cart headless and then quit (experimental!) + -export param_str run EXPORT command in headless mode and exit (see notes under export) + -p param_str pass a parameter string to the specified cartridge + -splore boot in splore mode + -home path set the path to store config.txt and other user data files + -root_path path set the path to store cartridge files + -desktop path set a location for screenshots and gifs to be saved + -screenshot_scale n scale of screenshots. default: 3 (368x368 pixels) + -gif_scale n scale of gif captures. default: 2 (256x256 pixels) + -gif_len n set the maximum gif length in seconds (1..120) + -gui_theme n use 1 for a higher contrast editor colour scheme + -timeout n how many seconds to wait before downloads timeout (default: 30) + -software_blit n use software blitting mode off (0) or on (1) + -foreground_sleep_ms n how many milliseconds to sleep between frames. + -background_sleep_ms n how many milliseconds to sleep between frames when running in background + -accept_future n 1 to allow loading cartridges made with future versions of PICO-8 + -global_api n 1 to leave api functions in global scope (useful for debugging) + +:: Controller Setup + + PICO-8 uses the SDL2 controller configuration scheme. It will detect common controllers on + startup and also looks for custom mappings in sdl_controllers.txt in the same directory as + config.txt. sdl_controllers.txt has one mapping per line. + + To generate a custom mapping string for your controller, use either the controllermap program + that comes with SDL2, or try http://www.generalarcade.com/gamepadtool/ + + To find out the id of your controller as it is detected by SDL2, search for "joysticks" or + "Mapping" in log.txt after running PICO-8. This id may vary under different operating systems. + See: https://www.lexaloffle.com/bbs/?tid=32130 + + To set up which keyboard keys trigger joystick buttons presses, use KEYCONFIG. + +---------------------------------------------------------------------------------------------------- + Screenshots and GIFS +---------------------------------------------------------------------------------------------------- + + While a cartridge is running use: + + CTRL-6 Save a screenshot to desktop + CTRL-7 Capture cartridge label image + CTRL-8 Start recording a video + CTRL-9 Save GIF video to desktop (8 seconds by default) + + You can save a video at any time (it is always recording); CTRL-8 simply resets the video + starting point. To record more than 8 seconds, use the CONFIG command (maximum: 120) + + CONFIG GIF_LEN 60 + + If you would like the recording to reset every time (to create a non-overlapping sequence), + use: + + CONFIG GIF_RESET_MODE 1 + + The gif format can not match 30fps exactly, so PICO-8 instead uses the closest match: 33.3fps. + + If you have trouble saving to the desktop, try configuring an alternative desktop path in + config.txt + +---------------------------------------------------------------------------------------------------- + Sharing Cartridges +---------------------------------------------------------------------------------------------------- + + There are three ways to share carts made in PICO-8: + + 1. Share the .p8 or .p8.png file directly with other PICO-8 users + + Type FOLDER to open the current folder in your host operating system. + + 2. Post the cart on the Lexaloffe BBS to get a web-playable version + + http://www.lexaloffle.com/pico-8.php?page=submit + + 3. Export the cartridge to a stand-alone html/js or native binary player (see the exporters + section for details) + +---------------------------------------------------------------------------------------------------- + SPLORE +---------------------------------------------------------------------------------------------------- + + SPLORE is a built-in utility for browsing and organising both local and bbs (online) + cartridges. Type SPLORE [enter] to launch it, or launch PICO-8 with -splore. + + It is possible to control SPLORE entirely with a joystick: + + LEFT and RIGHT to navigate lists of cartridges + UP AND DOWN to select items in each list + X,O or MENU to launch the cartridge + + While inside a cart, press MENU to favourite a cartridge or exit to splore. If you're using a + keyboard, it's also possible to press F to favourite an item while it is selected in the + cartridge list view. + + When viewing a list of BBS carts, use the top list item to re-download a list of cartridges. If + you are offline, the last downloaded list is displayed, and it is still possible to play any + cartridges you have viewed. + + Once bbs cartridges are run, or have been listed in splore, they are automatically fetched and + cached forever. There is usually no need to manually download and store them. An exception is + carts that load() other carts; an internet connection is needed the first time each cart is + loaded. + + If you have installed PICO-8 on a machine with no internet access, you can also use + INSTALL_GAMES to add a small selection of pre-installed BBS carts to /games. It is also + possible to view any cached carts (sorted by download time) from the local files tab. + + The splore search tab can be used with only a controller; press LEFT and RIGHT to move the + cursor, and UP and DOWN to cycle through letters, numbers and a few symbols. + + To view your online bbs favourites, set them to public (from your account settings), and then + in splore, search for fav:username. + +==================================================================================================== + Editing Tools +==================================================================================================== + + Press ESC to toggle between console and editor.
      Click editing mode tabs at top right to + switch or press ALT+LEFT/RIGHT. + +---------------------------------------------------------------------------------------------------- + Code Editor +---------------------------------------------------------------------------------------------------- + + Hold shift to select (or click and drag with mouse) + CTRL-X, C, V to cut copy or paste selected + CTRL-Z, Y to undo, redo + CTRL-F to search for text in the current tab + CTRL-G to repeat the last search again + CTRL-L to jump to a line number + CTRL-UP, DOWN to jump to start or end + ALT-UP, DOWN to navigate to the previous, next function + CTRL-LEFT, RIGHT to jump by word + CTRL-W,E to jump to start or end of current line + CTRL-D to duplicate current line + TAB to indent a selection (shift to un-indent) + CTRL-B to comment / uncomment selected block + CTRL-U to get help on the keyword under the cursor + + To enter special characters that represent buttons (and other glyphs), use SHIFT-L,R,U,D,O,X + There are 3 additional font entry modes that can be toggled: + + CTRL_J Hiragana // type romaji equivalents (ka, ki, ku..) + CTRL-K Katakana // + shift-0..9 for extra symbols + CTRL-P Puny font // hold shift for the standard font + + By default, puny font characters are encoded as unicode replacements when copying/pasting, + and both upper and lower case ASCII characters are pasted as regular PICO-8 characters. To + copy/paste puny characters as uppercase ASCII, make sure puny mode (CTRL-P) is on. + + :: Code Tabs + + Click the [+] button at the top to add a new tab. Navigate tabs by left-clicking, or with + CTRL-TAB, SHIFT-CTRL-TAB. To remove the last tab, delete any contents and then moving off + it (CTRL-A, DEL, CTRL-TAB) + + When running a cart, a single program is generated by concatenating all tabs in order. + + :: Code Limits + + The number of code tokens is shown at the bottom right. One program can have a maximum of + 8192 tokens. Each token is a word (e.g. variable name) or operator. Pairs of brackets, and + strings each count as 1 token. commas, periods, LOCALs, semi-colons, ENDs, and comments are + not counted. + + Right click to toggle through other stats (character count, compressed size). If a limit is + reached, a warning light will flash. This can be disabled by right-clicking. + +---------------------------------------------------------------------------------------------------- + Sprite Editor +---------------------------------------------------------------------------------------------------- + + The sprite editor is designed to be used both for sprite-wise editing and for freeform + pixel-level editing. The sprite navigator at the bottom of the screen provides an 8x8 + sprite-wise view into the sprite sheet, but it is possible to use freeform tools (pan, select) + when dealing with larger or oddly sized areas. + + :: Draw Tool + + Click and drag on the sprite to plot pixels, or use RMB to select the colour under the + cursor. + + All operations apply only to the visible area, or the section if there is one. + + Hold CTRL to search and replace a colour. + + :: Stamp Tool + + Click to stamp whatever is in the copy buffer. Hold CTRL to treat colour 0 (black) as + transparent. + + :: Select Tool (shortcut: SHIFT or S) + + Click and drag to create a rectangular selection. To remove the selection, press ENTER or + click anywhere. + + If a pixel-wise selection is not present, many operations are instead applied to a + sprite-wise selection, or the visible view. To select sprites, shift-drag in the sprite + navigator. To select the sprite sheet press CTRL-A (repeat to toggle off the bottom half + shared with map data) + + :: Pan Tool (shortcut: SPACE) + + Click and drag to move around the sprite sheet. + + :: Fill Tool + + Fill with the current colour. This applies only to the current selection, or the visible + area if there is no selection. + + :: Shape Tools + + Click the tool button to cycle through: oval, rectangle, line options. + + Hold CTRL to get a filled oval or rectangle.
      Hold SHIFT to snap to circle, square, or + low-integer-ratio line. + + :: Extra keys + + CTRL-Z: Undo + CTRL-C/X: Copy/Cut selected area or selected sprites + CTRL-V: Paste to current sprite location + Q/A,W/Z: Switch to previous/next sprite + 1,2: Switch to previous/next colour + TAB: Toggle fullscreen view + Mousewheel or < and > to zoom (centered in fullscreen) + CTRL-H to toggle hex view (shows sprite index in hexadecimal) + CTRL-G to toggle black grid lines when zoomed in + + :: Operations on selected area or selected sprites + + F: Flip sprite horizontally + V: Flip sprite vertically + R: Rotate (requires a square selection) + Cursor keys to shift (loops if sprite selection) + DEL/BACKSPACE to clear selected area + + :: Sprite Flags + + The 8 coloured circles are sprite flags for the current sprite. These have no particular + meaning, but can be accessed using the @FGET() / @FSET() functions. They are indexed from 0 + starting from the left. + + See @FSET() for more information. + + :: Loading .png files into the sprite sheet + + To load a png file of any size into the sprite sheet, first select the sprite that should + be the top-left corner destination, and then either type "IMPORT IMAGE_FILE.PNG" or drag + and drop the image file into the PICO-8 window. In both cases, the image is colour-fitted + to the current display palette. + +---------------------------------------------------------------------------------------------------- + Map Editor +---------------------------------------------------------------------------------------------------- + + The PICO-8 map is a 128x32 (or 128x64 using shared space) block of 8-bit values. Each value is + shown in the editor as a reference to a sprite (0..255), but you can of course use the data to + represent whatever you like. + + WARNING: The second half of the sprite sheet (banks 2 and 3), and the bottom half of the map + share the same cartridge space. It's up to you how you use the data, but be aware that drawing + on the second half of the sprite sheet could clobber data on the map and vice versa. + + The tools are similar to the ones used in sprite editing mode. Select a sprite and click and + drag to paint values into the map. + + To draw multiple sprites, select from sprite navigator with shift+drag To copy a block of + values, use the selection tool and then stamp tool to paste To pan around the map, use the pan + tool or hold space Q,W to switch to previous/next sprite Mousewheel or < and > to zoom + (centered in fullscreen) CTRL-H to toggle hex view (shows tile values and sprite index in + hexadecimal) + + Moving sprites in the sprite sheet without breaking reference to them in the map is a little + tricky, but possible: + + 1. Press ENTER to clear any map selection + 2. Select the sprites you would like to move (while still in map view), and press Ctrl-X + 3. Select the area of the map you would like to alter (defaults to the top half of the map) + // press ctrl-A twice to select the full map including shared memory + 4. Select the destination sprite (also while still in map view) and press Ctrl-V + + // Note: this operation modifies the undo history for both the map and sprite editors, but + // PICO-8 will try to keep them in sync where possible. Otherwise, changes caused by moving + // map sprites can be reverted by also manually undoing in the sprite editor. + +---------------------------------------------------------------------------------------------------- + SFX Editor +---------------------------------------------------------------------------------------------------- + + There are 64 SFX ("sound effects") in a cartridge, used for both sound and music. + + Each SFX has 32 notes, and each note has: + A frequency (C0..C5) + An instrument (0..7) + A volume (0..7) + An effect (0..7) + + Each SFX also has these properties: + + A play speed (SPD) : the number of 'ticks' to play each note for. + // This means that 1 is fastest, 3 is 3x as slow, etc. + + Loop start and end : this is the note index to loop back and to + // Looping is turned off when the start index >= end index + + When only the first of the 2 numbers is used (and the second one is 0), it is taken to mean + the number of notes to be played. This is normally not needed for sound effects (you can + just leave the remaining notes empty), but is useful for controlling music playback. + + There are 2 modes for editing/viewing a SFX: Pitch mode (more suitable for sound effects) and + tracker mode (more suitable for music). The mode can be changed using the top-left buttons, or + toggled with TAB. + +:: Pitch Mode + + Click and drag on the pitch area to set the frequency for each note, using the currently + selected instrument (indicated by colour). + + Hold shift to apply only the selected instrument. + Hold CTRL to snap entered notes to the C minor pentatonic scale. + Right click to grab the instrument of that note. + +:: Tracker Mode + + Each note shows: frequency octave instrument volume effect + To enter a note, use q2w3er5t6y7ui zsxdcvgbhnjm (piano-like layout) + Hold shift when entering a note to transpose -1 octave .. +1 octave + New notes are given the selected instrument/effect values + To delete a note, use backspace or set the volume to 0 + + Click and then shift-click to select a range that can be copied (CTRL-C) and pasted + (CTRL-V). Note that only the selected attributes are copied. Double-click to select all + attributes of a single note. + + Navigation: + PAGEUP/DOWN or CTRL-UP/DOWN to skip up or down 4 notes + HOME/END to jump to the first or last note + CTRL-LEFT/RIGHT to jump across columns + +:: Controls for both modes + + - + to navigate the current SFX + SPACE to play/stop + SHIFT-SPACE to play from the current SFX quarter (group of 8 notes) + A to release a looping sample + Left click or right click to increase / decrease the SPD or LOOP values + // Hold shift when clicking to increase / decrease by 4 + // Alternatively, click and drag left/right or up/down + Shift-click an instrument, effect, or volume to apply to all notes. + +:: Effects + + 0 none + 1 slide // Slide to the next note and volume + 2 vibrato // Rapidly vary the pitch within one quarter-tone + 3 drop // Rapidly drop the frequency to very low values + 4 fade in // Ramp the volume up from 0 + 5 fade out // Ramp the volume down to 0 + 6 arpeggio fast // Iterate over groups of 4 notes at speed of 4 + 7 arpeggio slow // Iterate over groups of 4 notes at speed of 8 + + If the SFX speed is <= 8, arpeggio speeds are halved to 2, 4 + +:: Filters + + Each SFX has 5 filter switches that can be accessed while in tracker mode: + + NOIZ: Generate pure white noise (applies only to instrument 6) + BUZZ: Various alterations to the waveform to make it sound more buzzy + DETUNE-1: Detunes a second voice to create a flange-like effect + DETUNE-2: Various second voice tunings, mostly up or down an octave + REVERB: Apply an echo with a delay of 2 or 4 ticks + DAMPEN: Low pass filter at 2 different levels + + When BUZZ is used with instrument 6, and NOIZ is off, pure brown noise is generated. + +---------------------------------------------------------------------------------------------------- + Music Editor +---------------------------------------------------------------------------------------------------- + + Music in PICO-8 is controlled by a sequence of 'patterns'. Each pattern is a list of 4 numbers + indicating which SFX will be played on that channel. + +:: Flow control + + Playback flow can be controlled using the 3 buttons at the top right. + + When a pattern has finished playing, the next pattern is played unless: + + - there is no data left to play (music stops) + - a STOP command is set on that pattern (the third button) + - a LOOP BACK command is set (the 2nd button), in which case the music player searches + back for a pattern with the LOOP START command set (the first button) or returns to + pattern 0 if none is found. + + When a pattern has SFXes with different speeds, the pattern finishes playing when the left-most + non-looping channel has finished playing. This can be used to set up double-time drum beats or + unusual polyrhythms. + + For time signatures like 3/4 where less than 32 rows should be played before jumping to the + next pattern, the length of a SFX can be set by adjusting only the first loop position and + leaving the second one as zero. This will show up in the sfx editor as "LEN" (for "Length") + instead of "LOOP". + +:: Copying and Pasting Music + + To select a range of patterns: click once on the first pattern in the pattern navigator, then + shift-click on the last pattern. Selected patterns can be copied and pasted with CTRL-C and + CTRL-V. When pasting into another cartridge, the SFX that each pattern points to will also be + pasted (possibly with a different index) if it does not already exist. + +:: SFX Instruments + + In addition to the 8 built-in instruments, custom instruments can be defined using the first 8 + SFX. Use the toggle button to the right of the instruments to select an index, which will show + up in the instrument channel as green instead of pink. + + When an SFX instrument note is played, it essentially triggers that SFX, but alters the note's + attributes: + + Pitch is added relative to C2 + Volume is multiplied + Effects are applied on top of the SFX instrument's effects + Any filters that are on in the SFX instrument are enabled for that note + + For example, a simple tremolo effect could be implemented by defining an instrument in SFX 0 + that rapidly alternates between volume 5 and 2. When using this instrument to play a note, the + volume can further be altered as usual (via the volume channel or using the fade in/out + effects). In this way, SFX instruments can be used to control combinations of detailed changes + in volume, pitch and texture. + + SFX instruments are only retriggered when the pitch changes, or the previous note has zero + volume. This is useful for instruments that change more slowly over time. For example: a bell + that gradually fades out. To invert this behaviour, effect 3 (normally 'drop') can be used when + triggering the note. All other effect values have their usual meaning when triggering SFX + instruments. + +:: Waveform Instruments + + Waveform instruments function the same way as SFX instruments, but consist of a custom 64-byte + looping waveform. Click on the waveform toggle button in the SFX editor to use SFX 0..7 as a + waveform instrument. In this mode, samples can be drawn with the mouse. + +:: Scale Snapping + + When drawing notes in pitch mode, hold CTRL to snap to the currently defined scale. This is the + C minor pentatonic scale by default, but can be customised using the scale editor mode. There + is a little keyboard icon on the bottom right to toggle this. There are 2 tranpose buttons, 1 + invert button, and 3 scale preset buttons: + + Dim Diminished 7th scale // invert to get a whole-half scale + Maj Major scale // invert to get pentatonic + Who Whole tone scale // invert to get.. the other whole tone scale + + Changing the scale does not alter the current SFX, it is only when drawing new notes with CTRL + held down that the scale is applied. + +==================================================================================================== + Exporters / Importers +==================================================================================================== + +The EXPORT command can be used to generate png, wav files and stand-alone html and native binary +cartridge applications. The output format is inferred from the filename extension (e.g. .png). + +You are free to distribute and use exported cartridges and data as you please, provided that you +have permission from the cartridge author and contributors. + +:: Sprite Sheet / Label (.png) + + > IMPORT BLAH.PNG -- EXPECTS 128X128 PNG AND COLOUR-FITS TO THE PICO-8 PALETTE + > EXPORT BLAH.PNG -- USE THE "FOLDER" COMMAND TO LOCATE THE EXPORTED PNG + + When importing, -x and -y switches can be used to specify the target location in pixels: -s can + be used to shrink the image (3 means scale from 384x384 -> 128x128) + + > IMPORT BLAH.PNG -X 16 -Y 16 -S 3 + + Use the -l switch with IMPORT and EXPORT to instead read and write from the cartridge's label: + + > IMPORT -L BLAH.PNG + + When importing spritesheets or labels, the palette is colour-fitted to the current draw state + palette. + +:: SFX and Music (.wav) + + To export music from the current pattern (when editor mode is MUSIC), or the current SFX: + + > EXPORT FOO.WAV + + To export all SFXs as foo0.wav, foo1.wav .. foo63.wav: + + > EXPORT FOO%D.WAV + +:: MAP and CODE + + A cartridges map or source code can be exported as a single image named .map.png or .lua.png: + + > EXPORT FOO.MAP.PNG + > EXPORT FOO.LUA.PNG + + Map images are 1024x512 (128x32 8x8 sprites). Lua images are sized to fit, but each line is + fixed (and cropped) at 192 pixels wide. + +:: Cartridges (.p8, .p8.png, .p8.rom) + + Using EXPORT to save a cartridge is the same as using SAVE, but without changing the current + working cartridge. This can be useful for example, to save a copy in .p8.png format for + distribution without accidentally continuing to make changes to that file instead of the + original .p8 file. + + EXPORT can also be used to perform cartridge file format conversions from commandline. For + example, from a Linux shell: + + > pico8 foo.p8 -export foo.p8.png + +---------------------------------------------------------------------------------------------------- + Web Applications (.html) +---------------------------------------------------------------------------------------------------- + + To generate a stand-alone html player (mygame.html, mygame.js): + + > EXPORT MYGAME.HTML + + Or just the .js file: + + > EXPORT MYGAME.JS + + Use -f to write the files to a folder called mygame_html, using index.html instead of + mygame.html + + > EXPORT -F MYGAME.HTML + + Optionally provide a custom html template with the -p switch: + + > EXPORT MYGAME.HTML -P ONE_BUTTON + + This will use the file {application data}/pico-8/plates/one_button.html as the html shell, + replacing a special string "##js_file##" (without quotes), with the .js filename, and + optionally replacing the string "##label_file##" with the cart's label image as a data url. + + Use -w to export as .wasm + .js: + + > EXPORT -W MYGAME.HTML + + When exported as .wasm, the page needs to be served by a webserver, rather than just opening it + directly from the local file system in a browser. For most purposes, the default .js export is + fine, but .wasm is slightly smaller and faster. + +---------------------------------------------------------------------------------------------------- + Binary Applications (.bin) +---------------------------------------------------------------------------------------------------- + + To generate stand-alone executables for Windows, Linux (64-bit), Mac and Raspberry Pi: + + > EXPORT MYGAME.BIN + + By default, the cartridge label is used as an icon with no transparency. To specify an icon + from the sprite sheet, use -i and optionally -s and/or -c to control the size and + transparency. + + -I N Icon index N with a default transparent colour of 0 (black). + -S N Size NxN sprites. Size 3 would be produce a 24x24 icon. + -C N Treat colour N as transparent. Use 16 for no transparency. + + For example, to use a 2x2 sprite starting at index 32 in the sprite sheet, using colour 12 as + transparent: + + > EXPORT -I 32 -S 2 -C 12 MYGAME.BIN + + To include an extra file in the output folders and archives, use the -E switch: + + > EXPORT -E README.TXT MYGAME.BIN + + Windows file systems do not support the file metadata needed to create a Linux or Mac + executable. PICO-8 works around this by exporting zip files in a way that preserves the file + attributes. It is therefore recommended that you distribute the outputted zip files as-is to + ensure users on other operating systems can run them. Otherwise, a Linux user who then + downloads the binaries may need to "chmod +x mygame" the file to run it, and Mac user would + need to "chmod +x mygame.app/Contents/MacOS/mygame" + +---------------------------------------------------------------------------------------------------- + Uploading to itch.io +---------------------------------------------------------------------------------------------------- + + If you would like to upload your exported cartridge to itch.io as playable html: + + 1. From inside PICO-8: EXPORT -F MYGAME.HTML + 2. Create a new project from your itch dashboard. + 3. Zip up the folder and upload it (set "This file will be played in the browser") + 4. Embed in page, with a size of 750px x 680px. + 5. Set "Mobile Friendly" on (default orientation) and "Automatically start on page load" on. + // no need for the fullscreen button as the default PICO-8 template has its own. + 6. Set the background (BG2) to something dark (e.g. #232323) and the text to something light (#cccccc) + +---------------------------------------------------------------------------------------------------- + Exporting Multiple Cartridges +---------------------------------------------------------------------------------------------------- + + Up to 32 cartridges can be bundled together by passing them to EXPORT, when generating + stand-alone html or native binary players. + + > EXPORT MYGAME.HTML DAT1.P8 DAT2.P8 GAME2.P8 + + During runtime, the extra carts can be accessed as if they were local files: + + RELOAD(0,0,0X2000, "DAT1.P8") -- LOAD SPRITESHEET FROM DAT1.P8 + LOAD("GAME2.P8") -- LOAD AND RUN ANOTHER CART + + Exported cartridges are unable to load and run BBS cartridges e.g. via LOAD("#FOO") + +---------------------------------------------------------------------------------------------------- + Running EXPORT from the host operating system +---------------------------------------------------------------------------------------------------- + + Use the -export switch when launching PICO-8 to run the exporter in headless mode. File paths + are relative to the current directory rather than the PICO-8 file system. + + Parameters to the EXPORT command are passed along as a single (lowercase) string: + + pico8 mygame.p8 -export "-i 32 -s 2 -c 12 mygame.bin dat0.p8 dat1.p8" + +==================================================================================================== + Lua Syntax Primer +==================================================================================================== + +PICO-8 programs are written using Lua syntax, but do not use the standard Lua library. The +following is a brief summary of essential Lua syntax. + +For more details, or to find out about proper Lua, see www.lua.org. + +:: Comments + + -- USE TWO DASHES LIKE THIS TO WRITE A COMMENT + --[[ MULTI-LINE + COMMENTS ]] + +:: Types and assignment + + Types in Lua are numbers, strings, booleans and tables: + + NUM = 12/100 + S = "THIS IS A STRING" + B = FALSE + T = {1,2,3} + + Numbers in PICO-8 are all 16:16 fixed point. They range from -32768.0 to 32767.99999 + + Hexadecimal notation with optional fractional parts can be used: + + ?0x11 -- 17 + ?0x11.4000 -- 17.25 + + Numbers written in decimal are rounded to the closest fixed point value. To see the 32-bit + hexadecimal representation, use PRINT(TOSTR(VAL,TRUE)): + + ?TOSTR(-32768,TRUE) -- 0x8000.0000 + ?TOSTR(32767.99999,TRUE) -- 0X7FFF.FFFF + + Dividing by zero evaluates to 0x7fff.ffff if positive, or -0x7fff.ffff if negative. + +:: Conditionals + + IF NOT B THEN + PRINT("B IS FALSE") + ELSE + PRINT("B IS NOT FALSE") + END + + -- with ELSEIF + + IF X == 0 THEN + PRINT("X IS 0") + ELSEIF X < 0 THEN + PRINT("X IS NEGATIVE") + ELSE + PRINT("X IS POSITIVE") + END + + IF (4 == 4) THEN PRINT("EQUAL") END + IF (4 ~= 3) THEN PRINT("NOT EQUAL") END + IF (4 <= 4) THEN PRINT("LESS THAN OR EQUAL") END + IF (4 > 3) THEN PRINT("MORE THAN") END + +:: Loops + + Loop ranges are inclusive: + + FOR X=1,5 DO + PRINT(X) + END + -- PRINTS 1,2,3,4,5 + + X = 1 + WHILE(X <= 5) DO + PRINT(X) + X = X + 1 + END + + FOR X=1,10,3 DO PRINT(X) END -- 1,4,7,10 + + FOR X=5,1,-2 DO PRINT(X) END -- 5,3,1 + +:: Functions and Local Variables + + Variables declared as LOCAL are scoped to their containing block of code (for example, inside a + FUNCTION, a FOR loop, or IF THEN END statement). + + Y=0 + FUNCTION PLUSONE(X) + LOCAL Y = X+1 + RETURN Y + END + PRINT(PLUSONE(2)) -- 3 + PRINT(Y) -- 0 + +:: Tables + + In Lua, tables are a collection of key-value pairs where the key and value types can both be + mixed. They can be used as arrays by indexing them with integers. + + A={} -- CREATE AN EMPTY TABLE + A[1] = "BLAH" + A[2] = 42 + A["FOO"] = {1,2,3} + + Arrays use 1-based indexing by default: + + > A = {11,12,13,14} + > PRINT(A[2]) -- 12 + + But if you prefer 0-based arrays, just write something the zeroth slot: + + > A = {[0]=10,11,12,13,14} + + Tables with 1-based integer indexes are special though. The length of such an array can be + found with the # operator, and PICO-8 uses such arrays to implement ADD, DEL, DELI, ALL and + FOREACH functions. + + > PRINT(#A) -- 4 + > ADD(A, 15) + > PRINT(#A) -- 5 + + Indexes that are strings can be written using dot notation + + PLAYER = {} + PLAYER.X = 2 -- is equivalent to PLAYER["X"] + PLAYER.Y = 3 + + See the @{Table_Functions} section for more details. + +:: PICO-8 Shorthand + + PICO-8 also allows several non-standard, shorter ways to write common patterns. + + 1. IF THEN END statements, and WHILE THEN END can be written on a single line with: + + IF (NOT B) I=1 J=2 + + Is equivalent to: + + IF NOT B THEN I=1 J=2 END + + Note that brackets around the short-hand condition are required. + + 2. Assignment operators + + Shorthand assignment operators can also be used if the whole statement is on one line. They can + be constructed by appending a '=' to any binary operator, including arithmetic (+=, -= ..), + bitwise (&=, |= ..) or the string concatenation operator (..=) + + A += 2 -- EQUIVALENT TO: A = A + 2 + + 3. != operator + + Not shorthand, but pico-8 also accepts != instead of ~= for "not equal to" + + PRINT(1 != 2) -- TRUE + PRINT("FOO" == "FOO") -- TRUE (STRING ARE INTERNED) + +==================================================================================================== + PICO-8 Program Structure +==================================================================================================== + + When a PICO-8 programs runs, all of the code from tabs is concatenated (from left to right) and + executed. It is possible to provide your own main loop manually, but typically PICO-8 programs + use 3 special functions that, if defined by the author, are called during program execution: + + + _UPDATE() -- Called once per update at 30fps. + + + _DRAW() -- Called once per visible frame + + + _INIT() -- Called once on program startup. + + A simple program that uses all three might look this: + + FUNCTION _INIT() + -- ALWAYS START ON WHITE + COL = 7 + END + + FUNCTION _UPDATE() + -- PRESS X FOR A RANDOM COLOUR + IF (BTNP(5)) COL = 8 + RND(8) + END + + FUNCTION _DRAW() + CLS(1) + CIRCFILL(64,64,32,COL) + END + + _DRAW() is normally called at 30fps, but if it can not complete in time, PICO-8 will attempt to + run at 15fps and call _UPDATE() twice per visible frame to compensate. + +:: Running PICO-8 at 60fps + + + _UPDATE60() + + When _UPDATE60() Is defined instead of _UPDATE(), PICO-8 will run in 60fps mode: + + - both _UPDATE60() and _DRAW() are called at 60fps
      - half the PICO-8 CPU is available per + frame before dropping down to 30fps + + Note that not all host machines are capable of running at 60fps. Older machines, and / or web + versions might also request PICO-8 to run at 30 fps (or 15 fps), even when the PICO-8 CPU is + not over capacity. In this case, multiple _UPDATE60 calls are made for every _DRAW call in the + same way. + +:: #INCLUDE + + Source code can be injected into a program at cartridge boot (but not during runtime), using + "#INCLUDE FILENAME", where FILENAME is either a plaintext file (containing Lua code), a tab + from another cartridge, or all tabs from another cartridge: + + #INCLUDE SOMECODE.LUA + #INCLUDE ONETAB.P8:1 + #INCLUDE ALLTABS.P8 + + When the cartridge is run, the contents of each included file is treated as if it had been + pasted into the editor in place of that line. + + - Filenames are relative to the current cartridge (so, need to save first)
      - Includes + are not performed recursively.
      - Normal character count and token limits apply. + + When a cartridge is saved as .P8.PNG, or exported to a binary, any included files are + flattened and saved with the cartridge so that there are no external dependencies. + + #INCLUDE can be used for things like: + + - Sharing code between cartridge (libraries or common multi-cart code)
      - Using an + external code editor without needing to edit the .p8 file directly.
      - Treating a + cartridge as a data file that loads a PICO-8 editing tool to modify it.
      - Loading and + storing data generated by an external (non-PICO-8) tool. + +:: Quirks of PICO-8 + + Common gotchas to watch out for: + + - The bottom half of the sprite sheet and bottom half of the map occupy the same memory. // + Best use only one or the other if you're unsure how this works. + + - PICO-8 numbers have limited accuracy and range; the minimum step between numbers is + approximately 0.00002 (0x0.0001), with a range of -32768 (-0x8000) to approximately 32767.99999 + (0x7fff.ffff)
      // If you add 1 to a counter each frame, it will overflow after around 18 + minutes! + + - Lua arrays are 1-based by default, not 0-based. FOREACH starts at TBL[1], not TBL[0]. + + - @COS() and @SIN() take 0..1 instead of 0..PI*2, and @SIN() is inverted. + + - @SGN(0) returns 1. + +:: CPU + + Although PICO-8 does not have a clearly defined CPU, there is a virtual CPU speed of 8MHz, + where each lua vm instruction costs around 2 cycles. Built-in operations like drawing sprites + also have a CPU cost. This means that a PICO-8 cartridge made on a host machine with a powerful + CPU can still be guaranteed to run (reasonably) well on much slower machines, and to not drain + too much battery on phones / when running on the web. + + To view the CPU load while a cartridge is running, press CTRL-P to toggle a CPU meter, or print + out @STAT(1) at the end of each frame. + +==================================================================================================== + API Reference +==================================================================================================== + + PICO-8 is built on the Lua programming language, but does not include the Lua standard library. + Instead, a small api is offered in keeping with PICO-8's minimal design and limited screen + space. For an example program that uses most of the api functions, see /DEMOS/API.P8 + + Functions are written here as: + + FUNCTION_NAME(PARAMETER, [OPTIONAL_PARAMETER]) + + Note that PICO-8 does not have upper or lower case characters -- if you are editing a .p8 or + .lua file directly, function names should all be in lower case. + +---------------------------------------------------------------------------------------------------- + System +---------------------------------------------------------------------------------------------------- + + System functions called from commandline can omit the usual brackets and string quotes. For + example, instead of LOAD("BLAH.P8"), it is possible to write: + + >LOAD BLAH.P8 + + + LOAD(FILENAME, [BREADCRUMB], [PARAM_STR]) + + SAVE(FILENAME) + + Load or save a cartridge + + When loading from a running cartridge, the loaded cartridge is immediately run with + parameter string PARAM_STR (accessible with STAT(6)), and a menu item is inserted and named + BREADCRUMB, that returns the user to the previous cartridge. + + Filenames that start with '#' are taken to be a BBS cart id, that is immediately downloaded + and run: + + > LOAD("#MYGAME_LEVEL2", "BACK TO MAP", "LIVES="..LIVES) + + If the id is the cart's parent post, or a revision number is not specified, then the latest + version is fetched. BBS carts can be loaded from other BBS carts or local carts, but not + from exported carts. + + + FOLDER + + Open the carts folder in the host operating system. + + + LS([DIRECTORY]) + + List .p8 and .p8.png files in given directory (folder), relative to the current directory. + Items that are directories end in a slash (e.g. "foo/"). + + When called from a running cartridge, LS can only be used locally and returns a table of + the results. When called from a BBS cart, LS returns nil. + + Directories can only resolve inside of PICO-8's virtual drive; LS("..") from the root + directory will resolve to the root directory. + + + RUN([PARAM_STR]) + + Run from the start of the program. + + RUN() Can be called from inside a running program to reset. + + When PARAM_STR is supplied, it can be accessed during runtime with STAT(6) + + + STOP([MESSAGE]) + + Stop the cart and optionally print a message. + + + RESUME + + Resume the program. Use R for short. + + Use a single "." from the commandline to advance a single frame. This enters frame-by-frame + mode, that can be read with stat(110). While frame-by-frame mode is active, entering an + empty command (by pressing enter) advances one frames. + + + ASSERT(CONDITION, [MESSAGE]) + + If CONDITION is false, stop the program and print MESSAGE if it is given. This can be + useful for debugging cartridges, by ASSERT()'ing that things that you expect to be true are + indeed true. + + ASSERT(ADDR >= 0 AND ADDR <= 0x7FFF, "OUT OF RANGE") + POKE(ADDR, 42) -- THE MEMORY ADDRESS IS OK, FOR SURE! + + + REBOOT + + Reboot the machine Useful for starting a new project + + + RESET() + + Reset the values in RAM from 0x5f00..0x5f7f to their default values. This includes the + palette, camera position, clipping and fill pattern. If you get lost at the command prompt + because the draw state makes viewing text impossible, try typing RESET! It can also be + called from a running program. + + + INFO() + + Print out some information about the cartridge: Code size, tokens, compressed size + + Also displayed: + + UNSAVED CHANGES When the cartridge in memory differs to the one on disk + EXTERNAL CHANGES When the cartridge on disk has changed since it was loaded + (e.g. by editing the program using a separate text editor) + + + FLIP() + + Flip the back buffer to screen and wait for next frame. This call is not needed when there + is a @_DRAW() or @_UPDATE() callback defined, as the flip is performed automatically. But + when using a custom main loop, a call to FLIP is normally needed: + + ::_:: + CLS() + FOR I=1,100 DO + A=I/50 - T() + X=64+COS(A)*I + Y=64+SIN(A)*I + CIRCFILL(X,Y,1,8+(I/4)%8) + END + FLIP()GOTO _ + + If your program does not call FLIP before a frame is up, and a @_DRAW() callback is not in + progress, the current contents of the back buffer are copied to screen. + + + PRINTH(STR, [FILENAME], [OVERWRITE], [SAVE_TO_DESKTOP]) + + Print a string to the host operating system's console for debugging. + + If filename is set, append the string to a file on the host operating system (in the + current directory by default -- use FOLDER to view). + + Setting OVERWRITE to true causes that file to be overwritten rather than appended. + + Setting SAVE_TO_DESKTOP to true saves to the desktop instead of the current path. + + Use a filename of "@clip" to write to the host's clipboard. + + Use stat(4) to read the clipboard, but the contents of the clipboard are only available + after pressing CTRL-V during runtime (for security). + + + TIME() + + T() + + Returns the number of seconds elapsed since the cartridge was run. + + This is not the real-world time, but is calculated by counting the number of times + + + _UPDATE or @_UPDATE60 is called. Multiple calls of TIME() from the same frame return + + the same result. + + + STAT(X) + + Get system status where X is: + + 0 Memory usage (0..2048) + 1 CPU used since last flip (1.0 == 100% CPU) + 4 Clipboard contents (after user has pressed CTRL-V) + 6 Parameter string + 7 Current framerate + + 46..49 Index of currently playing SFX on channels 0..3 + 50..53 Note number (0..31) on channel 0..3 + 54 Currently playing pattern index + 55 Total patterns played + 56 Ticks played on current pattern + 57 (Boolean) TRUE when music is playing + + 80..85 UTC time: year, month, day, hour, minute, second + 90..95 Local time + + 100 Current breadcrumb label, or nil + 110 Returns true when in frame-by-frame mode + + Audio values 16..26 are the legacy version of audio state queries 46..56. They only report on + the current state of the audio mixer, which changes only ~20 times a second (depending on the + host sound driver and other factors). 46..56 instead stores a history of mixer state at each + tick to give a higher resolution estimate of the currently audible state. + + + EXTCMD(CMD_STR, [P1, P2]) + + Special system command, where CMD_STR is a string: + + "pause" request the pause menu be opened + "reset" request a cart reset + "go_back" return to the previous cart if there is one + "label" set cart label to contents of screen + "screen" save a screenshot + "rec" set video start point + "rec_frames" set video start point in frames mode + "video" save a .gif to desktop + "audio_rec" start recording audio + "audio_end" save recorded audio to desktop (no supported from web) + "shutdown" quit cartridge (from exported binary) + "folder" open current working folder on the host operating system + "set_filename" set the filename for screenshots / gifs / audio recordings + "set_title" set the host window title + + Some commands have optional number parameters: + + "video" and "screen": P1: an integer scaling factor that overrides the system setting. + P2: when > 0, save to the current folder instead of to desktop + + "audio_end" P1: when > 0, save to the current folder instead of to desktop + + :: Recording GIFs + + EXTCMD("REC"), EXTCMD("VIDEO") is the same as using ctrl-8, ctrl-9 and saves a gif to + the desktop using the current GIF_SCALE setting (use CONFIG GIF_SCALE to change). + + The two additional parameters can be used to override these defaults: + + EXTCMD("VIDEO", 4) -- SCALE *4 (512 X 512) + EXTCMD("VIDEO", 0, 1) -- DEFAULT SCALING, SAVE TO USER DATA FOLDER + + The user data folder can be opened with EXTCMD("FOLDER") and defaults to the same path + as the cartridge, or {pico-8 appdata}/appdata/appname for exported binaries. + + Due to the nature of the gif format, all gifs are recorded at 33.3fps, and frames + produced by PICO-8 are skipped or duplicated in the gif to match roughly what the user + is seeing. To record exactly one frame each time @FLIP() is called, regardless of the + runtime framerate or how long it took to generate the frame, use: + + EXTCMD("REC_FRAMES") + + The default filename for gifs (and screenshots, audio) is foo_%d, where foo is the name + of the cartridge, and %d is a number starting at 0 and automatically incremented until + a file of that name does not exist. Use EXTCMD("SET_FILENAME","FOO") to override that + default. If the custom filename includes "%d", then the auto- incrementing number + behaviour is used, but otherwise files are written even if there is an existing file + with the same name. + +---------------------------------------------------------------------------------------------------- + Graphics +---------------------------------------------------------------------------------------------------- + + PICO-8 has a fixed capacity of 128 8x8 sprites, plus another 128 that overlap with the bottom + half of the map data ("shared data"). These 256 sprites are collectively called the sprite + sheet, and can be thought of as a 128x128 pixel image. + + All of PICO-8's drawing operations are subject to the current draw state. The draw state + includes a camera position (for adding an offset to all coordinates), palette mapping (for + recolouring sprites), clipping rectangle, a drawing colour, and a fill pattern. + + The draw state is reset each time a program is run, or by calling @RESET(). + + Colour indexes: + + 0 black 1 dark_blue 2 dark_purple 3 dark_green + 4 brown 5 dark_gray 6 light_gray 7 white + 8 red 9 orange 10 yellow 11 green + 12 blue 13 indigo 14 pink 15 peach + + + CLIP(X, Y, W, H, [CLIP_PREVIOUS]) + + Sets the clipping rectangle in pixels. All drawing operations will be clipped to the + rectangle at x, y with a width and height of w,h. + + CLIP() to reset. + + When CLIP_PREVIOUS is true, clip the new clipping region by the old one. + + + PSET(X, Y, [COL]) + + Sets the pixel at x, y to colour index COL (0..15). + + When COL is not specified, the current draw colour is used. + + FOR Y=0,127 DO + FOR X=0,127 DO + PSET(X, Y, X*Y/8) + END + END + + + PGET(X, Y) + + Returns the colour of a pixel on the screen at (X, Y). + + WHILE (TRUE) DO + X, Y = RND(128), RND(128) + DX, DY = RND(4)-2, RND(4)-2 + PSET(X, Y, PGET(DX+X, DY+Y)) + END + + When X and Y are out of bounds, PGET returns 0. A custom return value can be specified + with: + + POKE(0x5f36, 0x10) + POKE(0x5f5B, NEWVAL) + + + SGET(X, Y) + + SSET(X, Y, [COL]) + + Get or set the colour (COL) of a sprite sheet pixel. + + When X and Y are out of bounds, SGET returns 0. A custom value can be specified with: + + POKE(0x5f36, 0x10) + POKE(0x5f59, NEWVAL) + + + FGET(N, [F]) + + FSET(N, [F], VAL) + + Get or set the value (VAL) of sprite N's flag F. + + F is the flag index 0..7. + + VAL is TRUE or FALSE. + + The initial state of flags 0..7 are settable in the sprite editor, so can be used to create + custom sprite attributes. It is also possible to draw only a subset of map tiles by + providing a mask in @MAP(). + + When F is omitted, all flags are retrieved/set as a single bitfield. + + FSET(2, 1 | 2 | 8) -- SETS BITS 0,1 AND 3 + FSET(2, 4, TRUE) -- SETS BIT 4 + PRINT(FGET(2)) -- 27 (1 | 2 | 8 | 16) + + + PRINT(STR, X, Y, [COL]) + + PRINT(STR, [COL]) + + Print a string STR and optionally set the draw colour to COL. + + Shortcut: written on a single line, ? can be used to call print without brackets: + + ?"HI" + + When X, Y are not specified, a newline is automatically appended. This can be omitted by + ending the string with an explicit termination control character: + + ?"THE QUICK BROWN FOX\0" + + Additionally, when X, Y are not specified, printing text below 122 causes the console to + scroll. This can be disabled during runtime with POKE(0x5f36,0x40). + + PRINT returns the right-most x position that occurred while printing. This can be used to + find out the width of some text by printing it off-screen: + + W = PRINT("HOGE", 0, -20) -- returns 16 + + See @{Appendix A} (P8SCII) for information about control codes and custom fonts. + + + CURSOR(X, Y, [COL]) + + Set the cursor position. + + If COL is specified, also set the current colour. + + + COLOR([COL]) + + Set the current colour to be used by drawing functions. + + If COL is not specified, the current colour is set to 6 + + + CLS([COL]) + + Clear the screen and reset the clipping rectangle. + + COL defaults to 0 (black) + + + CAMERA([X, Y]) + + Set a screen offset of -x, -y for all drawing operations + + CAMERA() to reset + + + CIRC(X, Y, R, [COL]) + + CIRCFILL(X, Y, R, [COL]) + + Draw a circle or filled circle at x,y with radius r + + If r is negative, the circle is not drawn. + + When bits 0x1800.0000 are set in COL, and @0x5F34 & 2 == 2, the circle is drawn inverted. + + + OVAL(X0, Y0, X1, Y1, [COL]) + + OVALFILL(X0, Y0, X1, Y1, [COL]) + + Draw an oval that is symmetrical in x and y (an ellipse), with the given bounding + rectangle. + + + LINE(X0, Y0, [X1, Y1, [COL]]) + + Draw a line from (X0, Y0) to (X1, Y1) + + If (X1, Y1) are not given, the end of the last drawn line is used. + + LINE() with no parameters means that the next call to LINE(X1, Y1) will only set the end + points without drawing. + + CLS() + LINE() + FOR I=0,6 DO + LINE(64+COS(I/6)*20, 64+SIN(I/6)*20, 8+I) + END + + + RECT(X0, Y0, X1, Y1, [COL]) + + RECTFILL(X0, Y0, X1, Y1, [COL]) + + Draw a rectangle or filled rectangle with corners at (X0, Y0), (X1, Y1). + + + RRECT(X, Y, W, H, R, [COL]) + + RRECTFILL(X, Y, W, H, R, [COL]) + + Draw a rounded rectangle or filled rectangle with rounded corners. + + The width (W) and height (H) are in pixels, and must both be more than 0 for the shape to + be drawn. + + Radius (R) defaults to 0, and is the size of the quarter-circle to be drawn at each corner. + The radius used is clamped to fall the range 0 .. min(width,height)/2. + + Draw a red (colour 8) rounded rectangle 40 pixels wide and 30 pixels talls with 3 pixels + missing at each corner (radius 2): + + > rrectfill(50,80,40,30,2,8) + + When bits 0x1800.0000 are set in COL, and (PEEK(0x5F34) & 2) == 2, RRECTFILL is drawn + inverted. + + + PAL(C0, C1, [P]) + + PAL() swaps colour c0 for c1 for one of three palette re-mappings (p defaults to 0): + + 0: Draw Palette + + The draw palette re-maps colours when they are drawn. For example, an orange flower + sprite can be drawn as a red flower by setting the 9th palette value to 8: + + PAL(9,8) -- draw subsequent orange (colour 9) pixels as red (colour 8) + SPR(1,70,60) -- any orange pixels in the sprite will be drawn with red instead + + Changing the draw palette does not affect anything that was already drawn to the + screen. + + 1: Display Palette + + The display palette re-maps the whole screen when it is displayed at the end of a + frame. For example, if you boot PICO-8 and then type PAL(6,14,1), you can see all of + the gray (colour 6) text immediate change to pink (colour 14) even though it has + already been drawn. This is useful for screen-wide effects such as fading in/out. + + 2: Secondary Palette + + Used by @FILLP() for drawing sprites. This provides a mapping from a single 4-bit + colour index to two 4-bit colour indexes. + + PAL() resets all palettes to system defaults (including transparency values) + PAL(P) resets a particular palette (0..2) to system defaults + + + PAL(TBL, [P]) + + When the first parameter of pal is a table, colours are assigned for each entry. For + example, to re-map colour 12 and 14 to red: + + PAL({[12]=9, [14]=8}) + + Or to re-colour the whole screen shades of gray (including everything that is already + drawn): + + PAL({1,1,5,5,5,6,7,13,6,7,7,6,13,6,7,1}, 1) + + Because table indexes start at 1, colour 0 is given at the end in this case. + + + PALT(C, [T]) + + Set transparency for colour index to T (boolean) Transparency is observed by @SPR(), + @SSPR(), @MAP() AND @TLINE() + + PALT(8, TRUE) -- RED PIXELS NOT DRAWN IN SUBSEQUENT SPRITE/TLINE DRAW CALLS + + PALT() resets to default: all colours opaque except colour 0 + + When C is the only parameter, it is treated as a bitfield used to set all 16 values. For + example: to set colours 0 and 1 as transparent: + + PALT(0B1100000000000000) + + + SPR(N, X, Y, [W, H], [FLIP_X], [FLIP_Y]) + + Draw sprite N (0..255) at position X,Y + + W (width) and H (height) are 1, 1 by default and specify how many sprites wide to blit. + + Colour 0 drawn as transparent by default (see @PALT()) + + When FLIP_X is TRUE, flip horizontally. + + When FLIP_Y is TRUE, flip vertically. + + + SSPR(SX, SY, SW, SH, DX, DY, [DW, DH], [FLIP_X], [FLIP_Y]] + + Stretch a rectangle of the sprite sheet (sx, sy, sw, sh) to a destination rectangle on the + screen (dx, dy, dw, dh). In both cases, the x and y values are coordinates (in pixels) of + the rectangle's top left corner, with a width of w, h. + + Colour 0 drawn as transparent by default (see @PALT()) + + dw, dh defaults to sw, sh + + When FLIP_X is TRUE, flip horizontally. + + When FLIP_Y is TRUE, flip vertically. + + + FILLP(P) + + The PICO-8 fill pattern is a 4x4 2-colour tiled pattern observed by: @CIRC() @CIRCFILL() + @RECT() @RECTFILL() @OVAL() @OVALFILL() @PSET() @LINE() + + P is a bitfield in reading order starting from the highest bit. To calculate the value of P + for a desired pattern, add the bit values together: + + .-----------------------. + |32768|16384| 8192| 4096| + |-----|-----|-----|-----| + | 2048| 1024| 512 | 256 | + |-----|-----|-----|-----| + | 128 | 64 | 32 | 16 | + |-----|-----|-----|-----| + | 8 | 4 | 2 | 1 | + '-----------------------' + + For example, FILLP(4+8+64+128+ 256+512+4096+8192) would create a checkerboard pattern. + + This can be more neatly expressed in binary: FILLP(0b0011001111001100). + + The default fill pattern is 0, which means a single solid colour is drawn. + + To specify a second colour for the pattern, use the high bits of any colour parameter: + + FILLP(0b0011010101101000) + CIRCFILL(64,64,20, 0x4E) -- brown and pink + + Additional settings are given in bits 0b0.111: + + 0b0.100 Transparency + + When this bit is set, the second colour is not drawn + + -- checkboard with transparent squares + FILLP(0b0011001111001100.1) + + 0b0.010 Apply to Sprites + + When set, the fill pattern is applied to sprites (spr, sspr, map, tline), using a + colour mapping provided by the secondary palette. + + Each pixel value in the sprite (after applying the draw palette as usual) is taken + to be an index into the secondary palette. Each entry in the secondary palette + contains the two colours used to render the fill pattern. For example, to draw a + white and red (7 and 8) checkerboard pattern for only blue pixels (colour 12) in a + sprite: + + FOR I=0,15 DO PAL(I, I+I*16, 2) END -- all other colours map to themselves + PAL(12, 0x87, 2) -- remap colour 12 in the secondary palette + + FILLP(0b0011001111001100.01) -- checkerboard palette, applied to sprites + SPR(1, 64,64) -- draw the sprite + + 0b0.001 Apply Secondary Palette Globally + + When set, the secondary palette mapping is also applied by all draw functions that + respect fill patterns (circfill, line etc). This can be useful when used in + conjunction with sprite drawing functions, so that the colour index of each sprite + pixel means the same thing as the colour index supplied to the drawing functions. + + FILLP(0b0011001111001100.001) + PAL(12, 0x87, 2) + CIRCFILL(64,64,20,12) -- red and white checkerboard circle + + The secondary palette mapping is applied after the regular draw palette mapping. So + the following would also draw a red and white checkered circle: + + PAL(3,12) + CIRCFILL(64,64,20,3) + + The fill pattern can also be set by setting bits in any colour parameter (for example, the + parameter to @COLOR(), or the last parameter to @LINE(), @RECT() etc. + + POKE(0x5F34, 0x3) -- 0x1 enable fillpattern in high bits 0x2 enable inversion mode + CIRCFILL(64,64,20, 0x114E.ABCD) -- sets fill pattern to ABCD + + When using the colour parameter to set the fill pattern, the following bits are used: + + bit 0x1000.0000 this needs to be set: it means "observe bits 0xf00.ffff" + bit 0x0100.0000 transparency + bit 0x0200.0000 apply to sprites + bit 0x0400.0000 apply secondary palette globally + bit 0x0800.0000 invert the drawing operation (circfill/ovalfill/rectfill/rrectfill) + bits 0x00FF.0000 are the usual colour bits + bits 0x0000.FFFF are interpreted as the fill pattern + +---------------------------------------------------------------------------------------------------- + Table Functions +---------------------------------------------------------------------------------------------------- + + With the exception of PAIRS(), the following functions and the # operator apply only to tables + that are indexed starting from 1 and do not have NIL entries. All other forms of tables can be + considered as hash maps or sets, rather than arrays that have a length. + + + ADD(TBL, VAL, [INDEX]) + + Add value VAL to the end of table TBL. Equivalent to: + + TBL[#TBL + 1] = VAL + + If index is given then the element is inserted at that position: + + FOO={} -- CREATE EMPTY TABLE + ADD(FOO, 11) + ADD(FOO, 22) + PRINT(FOO[2]) -- 22 + + + DEL(TBL, VAL) + + Delete the first instance of value VAL in table TBL. The remaining entries are shifted left + one index to avoid holes. + + Note that VAL is the value of the item to be deleted, not the index into the table. (To + remove an item at a particular index, use DELI instead). DEL returns the deleted item, or + returns no value when nothing was deleted. + + A={1,10,2,11,3,12} + FOR ITEM IN ALL(A) DO + IF (ITEM < 10) THEN DEL(A, ITEM) END + END + FOREACH(A, PRINT) -- 10,11,12 + PRINT(A[3]) -- 12 + + + DELI(TBL, [I]) + + Like @DEL(), but remove the item from table TBL at index I When I is not given, the last + element of the table is removed and returned. + + + COUNT(TBL, [VAL]) + + Returns the length of table t (same as #TBL) When VAL is given, returns the number of + instances of VAL in that table. + + + ALL(TBL) + + Used in FOR loops to iterate over all items in a table (that have a 1-based integer index), + in the order they were added. + + T = {11,12,13} + ADD(T,14) + ADD(T,"HI") + FOR V IN ALL(T) DO PRINT(V) END -- 11 12 13 14 HI + PRINT(#T) -- 5 + + + FOREACH(TBL, FUNC) + + For each item in table TBL, call function FUNC with the item as a single parameter. + + > FOREACH({1,2,3}, PRINT) + + + PAIRS(TBL) + + Used in FOR loops to iterate over table TBL, providing both the key and value for each + item. Unlike @ALL(), PAIRS() iterates over every item regardless of indexing scheme. Order + is not guaranteed. + + T = {["HELLO"]=3, [10]="BLAH"} + T.BLUE = 5; + FOR K,V IN PAIRS(T) DO + PRINT("K: "..K.." V:"..V) + END + + Output: + + K: 10 v:BLAH + K: HELLO v:3 + K: BLUE v:5 + +---------------------------------------------------------------------------------------------------- + Input +---------------------------------------------------------------------------------------------------- + + + BTN([B], [PL]) + + Get button B state for player PL (default 0) + + B: 0..5: left right up down button_o button_x
      PL: player index 0..7 + + Instead of using a number for B, it is also possible to use a button glyph. (In the coded + editor, use Shift-L R U D O X) + + If no parameters supplied, returns a bitfield of all 12 button states for player 0 & 1 // + P0: bits 0..5 P1: bits 8..13 + + Default keyboard mappings to player buttons: + + player 0: [DPAD]: cursors, [O]: Z C N [X]: X V M + player 1: [DPAD]: SFED, [O]: LSHIFT [X]: TAB W Q A + + Although PICO-8 accepts all button combinations, note that it is generally impossible to + press both LEFT and RIGHT at the same time on a physical game controller. On some + controllers, UP + LEFT/RIGHT is also awkward if [X] or [O] could be used instead of UP + (e.g. to jump / accelerate). + + + BTNP(B, [PL]) + + BTNP is short for "Button Pressed"; Instead of being true when a button is held down, BTNP + returns true when a button is down AND it was not down the last frame. It also repeats + after 15 frames, returning true every 4 frames after that (at 30fps -- double that at + 60fps). This can be used for things like menu navigation or grid-wise player movement. + + The state that BTNP reads is reset at the start of each call to @_UPDATE or @_UPDATE60, so + it is preferable to use BTNP from inside one of those functions. + + Custom delays (in frames @ 30fps) can be set by poking the following memory addresses: + + POKE(0X5F5C, DELAY) -- SET THE INITIAL DELAY BEFORE REPEATING. 255 MEANS NEVER REPEAT. + POKE(0X5F5D, DELAY) -- SET THE REPEATING DELAY. + + In both cases, 0 can be used for the default behaviour (delays 15 and 4) + +---------------------------------------------------------------------------------------------------- + Audio +---------------------------------------------------------------------------------------------------- + + + SFX(N, [CHANNEL], [OFFSET], [LENGTH]) + + Play sfx N (0..63) on CHANNEL (0..3) from note OFFSET (0..31 in notes) for LENGTH notes. + + Using negative CHANNEL values have special meanings: + + CHANNEL -1: (default) to automatically choose a channel that is not being used + CHANNEL -2: to stop the given sound from playing on any channel + + N can be a command for the given CHANNEL (or all channels when CHANNEL < 0): + + N -1: to stop sound on that channel + N -2: to release sound on that channel from looping + + SFX(3) -- PLAY SFX 3 + SFX(3,2) -- PLAY SFX 3 ON CHANNEL 2 + SFX(3,-2) -- STOP SFX 3 FROM PLAYING ON ANY CHANNEL + SFX(-1,2) -- STOP WHATEVER IS PLAYING ON CHANNEL 2 + SFX(-2,2) -- RELEASE LOOPING ON CHANNEL 2 + SFX(-1) -- STOP ALL SOUNDS ON ALL CHANNELS + SFX(-2) -- RELEASE LOOPING ON ALL CHANNELS + + + MUSIC(N, [FADE_LEN], [CHANNEL_MASK]) + + Play music starting from pattern N (0..63) + N -1 to stop music + + FADE_LEN is in ms (default: 0). So to fade pattern 0 in over 1 second: + + MUSIC(0, 1000) + + CHANNEL_MASK specifies which channels to reserve for music only. For example, to play only + on channels 0..2: + + MUSIC(0, NIL, 7) -- 1 | 2 | 4 + + Reserved channels can still be used to play sound effects on, but only when that channel + index is explicitly requested by @SFX(). + +---------------------------------------------------------------------------------------------------- + Map +---------------------------------------------------------------------------------------------------- + + The PICO-8 map is a 128x32 grid of 8-bit values, or 128x64 when using the shared memory. When + using the map editor, the meaning of each value is taken to be an index into the sprite sheet + (0..255). However, it can instead be used as a general block of data. + + + MGET(X, Y) + + MSET(X, Y, VAL) + + Get or set map value (VAL) at X,Y + + When X and Y are out of bounds, MGET returns 0, or a custom return value that can be + specified with: + + POKE(0x5f36, 0x10) + POKE(0x5f5a, NEWVAL) + + + MAP(TILE_X, TILE_Y, [SX, SY], [TILE_W, TILE_H], [LAYERS]) + + Draw section of map (starting from TILE_X, TILE_Y) at screen position SX, SY (pixels). + + To draw a 4x2 blocks of tiles starting from 0,0 in the map, to the screen at 20,20: + + MAP(0, 0, 20, 20, 4, 2) + + TILE_W and TILE_H default to the entire map (including shared space when applicable). + + MAP() is often used in conjunction with CAMERA(). To draw the map so that a player object + (at PL.X in PL.Y in pixels) is centered: + + CAMERA(PL.X - 64, PL.Y - 64) + MAP() + + LAYERS is a bitfield. When given, only sprites with matching sprite flags are drawn. For + example, when LAYERS is 0x5, only sprites with flag 0 and 2 are drawn. + + Sprite 0 is taken to mean "empty" and is not drawn. To disable this behaviour, use: + POKE(0x5F36, 0x8) + + + TLINE(X0, Y0, X1, Y1, MX, MY, [MDX, MDY], [LAYERS]) + + Draw a textured line from (X0,Y0) to (X1,Y1), sampling colour values from the map. When + LAYERS is specified, only sprites with matching flags are drawn (similar to MAP()) + + MX, MY are map coordinates to sample from, given in tiles. Colour values are sampled from + the 8x8 sprite present at each map tile. For example: + + 2.0, 1.0 means the top left corner of the sprite at position 2,1 on the map + 2.5, 1.5 means pixel (4,4) of the same sprite + + MDX, MDY are deltas added to mx, my after each pixel is drawn. (Defaults to 0.125, 0) + + The map coordinates (MX, MY) are masked by values calculated by subtracting 0x0.0001 from + the values at address 0x5F38 and 0x5F39. In simpler terms, this means you can loop a + section of the map by poking the width and height you want to loop within, as long as they + are powers of 2 (2,4,8,16..) + + For example, to loop every 8 tiles horizontally, and every 4 tiles vertically: + + POKE(0x5F38, 8) + POKE(0x5F39, 4) + TLINE(...) + + The default values (0,0) gives a masks of 0xff.ffff, which means that the samples will loop + every 256 tiles. + + An offset to sample from (also in tiles) can also be specified at addresses 0x5f3a, 0x5f3b: + + POKE(0x5F3A, OFFSET_X) + POKE(0x5F3B, OFFSET_Y) + + Sprite 0 is taken to mean "empty" and not drawn. To disable this behaviour, use: + POKE(0x5F36, 0x8) + + :: Setting TLINE Precision + + By default, tline coordinates (mx,my,mdx,mdy) are expressed in tiles. This means that 1 + pixel is 0.125, and only 13 bits are used for the fractional part. If more precision is + needed, the coordinate space can be adjusted to allow more bits for the fractional part. + This can be useful for things like textured walls, where the accumulated error from mdx,mdy + rounding maybe become visible when viewed up close. + + The number of bits used for the fractional part of each pixel is stored in a special + register that can be adjusted by calling TLINE once with a single argument: + + TLINE(16) -- MX,MY,MDX,MDY expressed in pixels + +---------------------------------------------------------------------------------------------------- + Memory +---------------------------------------------------------------------------------------------------- + + PICO-8 has 3 types of memory: + + 1. Base RAM (64k): see layout below. Access with PEEK() POKE() MEMCPY() MEMSET() + 2. Cart ROM (32k): same layout as base ram until 0x4300 + 3. Lua RAM (2MB): compiled program + variables + + Technical note: While using the editor, the data being modified is in cart rom, but api + functions such as @SPR() and @SFX() only operate on base ram. PICO-8 automatically copies + cart rom to base ram (i.e. calls @RELOAD()) in 3 cases:
      1. When a cartridge is + loaded
      2. When a cartridge is run
      3. When exiting any of the editor modes // can + turn off with: poke(0x5f37,1)
      + + :: Base RAM Memory Layout + + 0X0 GFX + 0X1000 GFX2/MAP2 (SHARED) + 0X2000 MAP + 0X3000 GFX FLAGS + 0X3100 SONG + 0X3200 SFX + 0X4300 USER DATA + 0X5600 CUSTOM FONT (IF ONE IS DEFINED) + 0X5E00 PERSISTENT CART DATA (256 BYTES) + 0X5F00 DRAW STATE + 0X5F40 HARDWARE STATE + 0X5F80 GPIO PINS (128 BYTES) + 0X6000 SCREEN (8K) + 0x8000 USER DATA + + User data has no particular meaning and can be used for anything via @MEMCPY(), @PEEK() & + @POKE(). Persistent cart data is mapped to 0x5e00..0x5eff but only stored if @CARTDATA() + has been called. Colour format (gfx/screen) is 2 pixels per byte: low bits encode the left + pixel of each pair. Map format is one byte per tile, where each byte normally encodes a + sprite index. + + :: Remapping Graphics and Map Data + + The GFX, MAP and SCREEN memory areas can be reassigned by setting values at the following + addresses: + + 0X5F54 GFX: can be 0x00 (default) or 0x60 (use the screen memory as the spritesheet) + 0X5F55 SCREEN: can be 0x60 (default) or 0x00 (use the spritesheet as screen memory) + 0X5F56 MAP: can be 0x20 (default) or 0x10..0x2f, or 0x80 and above. + 0X5F57 MAP SIZE: map width. 0 means 256. Defaults to 128. + + Addresses can be expressed in 256 byte increments. So 0x20 means 0x2000, 0x21 means 0x2100 + etc. Map addresses 0x30..0x3f are taken to mean 0x10..0x1f (shared memory area). Map data + can only be contained inside the memory regions 0x1000..0x2fff, 0x8000..0xffff, and the + map height is determined to be the largest possible size that fits in the given region. + + GFX and SCREEN addresses can additionally be mapped to upper memory locations 0x80, 0xA0, + 0xC0, 0xE0, with the constraint that MAP can not overlap with that address (in this case, + the conflicting GFX and/or SCREEN mappings are kicked back to their default mapping). + + GFX and SCREEN memory mapping happens at a low level which also affects memory access + functions (peek, poke, memcpy). The 8k memory blocks starting at 0x0 and 0x6000 can be + thought of as pointers to a separate video ram, and setting the values at 0X5F54 and + 0X5F56 alters those pointers. + + + PEEK(ADDR, [N]) + + Read a byte from an address in base ram. If N is specified, PEEK() returns that number of + results (max: 8192). For example, to read the first 2 bytes of video memory: + + A, B = PEEK(0x6000, 2) + + + POKE(ADDR, VAL1, VAL2, ...) + + Write one or more bytes to an address in base ram. If more than one parameter is provided, + they are written sequentially (max: 8192). + + + PEEK2(ADDR) + + POKE2(ADDR, VAL) + + PEEK4(ADDR) + + POKE4(ADDR, VAL) + + 16-bit and 32-bit versions of PEEK and POKE. Read and write one number (VAL) in + little-endian format: + + 16 bit: 0xffff.0000 + 32 bit: 0xffff.ffff + + ADDR does not need to be aligned to 2 or 4-byte boundaries. + + Alternatively, the following operators can be used to peek (but not poke), and are slightly + faster: + + @ADDR -- PEEK(ADDR) + %ADDR -- PEEK2(ADDR) + $ADDR -- PEEK4(ADDR) + + + MEMCPY(DEST_ADDR, SOURCE_ADDR, LEN) + + Copy LEN bytes of base ram from source to dest. Sections can be overlapping + + + RELOAD(DEST_ADDR, SOURCE_ADDR LEN, [FILENAME]) + + Same as MEMCPY, but copies from cart rom. + + The code section ( >= 0x4300) is protected and can not be read. + + If filename specified, load data from a separate cartridge. In this case, the cartridge + must be local (BBS carts can not be read in this way). + + + CSTORE(DEST_ADDR, SOURCE_ADDR, LEN, [FILENAME]) + + Same as memcpy, but copies from base ram to cart rom. + + CSTORE() is equivalent to CSTORE(0, 0, 0x4300) + + The code section ( >= 0x4300) is protected and can not be written to. + + If FILENAME is specified, the data is written directly to that cartridge on disk. Up to 64 + cartridges can be written in one session. See @{Cartridge Data} for more information. + + + MEMSET(DEST_ADDR, VAL, LEN) + + Write the 8-bit value VAL into memory starting at DEST_ADDR, for LEN bytes. + + For example, to fill half of video memory with 0xC8: + + > MEMSET(0x6000, 0xC8, 0x1000) + +---------------------------------------------------------------------------------------------------- + Math +---------------------------------------------------------------------------------------------------- + + + MAX(X, Y) + + MIN(X, Y) + + MID(X, Y, Z) + + Returns the maximum, minimum, or middle value of parameters + + > ?MID(7,5,10) -- 7 + + + FLR(X) + + > ?FLR ( 4.1) --> 4 + > ?FLR (-2.3) --> -3 + + + CEIL(X) + + Returns the closest integer that is equal to or below x + + > ?CEIL( 4.1) --> 5 + > ?CEIL(-2.3) --> -2 + + + COS(X) + + SIN(X) + + Returns the cosine or sine of x, where 1.0 means a full turn. For example, to animate a + dial that turns once every second: + + FUNCTION _DRAW() + CLS() + CIRC(64, 64, 20, 7) + X = 64 + COS(T()) * 20 + Y = 64 + SIN(T()) * 20 + LINE(64, 64, X, Y) + END + + PICO-8's SIN() returns an inverted result to suit screenspace (where Y means "DOWN", as + opposed to mathematical diagrams where Y typically means "UP"). + + > SIN(0.25) -- RETURNS -1 + + To get conventional radian-based trig functions without the y inversion, paste the + following snippet near the start of your program: + + P8COS = COS FUNCTION COS(ANGLE) RETURN P8COS(ANGLE/(3.1415*2)) END + P8SIN = SIN FUNCTION SIN(ANGLE) RETURN -P8SIN(ANGLE/(3.1415*2)) END + + + ATAN2(DX, DY) + + Converts DX, DY into an angle from 0..1 + + As with cos/sin, angle is taken to run anticlockwise in screenspace. For example: + + > ?ATAN(0, -1) -- RETURNS 0.25 + + ATAN2 can be used to find the direction between two points: + + X=20 Y=30 + FUNCTION _UPDATE() + IF (BTN(0)) X-=2 + IF (BTN(1)) X+=2 + IF (BTN(2)) Y-=2 + IF (BTN(3)) Y+=2 + END + + FUNCTION _DRAW() + CLS() + CIRCFILL(X,Y,2,14) + CIRCFILL(64,64,2,7) + + A=ATAN2(X-64, Y-64) + PRINT("ANGLE: "..A) + LINE(64,64, + 64+COS(A)*10, + 64+SIN(A)*10,7) + END + + + SQRT(X) + + Return the square root of x + + + ABS(X) + + Returns the absolute (positive) value of x + + + RND(X) + + Returns a random number n, where 0 <= n < x + + If you want an integer, use flr(rnd(x)). If x is an array-style table, return a random + element between table[1] and table[#table]. + + + SRAND(X) + + Sets the random number seed. The seed is automatically randomized on cart startup. + + FUNCTION _DRAW() + CLS() + SRAND(33) + FOR I=1,100 DO + PSET(RND(128),RND(128),7) + END + END + + :: Bitwise Operations + + Bitwise operations are similar to logical expressions, except that they work at the bit + level. + + Say you have two numbers (written here in binary using the "0b" prefix): + + X = 0b1010 + Y = 0b0110 + + A bitwise AND will give you bits set when the corresponding bits in X /and/ Y are both set + + > PRINT(BAND(X,Y)) -- RESULT:0B0010 (2 IN DECIMAL) + + There are 9 bitwise functions available in PICO-8: + + BAND(X, Y) -- BOTH BITS ARE SET + BOR(X, Y) -- EITHER BIT IS SET + BXOR(X, Y) -- EITHER BIT IS SET, BUT NOT BOTH OF THEM + BNOT(X) -- EACH BIT IS NOT SET + SHL(X, N) -- SHIFT LEFT N BITS (ZEROS COME IN FROM THE RIGHT) + SHR(X, N) -- ARITHMETIC RIGHT SHIFT (THE LEFT-MOST BIT STATE IS DUPLICATED) + LSHR(X, N) -- LOGICAL RIGHT SHIFT (ZEROS COMES IN FROM THE LEFT) + ROTL(X, N) -- ROTATE ALL BITS IN X LEFT BY N PLACES + ROTR(X, N) -- ROTATE ALL BITS IN X RIGHT BY N PLACES + + Operator versions are also available: & | ^^ ~ << >> >>> <<> >>< + + For example: PRINT(67 & 63) -- result:3 equivalent to BAND(67,63) + + Operators are slightly faster than their corresponding functions. They behave exactly the + same, except that if any operands are not numbers the result is a runtime error (the + function versions instead default to a value of 0). + + :: Integer Division + + Integer division can be performed with a \ + + > PRINT(9\2) -- RESULT:4 EQUIVALENT TO FLR(9/2) + +---------------------------------------------------------------------------------------------------- + Custom Menu Items +---------------------------------------------------------------------------------------------------- + + + MENUITEM(INDEX, [LABEL], [CALLBACK]) + + Add or update an item to the pause menu. + + INDEX should be 1..5 and determines the order each menu item is displayed. + + LABEL should be a string up to 16 characters long + + CALLBACK is a function called when the item is selected by the user. If the callback + returns true, the pause menu remains open. + + When no label or function is supplied, the menu item is removed. + + MENUITEM(1, "RESTART PUZZLE", + FUNCTION() RESET_PUZZLE() SFX(10) END + ) + + The callback takes a single argument that is a bitfield of L,R,X button presses. + + MENUITEM(1, "FOO", + FUNCTION(B) IF (B&1 > 0) THEN PRINTH("LEFT WAS PRESSED") END END + ) + + To filter button presses that are able to trigger the callback, a mask can be supplied in + bits 0xff00 of INDEX. For example, to disable L, R for a particular menu item, set bits + 0x300 in the index: + + MENUITEM(2 | 0x300, "RESET PROGRESS", + FUNCTION() DSET(0,0) END + ) + + Menu items can be updated, added or removed from within callbacks: + + MENUITEM(3, "SCREENSHAKE: OFF", + FUNCTION() + SCREENSHAKE = NOT SCREENSHAKE + MENUITEM(NIL, "SCREENSHAKE: "..(SCREENSHAKE AND "ON" OR "OFF")) + RETURN TRUE -- DON'T CLOSE + END + ) + +---------------------------------------------------------------------------------------------------- + Strings and Type Conversion +---------------------------------------------------------------------------------------------------- + + Strings in Lua are written either in single or double quotes or with matching [[ ]] brackets: + + S = "THE QUICK" + S = 'BROWN FOX'; + S = [[ + JUMPS OVER + MULTIPLE LINES + ]] + + The length of a string (number of characters) can be retrieved using the # operator: + + >PRINT(#S) + + Strings can be joined using the .. operator. Joining numbers converts them to strings. + + >PRINT("THREE "..4) --> "THREE 4" + + When used as part of an arithmetic expression, string values are converted to numbers: + + >PRINT(2+"3") --> 5 + + + TOSTR(VAL, [FORMAT_FLAGS]) + + Convert VAL to a string. + + FORMAT_FLAGS is a bitfield: + + 0x1: Write the raw hexadecimal value of numbers, functions or tables. + 0x2: Write VAL as a signed 32-bit integer by shifting it left by 16 bits. + + TOSTR(NIL) returns "[nil]" + + TOSTR() returns "" + + TOSTR(17) -- "17" + TOSTR(17,0x1) -- "0x0011.0000" + TOSTR(17,0x3) -- "0x00110000" + TOSTR(17,0x2) -- "1114112" + + + TONUM(VAL, [FORMAT_FLAGS]) + + Converts VAL to a number. + + TONUM("17.5") -- 17.5 + TONUM(17.5) -- 17.5 + TONUM("HOGE") -- NO RETURN VALUE + + FORMAT_FLAGS is a bitfield: + + 0x1: Read the string as written in (unsigned, integer) hexadecimal without the "0x" prefix + Non-hexadecimal characters are taken to be '0'. + 0x2: Read the string as a signed 32-bit integer, and shift right 16 bits. + 0x4: When VAL can not be converted to a number, return 0 + + TONUM("FF", 0x1) -- 255 + TONUM("1114112", 0x2) -- 17 + TONUM("1234abcd", 0x3) -- 0x1234.abcd + + + CHR(VAL0, VAL1, ...) + + Convert one or more ordinal character codes to a string. + + CHR(64) -- "@" + CHR(104,101,108,108,111) -- "hello" + + + ORD(STR, [INDEX], [NUM_RESULTS]) + + Convert one or more characters from string STR to their ordinal (0..255) character codes. + + Use the INDEX parameter to specify which character in the string to use. When INDEX is out + of range or str is not a string, ORD returns nil. + + When NUM_RESULTS is given, ORD returns multiple values starting from INDEX. + + ORD("@") -- 64 + ORD("123",2) -- 50 (THE SECOND CHARACTER: "2") + ORD("123",2,3) -- 50,51,52 + + + SUB(STR, POS0, [POS1]) + + Grab a substring from string str, from pos0 up to and including pos1. When POS1 is not + specified, the remainder of the string is returned. When POS1 is specified, but not a + number, a single character at POS0 is returned. + + S = "THE QUICK BROWN FOX" + PRINT(SUB(S,5,9)) --> "QUICK" + PRINT(SUB(S,5)) --> "QUICK BROWN FOX" + PRINT(SUB(S,5,TRUE)) --> "Q" + + + SPLIT(STR, [SEPARATOR], [CONVERT_NUMBERS]) + + Split a string into a table of elements delimited by the given separator (defaults to ","). + When separator is a number n, the string is split into n-character groups. When + convert_numbers is true, numerical tokens are stored as numbers (defaults to true). Empty + elements are stored as empty strings. + + SPLIT("1,2,3") -- {1,2,3} + SPLIT("ONE:TWO:3",":",FALSE) -- {"ONE","TWO","3"} + SPLIT("1,,2,") -- {1,"",2,""} + + + TYPE(VAL) + + Returns the type of val as a string. + + > PRINT(TYPE(3)) + NUMBER + > PRINT(TYPE("3")) + STRING + +---------------------------------------------------------------------------------------------------- + Cartridge Data +---------------------------------------------------------------------------------------------------- + + Using @CARTDATA(), @DSET(), AND @DGET(), 64 numbers (256 bytes) of persistent data can be + stored on the user's PICO-8 that persists after the cart is unloaded or PICO-8 is shutdown. + This can be used as a lightweight way to store things like high scores or to save player + progress. It can also be used to share data across cartridges / cartridge versions. + + If more than 256 bytes is needed, it is also possible to write directly to the cartridge using + @CSTORE(). The disadvantage is that the data is tied to that particular version of the + cartridge. e.g. if a game is updated, players will lose their savegames. Also, some space in + the data sections of the cartridge need to be left available to use as storage. + + Another alternative is to write directly to a second cartridge by specifying a fourth parameter + to @CSTORE(). This requires a cart swap (which in reality only means the user needs to watch a + spinny cart animation for 1 second). + + CSTORE(0,0,0X2000, "SPRITE SHEET.P8") + -- LATER, RESTORE THE SAVED DATA: + RELOAD(0,0,0X2000, "SPRITE SHEET.P8") + + + CARTDATA(ID) + + Opens a permanent data storage slot indexed by ID that can be used to store and retrieve up + to 256 bytes (64 numbers) worth of data using @DSET() and @DGET(). + + CARTDATA("ZEP_DARK_FOREST") + DSET(0, SCORE) + + ID is a string up to 64 characters long, and should be unusual enough that other + cartridges do not accidentally use the same id. Legal characters are a..z, 0..9 and + underscore (_) + + Returns true if data was loaded, otherwise false. + + CARTDATA can be called once per cartridge execution, and so only a single data slot can be + used. + + Once a cartdata ID has been set, the area of memory 0X5E00..0X5EFF is mapped to permanent + storage, and can either be accessed directly or via @DGET()/@DSET(). + + There is no need to flush written data -- it is automatically saved to permanent storage + even if modified by directly @POKE()'ing 0X5E00..0X5EFF. + + + DGET(INDEX) + + Get the number stored at INDEX (0..63) + + Use this only after you have called @CARTDATA() + + + DSET(INDEX, VALUE) + + Set the number stored at index (0..63) + + Use this only after you have called @CARTDATA() + +---------------------------------------------------------------------------------------------------- + GPIO +---------------------------------------------------------------------------------------------------- + + GPIO stands for "General Purpose Input Output", and allows machines to communicate with each + other. PICO-8 maps bytes in the range 0x5f80..0x5fff to gpio pins that can be + + + POKE()ed (to output a value -- e.g. to make an LED light up) or @PEEK()ed (e.g. to read + + the state of a switch). + + GPIO means different things for different host platforms: + + CHIP: 0x5f80..0x5f87 mapped to xio-p0..xio-p7 + Pocket CHIP: 0x5f82..0x5f87 mapped to GPIO1..GPIO6 + // xio-p0 & p1 are exposed inside the prototyping area inside the case. + Raspberry Pi: 0x5f80..0x5f9f mapped to wiringPi pins 0..31 + // see http://wiringpi.com/pins/ for mappings on different models. + // also: watch out for BCM vs. WiringPi GPIO indexing! + + CHIP and Raspberry Pi values are all digital: 0 (LOW) and 255 (HIGH) + + A program to blink any LEDs attached on and off: + + T = 0 + FUNCTION _DRAW() + CLS(5) + FOR I=0,7 DO + VAL = 0 + IF (T % 2 < 1) VAL = 255 + POKE(0X5F80 + I, VAL) + CIRCFILL(20+I*12,64,4,VAL/11) + END + T += 0.1 + END + + :: Serial + + For more precise timing, the @SERIAL() command can be used. GPIO writes are buffered and + dispatched at the end of each frame, allowing clock cycling at higher and/or more regular + speeds than is possible by manually bit-banging using @POKE() calls. + + + SERIAL(CHANNEL, ADDRESS, LENGTH) + + CHANNEL: + 0x000..0x0fe corresponds to gpio pin numbers; send 0x00 for LOW or 0xFF for HIGH + 0x0ff delay; length is taken to mean "duration" in microseconds (excl. overhead) + 0x400..0x401 ws281x LED string (experimental) + + ADDRESS: The PICO-8 memory location to read from / write to. + + LENGTH: Number of bytes to send. 1/8ths are allowed to send partial bit strings. + + For example, to send a byte one bit at a time to a typical APA102 LED string: + + VAL = 42 -- VALUE TO SEND + DAT = 16 CLK = 15 -- DATA AND CLOCK PINS DEPEND ON DEVICE + POKE(0X4300,0) -- DATA TO SEND (SINGLE BYTES: 0 OR 0XFF) + POKE(0X4301,0XFF) + FOR B=0,7 DO + -- SEND THE BIT (HIGH FIRST) + SERIAL(DAT, BAND(VAL, SHL(1,7-B))>0 AND 0X4301 OR 0X4300, 1) + -- CYCLE THE CLOCK + SERIAL(CLK, 0X4301) + SERIAL(0XFF, 5) -- DELAY 5 + SERIAL(CLK, 0X4300) + SERIAL(0XFF, 5) -- DELAY 5 + END + + Additional channels are available for bytestreams to and from the host operating system. + These are intended to be most useful for UNIX-like environments while developing + toolchains, and are not available while running a BBS or exported cart [1]. Maximum + transfer rate in all cases is 64k/sec (blocks cpu). + + 0x800 dropped file // stat(120) returns TRUE when data is available + 0x802 dropped image // stat(121) returns TRUE when data is available + 0x804 stdin + 0x805 stdout + 0x806 file specified with: pico8 -i filename + 0x807 file specified with: pico8 -o filename + + Image files dropped into PICO-8 show up on channel 0x802 as a bytestream with a special + format: The first 4 bytes are the image's width and height (2 bytes each little-endian, + like PEEK2), followed by the image in reading order, one byte per pixel, colour-fitted to + the display palette at the time the file was dropped. + + [1] Channels 0x800 and 0x802 are available from exported binaries, but with a maximum file + size of 256k, or 128x128 for images. + + :: HTML + + Cartridges exported as HTML / .js use a global array of integers (pico8_gpio) to represent + gpio pins. The shell HTML should define the array: + + var pico8_gpio = Array(128); + +---------------------------------------------------------------------------------------------------- + Mouse and Keyboard Input +---------------------------------------------------------------------------------------------------- + + // EXPERIMENTAL -- but mostly working on all platforms + + Mouse and keyboard input can be achieved by enabling devkit input mode: + + POKE(0x5F2D, flags) -- where flags are: + + 0x1 Enable + 0x2 Mouse buttons trigger btn(4)..btn(6) + 0x4 Pointer lock (use stat 38..39 to read movements) + + Note that not every PICO-8 will have a keyboard or mouse attached to it, so when posting carts + to the Lexaloffle BBS, it is encouraged to make keyboard and/or mouse control optional and off + by default, if possible. When devkit input mode is enabled, a message is displayed to BBS users + warning them that the program may be expecting input beyond the standard 6-button controllers. + + The state of the mouse and keyboard can be found in stat(x): + + STAT(30) -- (Boolean) True when a keypress is available + STAT(31) -- (String) character returned by keyboard + STAT(32) -- Mouse X + STAT(33) -- Mouse Y + STAT(34) -- Mouse buttons (bitfield) + STAT(36) -- Mouse wheel event + STAT(38) -- Relative x movement (in host desktop pixels) -- requires flag 0x4 + STAT(39) -- Relative y movement (in host desktop pixels) -- requires flag 0x4 + +---------------------------------------------------------------------------------------------------- + Additional Lua Features +---------------------------------------------------------------------------------------------------- + +PICO-8 also exposes 2 features of Lua for advanced users: Metatables and Coroutines. + +For more information, please refer to the Lua 5.2 manual. + +:: Metatables + + Metatables can be used to define the behaviour of objects under particular operations. For + example, to use tables to represent 2D vectors that can be added together, the '+' operator is + redefined by defining an "__add" function for the metatable: + + VEC2D={ + __ADD=FUNCTION(A,B) + RETURN {X=(A.X+B.X), Y=(A.Y+B.Y)} + END + } + + V1={X=2,Y=9} SETMETATABLE(V1, VEC2D) + V2={X=1,Y=5} SETMETATABLE(V2, VEC2D) + V3 = V1+V2 + PRINT(V3.X..","..V3.Y) -- 3,14 + + + SETMETATABLE(TBL, M) + + Set table TBL metatable to M + + + GETMETATABLE(TBL) + + return the current metatable for table t, or nil if none is set + + + RAWSET(TBL, KEY, VALUE) + + RAWGET(TBL, KEY) + + RAWEQUAL(TBL1,TBL2 + + RAWLEN(TBL) + + Raw access to the table, as if no metamethods were defined. + +:: Function Arguments + + The list of function arguments can be specifed with ... + + FUNCTION PREPRINT(PRE, S, ...) + LOCAL S2 = PRE..TOSTR(S) + PRINT(S2, ...) -- PASS THE REMAINING ARGUMENTS ON TO PRINT() + END + + To accept a variable number of arguments, use them to define a table and/or use Lua's select() + function. select(index, ...) returns all of the arguments after index. + + FUNCTION FOO(...) + LOCAL ARGS={...} -- BECOMES A TABLE OF ARGUMENTS + FOREACH(ARGS, PRINT) + ?SELECT("#",...) -- ALTERNATIVE WAY TO COUNT THE NUMBER OF ARGUMENTS + FOO2(SELECT(3,...)) -- PASS ARGUMENTS FROM 3 ONWARDS TO FOO2() + END + +:: Coroutines + + Coroutines offer a way to run different parts of a program in a somewhat concurrent way, + similar to threads. A function can be called as a coroutine, suspended with + + + YIELD() any number of times, and then resumed again at the same points. + + FUNCTION HEY() + PRINT("DOING SOMETHING") + YIELD() + PRINT("DOING THE NEXT THING") + YIELD() + PRINT("FINISHED") + END + + C = COCREATE(HEY) + FOR I=1,3 DO CORESUME(C) END + + + COCREATE(F) + + Create a coroutine for function f. + + + CORESUME(C, [P0, P1 ..]) + + Run or continue the coroutine c. Parameters p0, p1.. are passed to the coroutine's + function. + + Returns true if the coroutine completes without any errors Returns false, error_message if + there is an error. + + ** Runtime errors that occur inside coroutines do not cause the program to stop running. It + is a good idea to wrap CORESUME() inside an @ASSERT(). If the assert fails, it will print + the error message generated by coresume. + + + ASSERT(CORESUME(C)) + + + COSTATUS(C) + + Return the status of coroutine C as a string: + "running" + "suspended" + "dead" + + + YIELD + + Suspend execution and return to the caller. + +==================================================================================================== + Appendix +==================================================================================================== + +---------------------------------------------------------------------------------------------------- + Appendix A: P8SCII Control Codes +---------------------------------------------------------------------------------------------------- + + When printed with @PRINT(), some characters have a special meaning that can be used to alter + things like the cursor position and text rendering style. Control characters in PICO-8 are + CHR(0)..CHR(15) and can be written as an escaped sequence ("\n" for newline etc.) + + Some of the control codes below take parameters which are written using a scheme that is a + superset of hexadecimal format. That is, '0'..'f' also mean 0..15. But characters after 'f' are + also accepted: 'g' means 16 and so on. Such parameters are written below as P0, P1. + + For example, to print with a blue background ("\#c") and dark gray foreground ("\f5"): + + PRINT("\#C\F5 BLUE ") + + The only side-effects on the draw state are changes in cursor position and foreground color; + all other attributes are reset each time @PRINT() is called. + + :: Control Codes + + 0 "\0" terminate printing + 1 "\*" repeat next character P0 times. ?"\*3a" --> aaa + 2 "\#" draw solid background with colour P0 + 3 "\-" shift cursor horizontally by P0-16 pixels + 4 "\|" shift cursor vertically by P0-16 pixels + 5 "\+" shift cursor by P0-16, P1-16 pixels + 6 "\^" special command (see below) + 7 "\a" audio (see below) + 8 "\b" backspace + 9 "\t" tab + a "\n" newline + b "\v" decorate previous character (see below) + c "\f" set foreground colour + d "\r" carriage return + e "\014" switch to font defined at 0x5600 + f "\015" switch to default font + + :: Special Commands + + These commands all start with "\^" and take up to 2 parameters (P0, P1) For example, to + clear screen to dark blue: print("\^c1") + + 1..9 skip 1,2,4,8,16,32..256 frames + c cls to colour P0, set cursor to 0,0 + d set delay to P0 frames for every character printed + g set cursor position to home + h set home to cursor position + j jump to absolute P0*4, P1*4 (in screen pixels) + r set rhs character wrap boundary to P0*4 + s set tab stop width to P0 pixels (used by "\t") + u underline + x set character width (default: 4) + y set character height (default: 6) + + :: Rendering mode options + + // prefix these with "-" to disable: e.g. ?"\^i on \^-i off " + + w wide mode: scales by 2x1 + t tall mode: scales by 1x2 + = stripey mode: when wide or tall, draw only even pixels + p pinball mode: equivalent to setting wide, tall and stripey + i invert + b border: toggle 1px padding on left and top // on by default + # solid background // off by default, but enabled automatically by \# + + :: Raw memory writes + + The following two commands take 4-character hex parameters: + + @addrnnnn[binstr] poke nnnn bytes to address addr + !addr[binstr] poke all remaining characters to address addr + + For example, to write 4 bytes to video memory halfway down the screen: + + >?"\^@70000004xxxxhello" + + :: One-off characters + + Character data can be specified and printed in-line using \^. followed by 8 bytes of + raw binary data, or \^: followed by 8 2-digit hexadecimal values. The data format is + the same as custom fonts; each byte specifies a row of 1-bit pixel values, with the + low bit on the left. + + \^.[8 chars of raw binary data] + \^:[16 chars of hexadecimal] + + To print a cat: + + > ?"\^:447cb67c3e7f0106" + + . and : always render an 8x8 character with no padding. To respect the padding state, + use , and ; instead. + + > ?"\#3\^;447cb67c3e7f0106" + + :: P8SCII Outlines + + The outline command first draws each pixel of the character in up to 8 neighbouring + positions given by an 8-bit bitfield. The bit value for each neighbour starts with low + bits at the top left, and increases in reading order: + + 0x01 0x02 0x04 + 0x08 -- 0x10 + 0x20 0x40 0x80 + + The first character after the command "\^o" is the colour, and the following two + characters are the neighbours bitfield in hexadecimal. For example, to draw a pixel up + to the left of each foreground pixel, the value 0x01 can be used: + + > ?"\^o801hey" + + The following draws a blue pixel to the left,right,top and bottom of each foreground + pixel which corresponds to bits 8+16+2+64 = 90, or 0x08+0x10+0x02+0x40 = 0x5a in hex: + + > ?"\f7\^oc5aoutline" + + Finally, a full outline can be achieved by setting all bits. Outline works in + combination with the tall and/or wide commands but the outline is still drawn one pixel + thick: + + > ?"\fe\^w\^t\^o7ffchunky" + + Drawing an outline costs around twice as much cpu as drawing a non-outlined character. + + The outline colour parameter can be "$" to use the current colour, or "!" to use the + current colour and skip drawing the interior. + + > ?" \^o!ff empty interior" + + :: Audio + + ? ?"\A" -- SINGLE BEEP ?"\A12" -- PLAY EXISTING DATA AT SFX 12 + + If an sfx index is not specified, a non-active sfx between 60..63 is selected + automatically. To fill the SFX with data before playback, the following commands can then + be appended. + + 1. (optional) SFX attributes must appear once at the start as they apply to the whole + sound: + + s P0 set the sfx speed + l P0 P1 set the sfx loop start and end points + + 2. Note data: + + Note are written as a..g, optionally followed by a sharp # or flat -, and octave + number. + + PRINT "\ACE-G" -- MINOR TRIAD + + Empty notes Can be written with a dot: + + PRINT "\AC..E-..G" -- STACCATO MINOR TRIAD + + Note attribute commands apply to following notes: + + i P0 set the instrument (default: 5) + v P0 set the volume (default: 5) + x P0 set the effect (default: 0) + + For example, to play a fast (speed 4), staccato (effect 5) arpeggio starting at C1: + + PRINT "\AS4X5C1EGC2EGC3EGC4" + + :: Decoration Characters + + The control character \v can be used to decorate the last printed character with another + character at a given offset, without needing to otherwise manage the cursor position. After + the decorating character is printed, the previous cursor position is restored. + + The format is \v P0 char, where P0 is a number giving the desired offset, and char is any + character to print at that offset (relative to the previous printed character). + + The offset has x packed into the lowest 2 bits, and starts (-2,-8) in reading order. So 3 + means (+1, -8), 4 means (-2, -7) and so on. + + For example, to write "café!", using a comma to draw the acute accent: + + PRINT"\NCAFE\VB,!" + + In this case P0 is 'b', which is read as the number 11. So the comma is drawn at: + + x = (11%4)-2 = 1 + y = (11\4)-8 = -6 + + :: Custom Font + + A custom font can be defined at 0x5600, consisting of 8 bytes per character * 256 + characters = 2048 bytes. Each character is an 8x8 bitfield (1 bit/pixel), where starting + from the top, each row is a single byte starting with 0x1 on the left. + + The first 128 bytes (characters 0~15 are never drawn) describe attributes of the font: + + 0x5600 character width in pixels (can be more than 8, but only 8 pixels are drawn) + 0x5601 character width for character 128 and above + 0x5602 character height in pixels + 0x5603 draw offset x + 0x5604 draw offset y + 0x5605 flags: 0x1 apply_size_adjustments 0x2: apply tabs relative to cursor home + 0x5606 tab width in pixels (used only when alt font is drawn) + 0x5607 unused + + The remaining 120 bytes are used to adjust the width and vertical offset of characters + 16..255. Each nibble (low nibbles first) describes the adjustments for one characters: + + bits 0x7: adjust character width by 0,1,2,3,-4,-3,-2,-1 + bit 0x8: when set, draw the character one pixel higher (useful for latin accents) + + :: Default Attributes + + Although attributes are reset every time @PRINT() is called, it is possible to set their + default values by writing to memory addresses 0x5f58..0x5f5b. + + 0x5f58 // bitfield + 0x1 when set to 0x1, bits 1..7 are observed: + 0x2 padding + 0x4 wide + 0x8 tall + 0x10 solid background + 0x20 invert + 0x40 stripey (when wide or tall) + 0x80 use custom font + + // e.g. poke(0x5f58, 0x1 | 0x2 | 0x4 | 0x8 | 0x20 | 0x40) -- pinball everywhere + + 0x5f59 char_w (low nibble), char_h (high) + 0x5f5a char_w2 (low nibble), tab_w (high) + 0x5f5b offset_x (low nibble), offset_y (high) + + // any nibbles equal to 0 are ignored + // tab_w (global tab width) values are mapped to 4..60 + + +-------------------------------------------------------------------------------------------- + PICO-8 VERSION HISTORY +-------------------------------------------------------------------------------------------- + + + v0.2.7 + + Added: rrect, rrectfill(x,y,w,h,corner_radius,col) + Added: ?"\^o8ff..." to print outlines (col, 2 hex values for neighbour bits) + Added: ?"\^uunderline" + Added: ?"\^;" and ?"\^," for one-off characters that respect padding + Added: browse cached carts via splore's local tab + Added: background cart downloading (any bbs cart visible in a splore list is fetched from cdn) + Added: splore: search publicly listed favourites, likes // fav:username or like:username + Added: splore: search for top-starred by time // t:month t:week t:20 for last n days, tr:2022 for time range + Added: sfx(n) returns the channel index it was played on + Added: config.txt: boot_to_splore 1 // always launch splore on startup. same as using the -splore commandline switch + Added: config.txt: accept_future 1 // allow loading cartridges created with future versions of PICO-8 + Added: when multiple displays are present, fullscreen favours the display that the window is currenly inside + Changed: print"\^w\^t\^=..." draws horizontal stripes (used to be the same as \^p) + Changed: max multicart export is now 32 cartridges, max serial file size is 512k (was 16, 256k) + Changed: cartdata() can switch between up to 4 different ids per session + Changed: Mac build uses statically linked libcurl (used to make a system() call to curl for each request) + Fixed: ls(longstr) causes buffer overrun // dangerous, but doesn't apply to sandboxed (bbs) carts + Fixed: circfill with a negative radius and inverted drawing bit set is a NOP (should fill entire screen) + Fixed: drawing filled shapes completely outside of clip rectangle sometimes crashes under web (illegal read) + Fixed: memory corruption when using remapped video memory after reboot + Fixed: ?"\^c" doesn't cost any cpu (should be same as cls()) + Fixed: dset() not flushed on run() when data changes more than once in the last second + Fixed: ?"⁷s000" or ?"\as00" crashes on Mac OS X // bad assumption about null termination; explains #tomorrowswinds crash + Fixed: coresume() only returns first return value + Fixed: splore: while in fold-out cart menu, PAGEUP, PAGEDOWN, HOME, END apply to cart list instead of cart menu cursor + Fixed: merge_joysticks maps multiple players to a single controller instead of vice versa ._. + Fixed: import/drop a png: colourfitting secret colours fails when the display palette entries have any of bits 0x70 set + Fixed: katakana mode ltsu lya lyu lyo produces ッャュョ instead of っゃゅょ (also: added xtsu xya xyu xyo alternative) + Fixed: first note of sfx 63 clobbered when previewing waveform instrument + Fixed: ctrl-c inside sfx data copies nothing when no notes are selected (should copy whole sfx as a [sfx] snippet) + Fixed: (rc3) print() with transparent colour followed by a memcpy to non-video memory area causes +0x10 on each value + Fixed: (rc3) underline doesn't respect draw palette colour mapping + Fixed: (rc4) p8scii \^x, \^y values are clamped to 8 when drawing background (e.g. ?"\#5\^yafoo" background is too short) + Fixed: (rc4) cstore(..., "foo.p8.rom") is stored as a png named .p8.rom + Fixed: (rc5) sfx 63 clobbered when previewing waveform instrument // previous fix was wrong + Fixed: (rc5) sfx thumbnail is scrambled for waveform instruments + Fixed: (rc5) waveform sfx preview playback doesn't work when music is playing (should interrupt) + Fixed: (rc5) prefetch spinner sometimes spins forever after failed download (rare) + Fixed: (rc6) music playback from pattern overview mode is broken when current sfx is a waveform instrument + + + v0.2.6b + + Added: 2 more players worth of mappable keyboard controls in config.txt (button_keys) + Changed: finished removing preprocessor; was causing e.g. "function --[[oops]]f() end" + Changed: "do" can be used instead of "then" // a bunch of older carts were able to do this via preprocessor + Changed: removed CTRL-O as a way to open the cpu profiler so that custom devkit carts can use it + Fixed: When bbs carts folder is inside root_path, opening favourite while offline clobbers item metadata + Fixed: Missing metadata for favourited carts; bbs is pinged to grab metadata and splore item is mended on play + Fixed: save() / export() called from headless script on existing file only overwrites every second file + Fixed: pasting music pattern data does not recreate sfx instruments that do not already exist in target cart + Fixed: Format string when exporting .wav is unstable / insecure + Fixed: bad block scope caused by nested short forms e.g. if (1)?"foo" // #dinkykong, /bbs/?tid=140066 + Fixed: >><=, <<>= operators missing (from 0.2.5d) + Fixed: atan2(1, 0x8000) returns 0.25 (should be 0.75) + Fixed: audio crackling on Miyoo Mini Plus (regression in 0.2.6, but unreleased) + + + v0.2.6 + + Added: Custom waveform instruments + Added: Configurable scales in music editor (for using ctrl to snap to scale) + Added: Inverted draw operations + Added: Video and spritesheet memory addresses can be mapped to 0x8000, 0xa000, 0xc000, or 0xe000 + Added: stat(111): same as stat(109) except returns a higher value on web to overfill audio and reduce crackle + Added: menuitem(0x300|index, ...) ignores left and right button presses. 0x7000 to ignore X/O/MENU. + Added: config.txt "capture_timestamps 1" to use timestamps as suffix in screen/video capture filenames + Added: (Mac) Universal binaries, also generated when exporting + Added: (Mac) Updated to SDL2 2.28.5 (-> minimum MacOS version is now 10.7) + Added: config.txt:merge_joysticks to map n controllers to a player (e.g. to plug a gamepad into a handheld) + Added: config.txt:use_wget to use wget for downloads instead of libcurl (wget must be installed) + Added: SHUTDOWN PICO-8 from the options menu while running a cartridge in -splore mode + Added: Preserve window position and size when switching to and from fullscreen mode + Changed: ADD(TBL, X, NIL) now behaves the same as ADD(TBL, X) (used to produce an out of bounds error) + Improved: Moved internal globals out of top level to improve vm perf on carts with no _draw() + Improved: Boot time and memory usage reduced on low end machines + Fixed: 0x808 audio produces buzz on web browsers that mix at 48000MHz (ref: #rp8, #waterflakes) + Fixed: When bbs carts folder is inside root_path, favourited carts show up as local files without titles + Fixed: (from 0.2.5d) compound operators (a+=1) cost more than their expanded equivalents (a=a+1) + Fixed: cstore out of range when storing to self while running a bbs cart causes segfault + Fixed: tab complete on non-existant directory adds garbage to commandline + Fixed: can not navigate songs patterns with -/+ when pattern is empty + Fixed: backspace/del removing cart from favourites list even when inside the fold-out cartridge menu + + + v0.2.5g + + Fixed: tonum("123abc") returns 123 (should return nothing) // also breaks split(). regression in 0.2.5f + Fixed: draw_tabs not listed by CONFIG command + + + v0.2.5f + + Added: CONFIG DRAW_TABS 1 to show tab characters in code editor (previously required editing config.txt) + Changed: tokenizer recognises long comments / string using [=*[ ]=*] e.g. [==[ long string ]==] + Changed: Nested long comments and strings no longer allowed + Changed: x % 0 gives 0 (was x) + Optimised: software blitter now faster when using PocketCHIP, windowed raspi or blit_method 1 + Fixed: infinite tokens exploit introduced in 0.2.5d (due to pre-processor changes) + Fixed: >>>= operator is a NOP (bug introduced in 0.2.5d) + Fixed: (raspi 32-bit) window not visible under Gameforce Chi / EmuELEC -- bug introduced in 0.2.5e + Fixed: fixed: s="x".."=" counts as 4 tokens instead of 5 + Fixed: Running a cartridge containing _meta_ data prints a memory allocation warning to stdout + Fixed: Code compressing to >= 32k reports size as (compressed_size & 0x7fff) resulting in corruped exports + Fixed: stat(54) loops when left-most channel is looping (should return total played ticks on current pattern) + Fixed: extcmd("audio_rec") maximum length is 2 minutes (meant to be 8 -- and now only applies to web) + Fixed: Frog Home crashes because of (now unsupported) "local x+=.." form. // INSTALL_GAMES for fixed version + Fixed: Starting P8SCII font height affects total line height even when no characters are printed in that font + + + v0.2.5e + + Fixed: Uppercase characters not loaded as punycode (causing _ENV to fail) + + + v0.2.5d + + Added: tline(bits) to set number of bits used for fractional part of mx,my,mdx,mdy (13 by default) + Added: ctrl+mousewheel to scroll code horizontally + Added: current bbs cartridge id shown in window title (config.txt show_cart_id_in_title to disable) + Added: poke(0x5f36, (@0x5f36)|0x80) to enable character wrap by default when printing + Added: blit_method in config.txt // Can use a software blitter by default (slower but more reliable) + Added: reminder when re-locating sprites that only the top half of map is altered by default + Added: draw boot sound as note glyphs on startup when sound is off + Changed: print() returns both max(cur_x), max(cur_y) and includes non-printed characters (e.g. tabs) + Changed: extcmd("folder") and extcmd("set_title", "foo") can now be used from bbs carts + Changed: Indexing a string out of range returns nil (was "") + Changed: Replaced most of pre-processor with Lua parser modifications based on z8lua (fixes various edge cases) + Changed: "a[foo()] += 1" only evaluates foo() once + Changed: out-of-bound tile values can be drawn using map(), tline() + Changed: extcmd("audio_rec") can record a maximum of 8 minutes (was no limit previously) + Changed: Rate limits are now per-minute: 10MB of log wries, 64 different files, 10 extcmd("folder")'s) + Fixed: Infinite tokens hack (was caused by now-replaced pre-processor) + Fixed: Only 4 controllers mapped to 0x5f00+76 + Fixed: h toggles hexadecimal mode in gfx editor (should be ctrl-h -- h is to flip sprite horizontally) + Fixed: out-of-bounds value doesn't respect custom map size + Fixed: cutting or clearing a selection of sprites does not also clear the sprite flags + Fixed: P8SCII repeat-character command fails on zero repetions; ?"a\*0bc" should print "ac", not "abc" + Fixed: pxa code compression inefficient when >= 32k matching triplets (typically "000") + Fixed: print() return value max(cur_x) returns 0 when max(cur_x < 0) + Fixed: holding menu button to force pause menu to open broken in binary exports + Fixed: copying / pasting in commandline doesn't respect punyfont character encoding + Fixed: (Manual) Steps 1 & 2 on how to move sprites in the map are in the wrong order + Fixed: Unhelpful / no error messages when the wrong format for HELP is used + + + v0.2.5c + + Added: set out of range return value for sget, mget, pget: poke (0x5f36,0x10) and set at 0x5f59..0x5f5b + Changed: rnd(str) no longer returns a random char from strings (breaks existing carts using e.g. rnd"5") + Changed: html exports default to 75% volume instead of 100% + Fixed: extcmd("audio_rec"), extcmd("audio_end") not working in html exports + Fixed: drag & drop (via serial 0x802) not responding to dropped file in html exports + Fixed: (again) can enter an illegal note (e-5) in sfx editor + Fixed: dir() missing during runtime (alias for ls) + Fixed: some mistakes in help text (outdated sub() description, yield misspelling) + + + v0.2.5b (Linux) + + Fixed: failing to drop down to wget when libcurl can not be loaded + + v0.2.5 + + Added: Help topics. Use help command, or ctrl-u in code editor to get help on whatever is at the cursor. + Added: (html exports / bbs) downloadable .wav export using extcmd("audio_rec"), extcmd("audio_end") + Added: inext (to match next). -> can do: for i,v in inext,tbl do ... end + Added: floating selection layer in map editor (solves various bugs and undo / selection issues) + Added: ~ can be used as xor instead of ^^ (same as Lua 5.3/5.4) + Added: When running a program locally, ls() can now take a directory name; use stat(124) to get pwd + Added: Variable width P8SCII fonts + Added: ctrl-click on compressed capcity (bottom right) to get realtime updates of compressed size in bytes + Added: export -t @clip to get a hexdump of compressed code section copied to clipboard + Added: pico8 -scancodes and map_scancodes (config.txt) for manually mapping keys to alternative scancodes + Added: sub(str,pos,pos) can be written as str[pos] + Changed: host_framerate_control 1 (config.txt) now means "let PICO-8 decide"; is disabled for Mac/Win/Linux + Changed: in map editor, pan with cursor keys when nothing is selected + Changed: use scancodes for sfx navigation (US:-=_+) and spd change (US:,.<>) to avoid azerty collisions + Changed: gfx_grid_lines in config.txt is taken to be a colour for the grid lines (16 for black) + Changed: can ctrl-h in gfx editor to toggle hex mode (sprite index shown in hex; map vals shown) + Changed: '-' allowed in filenames when not first character + Changed: linux builds use libcurl.so for bbs requests, or drops down to wget on failure to dlopen + Changed: increased maximum gif len for web exports to 30 seconds + Changed: peek/poke can now read/write up to 32767 values (was 8192) + Changed: web player default gif len is 16 seconds (was 8) + Changed: sub(str, pos, nil) returns whole string (pre-0.2.4 behaviour). For single chars, can now use str[pos]. + Fixed: Windows reserved filenames (lpt1, com1 etc) are accepted + Fixed: Nested coroutines unexpectedly end when interrupted by reaching end of frame + Fixed: print() colour is remapped twice when set in parameter // pal(6,7) pal(7,8) print("white",6) + Fixed: circ() breaks on 32-bit builds, with radius > 1024 + Fixed: ctrl-c to copy commandline error message does not encode glyphs as unicode + Fixed: LS command not resolving relative paths + Fixed: twitter char count for chr(127) ○ should be 2 (was 1) and chr(149) ˇ should be 1 (was 2) + Fixed: colour parameter not converted from string in rect, rectfill, pset (regression from 0.2.2) + Fixed: ord("foo", 1, 0) returns "too many ord results" -- should return nothing + Fixed: save @url includes ?g= when no gfx data (is redundant) + Fixed: (web export) html pause button does not show up as btnp(6) / btn(6) + Fixed: (web export) codo_textarea triggering Mac accent character selector even when cart doesn't use clipboard + Fixed: save @url failing when encoded length is > 2000 chars long instead of > 2040 charss + Fixed: can enter an illegal note (e-5) in sfx editor + + + v0.2.4c + + Added: save @url -- stores code + gfx as a URL if it can be encoded in 2040 characters + Added: html exports store volume/mute and other settings + Added: ctrl-g in sprite editor to toggle grid lines when zoomed in + Added: IMPORT -L FOO.PNG to import a 128x128 png to the cartridge label + Added: EXPORT -L FOO.PNG to export a 128x128 png of the cartridge label + Added: EXPORT -T FOO.P8.ROM to export only code section (t for tiny) + Added: ctrl-click on character count (bottom right) to see the twitter count (glyphs count as 2) + Added: __meta:*__ section to .p8 format -- can be used by external tools to store custom data + Added: extcmd("audio_rec") works from exported binaries, and with custom exported filenames + Added: read_controllers_in_background in config.txt (0 by default) + Added: periodic backups + Changed: .p8.rom files that are 0x3d00 bytes or less are loaded into code section + Changed: saved filenames can not include gylphs, or any of !"#$%&'()*+,-:;<=>?[\]^`{|}~ + Fixed: can't drag and drop png into sprite editor + Fixed: binary exports: ctrl-r causes crash when there is no whitespace at end of source code + Fixed: Using -run switch to launch a cart that fails to run -> get stuck in boot screen. + Fixed: selection after ctrl-a reports length chars+1 + Fixed: draw palette is not observed after changing colours using p8scii control characters + Fixed: music playback does not follow cursor after first pattern change (regression in 0.2.4b) + Fixed: transform_screen (config.txt) not observed by pause menus and other overlayed elements + Fixed: Double-clicking sfx thumbnail (in sfx overview screen) only works after playing music + Fixed: Pressing [a] to release looping sfx in sfx editor is broken + Fixed: sfx(46)..sfx(56) return -1 immediately after playing music but before host OS has called audio mixer + Fixed: Tokens counted as 2 instead of 1: ..= ^= >><= <<>= + Fixed: Negative number counted as 2 tokens instead of one when preceeded by: \ & | ^^ << >> >>> >>< <<> + Fixed: tostr(tbl) / print(tbl) acts like tostr(tbl, 1) when tbl has a metatable + Fixed: ?"\tx" does not advance to next tab stop + Fixed: ?"a\*5\nb" does not repeat newline 5 times + Fixed: exported label alpha is 0 for colour 0 + + + + v0.2.4b + + Added: l in sprite sheet navigator to set loop start / end points (then q,w or a,z to navigate) + Added: ctrl-b in gfx editor to paste 2x2 original size ("paste big") + Added: DEL / backspace to clear selected region in gfx / map editors, and ctrl-x to cut + Added: aggressive_backups option in config.txt (off by default) + Added: transform_screen in config.txt to globally rotate / flip the video output + Added: stat(57) (boolean) true when music triggered by music() is playing or about to start + Changed: memset() faster than using peek4/poke4; now 2 cycles per byte at 8MHz (was 4) + Changed: "running at < 30fps" warning on boot now only for raspi builds, and w/ higher tolerance + Changed: Controller inputs are accepted even when PICO-8 is not the foreground application + Changed: Map can be located at 0x1000 .. 0x2f00 using poke(0x5f56, 0x10) .. poke(0x5f56,0x2f) + Changed: Dotty text mode is now "\^=" ("Stripey") instead of "\^." // #gunayawuho #klax #impossible + Fixed: (not confirmed) crash causing 0-byte .p8 when audio mixer is called during save / run + Fixed: preprocessor not counting comments as white space; should allow: ".. end--[[]]if .." + Fixed: pal(nil) behaving the same way as pal(0); should be same as pal() // broke #rtype-2 + Fixed: note entry in sfx tracker is silent after running cartridge until pressing space to playback + Fixed: sub("abc", 4, 4) returns "c" (regression in 0.2.4) + Fixed: SPLORE cart update prompt does not appear when server replies too quickly (race condition) + Fixed: SPLORE cart update prompt only checks version once per session (can't refresh until it shows up) + Fixed: EXPORT command does not flatten includes when exporting to .p8.png / .p8.rom format + Fixed: EXPORT command discards source code changes since last run or load + Fixed: printing a one-off glyph using "\^." terminates the whole string when last byte is a zero + Fixed: Crash when loading a cart with fewer tabs, then creating a new tab and pasting. + Fixed: . command runs at 30fps even for a 60fps cart (-> _update60 is called twice, _draw once) + Fixed: Custom menu items become broken after suspending a cart, entering a lua command, and then resuming + Fixed: memset() with a non-zero value in shared memory region (0x1000..0x1fff) causes garbage corresponding mget() values + Fixed: web player/exports: ctrl-r causes erroneous "external changes reloaded" message and code corruption + + + v0.2.4 + + Added: Video and spritesheet memory addresses can be mapped to each other + Added: Map memory address can be mapped to 0x8000 // POKE(0x5f56, 0x80) + Added: stat(46)..stat(56): higher resolution and more accurate reporting of audio state + Added: Print one-off characters with ?"\^:447cb67c3e7f0106 hey" (or "\^." for binary data) + Added: chr() can take multiple arguments to construct an arbitrarily long string + Added: sub(str, pos, _) to get a single character at position pos + Added: Warning on boot when PICO-8 is running below 30fps + Added: Automatic scrolling caused by print() (with no x,y given) can be disabled with POKE(0x5f36,0x40) + Added: .p8.rom format can be used by cstore(), reload() and in multicarts + Added: EXPORT accepts .p8 .p8.png .p8.rom formats (can be used to save a copy, or convert from commandline) + Added: 64-bit RaspberryPi OS Builds and Exporters + Added: ASCII .txt version of manual included in archives & on website (synced with new html version) + Added: Auto-hide mouse cursor when typing (adjustable in config.txt) + Changed: .p8.rom file format can be less than 32k -- is padded with zeros to 32k on load + Changed: sub() costs some cpu based on the length of the string + Changed: Shorthand if/while no longer needs to be preceeded by a whitespace character or number + Changed: load("#") throws a runtime error when cartridge id contains illegal characters + Changed: 64k of Base RAM is standard (no need to set the hardware extension bit) + Changed: By default, draw colour resets to 6 when program is suspended + Changed: map() can take nil parameters for source_w, source_h to indicate default values + Changed: pal(n) (a single integer) to reset a single palette 1..3 (draw, display, secondary) + Changed: Can turn P8SCII wrap on/off with "\^$", "\^-$" + Changed: config.txt is not saved on exit when changes are made to it while PICO-8 is open + Changed: added code editor undo points when changing between identifier and non-identifier characters + Changed: sfx(-1, -2) now behaves the same as sfx(-1). sfx(-2) stops looping on all channels. + Changed: chip build no longer requires libcurl (calls out to wget) + Fixed: (Mac, Linux) load("#`echo ohno`") is executed // + server-side mitigation for splore + Fixed: stat(31) returns 2 parameters (bug introduced in 0.2.3) + Fixed: split() and sub() fail on strings containing "\0" + Fixed: ctrl-x on song pattern appears to work, but music() plays sfx 1..4 + Fixed: Text getting cut off after console scrolling when using print with draw_y_offset (0x5f5b) + Fixed: camera(0,128) cursor(0,128) print("\n") causes unnecessary console scrolling + Fixed: last music pattern not saved when only channel 3 is used and other channels are defaults + Fixed: ?"\a12 sup yall" overwrites sfx 12 with a default beep (should just play and continue printing) + Fixed: cursed console cpu refund exploit // https://carlc27843.itch.io/cursed-console + Fixed: ctrl-r from commandline resets parameter string (stat(6)) -- should be same as the last run + Fixed: ord() corrupting Lua stack and crashing when returning more than ~80 results + Fixed: large camera() parameters can cause line() clipping to fail and crash + Fixed: Crash when saving long gifs (> 90 seconds) + Fixed: Unmapped joysticks not responding + Fixed: Plugging in > 2 controllers causes other controller to disconnect + + + v0.2.3 + + Added: Lucky draw list in splore -- gives a random selection of carts + Added: load/save carts in .p8.rom format (raw binary 32k block) + Added: tostr(), tonum() take format_flags parameter to convert to and from 32-bit signed ints + Added: ord(str, pos, num) returns num results starting from character at pos (similar to peek) + Added: FOLDER takes an optional parameter to open other host directories: BACKUPS | DESKTOP | CONFIG | BBS + Added: Live character / token count of selected text shown at bottom right of code editor + Changed: Removed collaboration list from splore (can still search for sub:collab) + Changed: 0x808 audio has a slight lpf filter on it by default // turn off by setting bit 0x20 at 0x5f36 + Changed: tonum(boolean_value) returns 1 or 0 instead of nil + Changed: cursor CR x position set only by print(str,x,y) or cursor(), but not by print(str) (0x5f24) + Changed: character wrap is on by default when using print(str) + Changed: force-pause-menu hold duration is 500ms instead of 300ms to prevent accidentally triggering it + Changed: default gif length for new install is 16 seconds + Changed: ? shorthand can be used anywhere on a line e.g. if (true) ?"yes" + Changed: allow while/if shorthand with no statement, using colon separator: WHILE(BTN()==0); + Changed: added warning to fullscreen_method 2 in config.txt (gives erratic behaviour under some drivers) + Changed: cheaper OP_MOVE, OP_UNM lua vm instructions so that e.g. "local a=0-b" is not faster than "local a=-b" + Fixed: peek*() / poke*() do not charge extra cpu when reading or writing multiple values + Fixed: fget(n) returns junk when n is out of range (0..255); should return 0 in that case + Fixed: dropped .PNG files not detected as images when filename uses uppercase extension + Fixed: line()/tline() illegal writes caused by faulty clipping when (x1-x0) or (y1-y0) >= 0x8000 + Fixed: -accept_future 1 only worked with .p8.png files; now also applies to .p8 + Fixed: ?"\a7f" does not play f (happens only when f is the first note) + Fixed: abs(0x8000) return 0x0.0001 (should be 0x7fff.ffff) + Fixed: parameter string (stat(6)) is dropped when passed via RUN command + Fixed: preprocessing of form: "x += x<0 and -1 or 1" broken for operators <, > + Fixed: tab not accepted as whitespace for some preprocessor operations + Fixed: stat(1) wraps around when cpu is >= 2.0 (regression in 0.2.2) + Fixed: pressing SHIFT+ENTER on "local function foo()" or after "if (..) else" doesn't insert "end" + Fixed: pal() does not reset secondary palette to system default + Fixed: 0x808 audio does not respect pausing / volume / is not recorded with extcmd("audio_rec") + Fixed: 'h' pressed in sprite editor toggles hex mode in map editor + Fixed: After pressing shift-tab to toggle 128x128 map view, active draw area is still only 128x112 + Fixed: Attempt to navigate to non-existant tab after running: function _update60() _update60=nil end + Fixed: stat(101) not returning cart id when running from BBS web player + Fixed: print() wrapping + scrolling; e.g. from commandline: while(true) print(chr(254+rnd(2)).."\0") + Fixed: integer divide assignment operator (\=) costs 2 tokens instead of 1 + + + v0.2.2c + + Fixed: ?"\ac0" starts from d#0 instead of c0 (again -- 0.2.2b was still broken) + Fixed: splore local directory navigation fails when using a relative home path set with -home + Fixed: export .lua.png only shows the first 2730 lines + + + v0.2.2b + + Added: export foo.lua.png to get an image of the cartridge's source code + Added: Pause menu can be forced to appear by holding down pause for 300ms (even if program blocks it) + Added: extcmd("set_filename","foo") -- set the filename of the next screenshot or gif (can include %d) + Added: extcmd("set_title","foo") -- set window title (useful for exported binaries) + Added: Can toggle punyfont mode at command prompt w/ ctrl+p (useful for inspecting puny variable names!) + Changed: Default filename is /untitled.p8 instead of no filename (auto-increments to untitled_1.p8 etc.) + Changed: circ/oval that are not visible cost almost nothing, including circles that contain clipping region + Changed: filled circles/ovals that contain clipping region cost the same as the equivalent rectfill + Changed: shift+enter in code editor only auto-completes block for DO, THEN, REPEAT or FUNCTION + Fixed: ?"\ac0" starts from d#0 instead of c0 + Fixed: preprocessor regression when using string at end of ..= statement: if (true) then a..="b" end + Fixed: pressing L / R in paused menu is registered by running program after closing menu + Fixed: printing text in tall mode (?"\^ttall") via commandline can chop off bottom line before scrolling + Fixed: drag-select text with cursor at bottom or top of screen scrolls too fast + Fixed: spurious stat(0) results when using yield() to exit frame instead of flip() + Fixed: line()/tline() sometimes draws pixels on opposite side of screen (0.2.2 regression) + Fixed: line()/tline() fails to draw lines that have x or y coordinates > 32767 pixels apart + Fixed: can peek() more than 8192 values in single call + Fixed: large fill circles (> radius 900) render incorrectly close to vertical center (32-bit builds, web) + Fixed: even-widthed filled ovals with midpoint < 0 is drawn off by 1 + Fixed: black pixels in gif / map export not completely black + Fixed: map and spritesheet exporters do not respect current display palette and 0x5F36:0x8 (draw spr 0) + Fixed: code editor: cursor position off by one when selecting character after glyph (0.2.2 regression) + Fixed: code editor: tab names don't show up when 100% punyfont + Fixed: import spritesheet.png failing under MacOS (0.2.2 regression) + Fixed: export single sfx to .wav crashes when contains sfx instrument references + + + v0.2.2 + + Added: SFX filters: noiz (white noise for inst 6), buzz, detune (flange/overtone), reverb, dampen (lpf) + Added: SFX length (leave the second loop value at 0 to use). Can be >= 32. + Added: P8SCII control characters when using print() -- can adjust colour and cursor position etc. + Added: User-defined font at 0x5600, accessible via control character \014 + Added: poke(addr, val0, val1, val2 .. valn) -- same for poke2, poke4 + Added: can peek multiple values: a,b,c = peek(addr, 3) -- same for peek2, peek4 + Added: Locked mouse pointer // poke(0x5f2d, 0x5) and then stat(38),stat(39) to read + Added: right click in sfx pitch mode to grab the instrument of that note + Added: IMPORT command can specify target location in pixels: IMPORT FOO.PNG -X 16 -Y 32 + Added: IMPORT -S to shrink the imported image (e.g. -S 3 means shrink from 384x384 -> 128x128) + Added: ctrl-c at empty command prompt to copy the most recent error message + Added: extcmd("screen",0,1) / extcmd("video",0,1) saves files in same path as cart / exported executable or app. + Added: set bit POKE(0x5F36, 0x8) to treat sprite 0 as opaque when drawn by map(), tline() + Added: shift-tab in gfx/map editor for full-fullscreen mode (with no red menu bars) + Added: extcmd("rec_frames") to record each gif frame only when flip() is called regardless of rendering speed + Added: extcmd("folder") to open the folder on the host operating system (where printf, extcmd saves files to) + Added: custom menu callbacks can optionally leave the pause menu open, and can read LEFT and RIGHT button presses + Added: ctrl-h hex mode in map / gfx views (displays current sprite in hex, and shows map tile values) + Added: export map as a single image with export foo.map.png + Added: @weeble's gamepad improvements to the default html shell (dpad layout detection, better mapping / hotplugging) + Added: stack trace on bad memory access e.g. poke(-1,0) + Added: fillp can now be applied to sprite drawing (spr / sspr / map / tline), using colours from the secondary palette + Improved: General optimisation pass; heavy carts use 20~30% less host cpu + Changed: Most api functions are local by default for performance. use "pico8 -global_api 1" if needed for debugging. + Changed: unpack() now has a non-zero cost but still fairly fast + Changed: .. operator has a small cost based on number of characters concatenated + Changed: LOADK vm instruction costs 1 cycles (was 2) // otherwise "c=0" costs more than "c=a+b"! + Changed: removed function cpu refunds; speed-critical calls to bitwise function should use operator counterparts instead. + Changed: Incremental garbage collection each frame for improved performance. + Changed: stat(0) performs garbage collection in order to obtain a meaningful result; use stat(99) for raw value + Changed: options menu always available from pause menu (used to only be available in web exports) + Changed: tostr() returns "" instead of nil + Changed: exporting gif/png from web version now creates a pop-up div that can be dismissed + Changed: print() from commandline automatically wraps long strings + Changed: print() returns the x position of the next character to be printed (can be used to calculate text width) + Changed: glyph constants set only when running cartridge, not when running a command from prompt + Changed: Using printh from exported carts outputs files in the same folder as the .exe / .app + Changed: type() returns nothing instead of causing a runtime error + Changed: fill pattern is cleared when program is suspended by default. Use poke(0x5f2e,0x20) to preserve. + Changed: reset() resets everything from 0x5f00..0x5f7f, same as when program is initialised (including new random seed) + Changed: font tweaks for hiragana, katagana, ampersand characters + Changed: (raspi) separate binaries that support gpio to remove wiringPi dependency and gpio poking-related crashes + Fixed: Diagonal lines in editor contain an incorrect step when snapping to -1:1, 1:-1 + Fixed: rnd(tbl) is not random enough when table has 2 elements /bbs/?pid=81092#p + Fixed: add(tbl) causes runtime error. should have no effect and return nothing + Fixed: cursor position in code editor incorrect when changing lines contaning glyphs/tabs + Fixed: CONFIG TAB_WIDTH does not take effect until restarting PICO-8 + Fixed: Selecting sprites from bottom right -> top left and then pasting only pastes a single sprite + Fixed: Moving map selection around with cursor keys beyond original selection leaves streaks + Fixed: stdout/stdin serial() streams should be binary, not text mode (causes \r chars under Windows) + Fixed: printh("hello.txt",fn,true,true) fails to save to desktop when fn has an extention + Fixed: IMPORT FOO.PNG using the current sprite location as target instead of 0,0 + Fixed: tonum behaving differently to parser for string numbers out of range. e.g. tonum("-0x9000") should be 0x7000 + Fixed: Exporting the same zip file multiple times creates duplicate file entries + Fixed: tline / line clipping // sometimes off by 1px, sometimes incorrectly discarded altogether + Fixed: poking values with bit 0x80 to 0x5f28,0x5f30,0x5f3c,0x5f3e clobbers following address + Fixed: deli(tbl,nil) behaves the same as deli(tbl) -- should have no effect + Fixed: stat(13),stat(15) reporting y coordinates of menu with 0 items + Fixed: memory leak when saving gifs (causes web export to crash after a few records) + Fixed: print() linefeeds clobber multi-line text printed at bottom of screen + Fixed: preprocessor can not handle form: "::_::a+=1" (regression in 0.2.1) + Fixed: When split() by group size (e.g. split("ab12",2,false)), last parameter ignored + Fixed: partial cstore (len < 0x4300) from splore/export clobbering data outside that range on subsequent reload + Fixed: joystick stops responding after unplug and plug back in twice (also happens when some devices sleep / wake up) + Fixed: mkdir(nil) crashes + Fixed: possible to edit an SFX without the cursor visible (confusing) + Fixed: menuitem() callbacks broken when there is no _draw() or _update() defined + Fixed: should only be able to call from commandline: cd mkdir install_games keyconfig info + Fixed: controller menu (pause->options->controls) does not show custom key settings + Fixed: -export failing to find files relative from current path + Fixed: -export failing to locate html template path + Fixed: binary export storing multicart cart names with path (should be named "dat1.p8", not "dat/dat1.p8") + Fixed: pause menu broken when cartridge is launched from splore and run() is called inside first frame + Fixed: text printing does not respect draw palette (was broken in 0.2) // ref: /bbs/?tid=41428 + Fixed: for backwards compatibility, non-numbery colour parameters should be taken to mean zero + Fixed: preprocessor: self assignment with quoted function calls on RHS a+=1+cos"0" + Fixed: ctrl-r during pause menu only takes effect after closing menu + Fixed: (bug in RC1) pack(...).n is zero + Fixed: (bug in RC1) using filters noiz:1, dampen:2, lpf is not applied to melodic instruments (but should be) + + + v0.2.1b + + Added: split(str,"") splits by single characters + Updated: Tower of Archeos 1.1 via INSTALL GAMES + Fixed: print(num,x,y) always prints numbers num in hexidecimal + Fixed: .p8.png decoder can enter an infinite loop (caused exports to freeze on boot) + Fixed: Can't save screenshot/gif when running a BBS cart with illegal characters in title. + Fixed: INSTALL_GAMES is broken + Fixed: Mouse is broken in HTML exports + + + v0.2.1 + + Added: oval() ovalfill() split() + Added: circle drawing tool is now an oval tool (hold shift for circle) + Added: hold shift with line tool to snap to 22.5 degree angles from origin (0:1, 1:1, 2:1 gradients) + Added: serial() channels for stdin,stdout + Added: raw binary and image files dropped in to PICO-8 also become byte streams readable w/ serial() + Added: add(tbl, val, index) -- insert val into table at index + Added: deli(tbl, index) -- delete element from table by index (index defaults to last element) + Added: show progress while exporting binaries (can be slow now that generating zip files) + Added: -e to add an extra file to exported binaries zip files // export -e manual.txt foo.bin + Added: RESET command to reset the runtime / draw state + Added: drag and drop cartridges into PICO-8 window to load them + Added: hash stored in .p8.png so that cartridges corrupted by image quantization can show a specific error + Added: raw data blocks in compressed code format (useful for storing long binary strings efficiently) + Added: clip(x,y,w,h,true): 5th parameter indicates that the clipping region should be clipped by the old one + Added: -export switch can be used to convert .p8 files to .p8.png from commandline. // pico8 foo.p8 -export foo.p8.png + Added: extcmd("screen",scale) and extcmd("video",scale) to override the default scale (e.g. scale 2 means 256x256) + Added: printh(str, filename, overwrite, save_to_desktop) -- 4th parameter to save output file to desktop + Changed: add(), del() no longer implemented with Lua snippet; lower cpu cost. + Changed: line(),rect() cost the same as rectfill() when drawing equivalent shapes + Changed: all drawing operations in sprite editor now observe fill pattern state + Changed: numbers can be immediately followed by identifiers (a=1b=2) // lexaloffle.com/bbs/?tid=38038 + Changed: Sprite editor shows only active area after shift-selecting sprites + Changed: copy/paste in the code editor treats uppercase ascii characters as puny font only when puny mode (ctrl+p) enabled + Changed: C0 Controls characters (except for 0x0,0x9,0xa,0xd) encoded in .p8 / clipboard with unicode replacements + Changed: stat(4) converts characters to PICO-8 format (P -> puny p, hiragana unicode -> single character etc.) + Changed: serial() returns number of bytes processed (1/8ths included for partial bytes) + Changed: IMPORT SPRITESHEET.PNG now uses the current sprite as the destination coordinate instead of 0,0. + Changed: Standardized name of the display palette to "display palette" (was sometimes referred to as "screen palette"). + Changed: tostr() returns nil (used to return "[nil]") + Changed: don't need to set bit 0x40 at address 0x5f2c to use secondary palette. + Improved: exported binary's data.pod file 90% smaller (~870k -> ~85k) + Fixed: pack(...).n is shifted right 16 bits + Fixed: ctrl-r doesn't reload external changes for carts which are over compressed code capacity + Fixed: false positives when detecting external changes for some older cart versions + Fixed: .p8.png carts saved with dense code (compressed size > raw size, including very small carts) stores junk + Fixed: error message duplication when loading future version of .p8.png carts + Fixed: Illegal colours can enter spritesheet via serach-replace after setting with color() + Fixed: Preprocessor: "foo():a().x+=1" "a=b[1]c+=1" + Fixed: hex numbers written with punyfont characters breaks syntax high-lighting + Fixed: shift+- in sprite editor jumps too far vertically when zoomed in + Fixed: clicking a note in sfx editor creates a selection (-> backspace clears without moving rows) + Fixed: print()/printh()/stop() doesn't respect __tostring metatable method (regression) + Fixed: time() and btnp() speed changes after stopping program, typing a command and then resuming. + Fixed: phantom drag & drop events sent to unused music channels causing them to occasionally unmute themselves + Fixed: undo after moving sprites in map mode only undoes the changes to the map and not the spritesheet. + Fixed: inconsistent token counting for negative or bnot'ed numbers https://www.lexaloffle.com/bbs/?tid=38344 + Fixed: Crash when INSTALL_GAMES / INSTALL_DEMOS without a writeable disk + Fixed: stat(4) (clipboard contents) does not convert unicode to corresponding glyphs + Fixed: (MacOS) Using discrete GPU ~ drains battery. Now using integrated GPU when available. + Fixed: screensaver is blocked while PICO-8 is running (needed to set SDL_HINT_VIDEO_ALLOW_SCREENSAVER: "1") + Fixed: screen glitches after running for 25 days + Fixed: (HTML Exports) touch controls not registering when running under iOS from an iframe (e.g. on an itch.io page) + Fixed: (HTML Exports) tap and hold brings up the select menu under iOS + Fixed: (HTML Exports) button blocked by canvas when overlapping on small screens + + + + v0.2.0i + + Added: pack(), unpack() + Changed: bitplane read/write mask only reset after finished running program + Fixed: tline() doesn't draw anything when the layers argument is not given + + + v0.2.0h + + Added: tline() takes an optional layers parameter, similar to map() + Added: high bits of 0x5f5e taken as colour read mask, low taken to be colour write mask + Added: Double-click in the sfx tracker to select all attributes of a single note. + Fixed: assignment shorthand RHS scope wrong when contains certain operators. e.g. a+=1&127 + Fixed: while/if shorthands fail when "do" or "then" appears on the same line as part of an identifier + Fixed: ctrl-c copies the wrong sfx after clicking pencil button (next to pattern #) in organiser view + Fixed: spinning cart icon present in video memory when cart boots from splore + + + v0.2.0g + + Added: Window title shows current cartridge filename while editing + Changed: ~ preceeding a numerical constant (e.g. ~1) counts as a single token + Fixed: >>> operator behaviour does not match lshr(a,b) when b >= 32 (again) + Fixed: PICO-8 freezes when shift by -0x8000 + Fixed: .p8 format does not store extpal label colours + Fixed: Can not save screenshot when filename contains ":" + + + v0.2.0f + + Changed: @@ operator (peek2) to % + Fixed: Exported wasm crashes on boot when code contains a numerical constant out of range. + Fixed: HTML Shell treats controller shoulder buttons as MENU; easy to accidentally bump. + Fixed: shift operators behaviour undefined for negative values of n (now: x << n means x >> -(n\1)) + Fixed: >>> operator behaviour does not match lshr(a,b) when b >= 32 + Fixed: INFO crashes when code is close to 64k of random characters + Fixed: Code editor undo step not stored when starting to edit a new line (hard to see what happened) + + + v0.2.0e + + Added: zip file creation (with preserved file attributes) when exporting binaries + Added: cpu working animation when cpu usage > 120 skipped frames + Improved: stop() / resume now works at the instruction level + Fixed: tline clipping broken (from 0.2.0d) + Fixed: cpu counting is wrong inside coroutines + Fixed: coroutines interrupted by garbage collection + Fixed: code compression suddenly much worse for carts > 32k chars + Fixed: code compression ratio can be less than 1 in extreme cases + Fixed: pasting a string ending in '1' into the command prompt opens the editor + Fixed: html export can run out of pre-allocated heap when doing heavy string operations + Fixed: hex memory addresses displayed in puny font on windows + Fixed: devkit mouse message shown once per cart -- should be once per chain of carts + Fixed: can't paste sfx notes after moving to another sfx via keyboard + Fixed: copying note select vs. sfx vs. pattern range is ambiguous + Fixed: crash after redefining type() + + + v0.2.0d + + Added: rnd(x) when x is an array-style table, returns a random item from that table + Added: gif_reset_mode (in config.txt / CONFIG command). Defaults to 0.1.12c behaviour + Added: print(str, col) form behaves the same as: color(col) print(str) + Added: Operators: <<> >>< <<>= >><= + Changed: tline now also observes an offset (0x5f3a, 0x5f3b) + Changed: tline rounds down to integer screen coordinates (same as line) + Changed: Final cpu adjustments (see release post) + Changed: Removed experimental "!"->"this" shorthand + Changed: clip() returns previous state as 4 return values + Fixed: Included files remain locked (and can not be edited by external editors) + Fixed: Carts loaded as plaintext .lua fail to handle BOM / DOS characters + Fixed: palt() returns previous state of bitfield as a boolean instead of a number + Fixed: CPU speed on widget doesn't exactly match stat(1) + Fixed: stat(1) occasionally reports garbage values when above 1.0 + Fixed: Custom btnp repeat rates (0x5f5c, 0x5f5d) speed up when skipping frames + Fixed: gif_scale setting not read from config.txt + Fixed: tline: texture references are incorrect when sy1 < sy0 + Fixed: tline: single pixel spans are drawn as two pixels + Fixed: binary exports' controls menu always shows 0 joyticks connected + Fixed: Pressing DEL on first row of tracker doesn't do anything + Fixed: host framerate regulation is slow (~1/sec) when PICO-8 frame takes < 1ms to execute + Fixed: fillp() return value (previous state) does not include transparency bit + Fixed: clip"" setting all clip values to 0 (should be ignored) + Fixed: Raspberry Pi static build / static export requires GLIBC 2.0.29 (now .16) + Fixed: stop(nil) crashes + Fixed: print(), printh(), stop() prints "nil" with no arguments (should have no output) + Fixed: trace() can not be used with coroutines + + + v0.2.0c + + Changed: Compressed size limit now 0x3d00 bytes (reclaimed an unused 0x100 byte block) + Fixed: >>>= operator (was doing a >>= replacement instead) + Fixed: #including large .lua files causes crashes, weird behaviour + Fixed: Sandboxed CSTORE: writing partial data to another embedded cart clobbers the remaining data. + Fixed: Multicart code storing regression introduced in 0.2.0 (code from head cart stored in other carts) + Fixed: Can not edit spritesheet after panning + Fixed: Junk error messages when syntax error contains one of the new operators + Fixed: Crash with: 0x8000 / 1 + + + v0.2.0b + + Changed: #include directive can be preceeded by whitespace + Changed: Activity logger records nothing after idle for 30 seconds + Fixed: Mouse cursor movement in editor is not smooth + Fixed: Display palette doesn't reset after exiting splore + Fixed: PALT() returns 0 instead of previous state as bitfield + Fixed: Rectangle and line tools broken when used in map editor + Fixed: INSTALL_GAMES under Windows produces broken cart files + Fixed: Stored multicart sometimes has code section truncated (fails to load()) + + + v0.2.0 + + Added: 8-bit character set with kana, alt font + Added: ord(), chr() + Added: SFX / Pattern organiser view + Added: SFX edit buttons on pattern channels + Added: tline // textured line drawing + Added: SPLORE automatically updates BBS carts when online + Added: Search for similar (shared tags) cartridges, or by thread + Added: predefined fillp() pattern values assigned to glyphs + Added: btnp() custom delays (poke 0x5f5c, 0x5f5d) + Added: "." shorthand command for advancing a single frame (calls _update, _draw if they exist) + Added: Current editor/cart view is recorded every 3 seconds to [app_data]/activity_log.txt + Added: Cutting (ctrl-x) and pasting selected sprites while in map view to also adjust map references to those sprites + Added: Clipboard is supported in the html exports (with some limitations) // load #wobblepaint for an example. + Added: Can load .lua files as cartridges + Added: Operators: ..= ^= \ \= & | ^^ << >> >>> ~ &= |= ^^= <<= >>= >>>= @ @@(update: @@ replaced with %) $ + Added: New demo carts: waves.p8 dots3d.p8 automata.p8 wander.p8 cast.p8 jelpi.p8 (use INSTALL_DEMOS) + Added: Extra pre-installed games: Embrace, 8 Legs to Love (use INSTALL_GAMES) + Added: Splore cart labels for .p8 files + Added: Now 16 code tabs (click on the rightmost ones to scroll) + Added: ipairs() + Added: SAVE from commandline to quick-save current cartridge (same as ctrl-s) + Added: BACKUP from commandline to save a backup of current cartridge + Added: CPU usage widget (ctrl-p while running cartridge) + Added: Button / dpad states exposed in memory at 0x5f4c (8 bytes) + Added: Random number generator state exposed at 0x5f44 (8 bytes) + Added: pico8_dyn version is included when exporting to Raspberry Pi + Added: allow_function_keys option in config.txt (CTRL 6..9 are now preferred -- will phase out F6..F9 if practical) + Added: Visible tab characters (draw_tabs in config.txt) + Added: pal({1,2,3..}) means: use the value for each key 0..15 in a table + Added: palt(bitfield) means: set the colour transparency for all 16 colours, starting with the highest bit + Added: Options menu for binary exports (sound / fullscreen / controls) + Added: Shape drawing tools in sprite and map editor + Improved: Miscellaneous HTML shell / player optimisations and adjustments + Improved: Lower cpu usage for small foreground_sleep_ms values (changed host event loop & fps switching strategy) + Changed: This update is called 0.2.0, not 0.1.12d! (grew into plans for 0.2.0, and bumped cart version number) + ChangeD: Reverted cheaper 0.1.12* costs on bitwise operators & peek (recommend replacing with operators if need) + Changed: negative numbers expressed with a '-' count as a single token + Changed: glitchy reset effect does not leave residue in base RAM (but maybe on screen when using sprites / tiles) + Changed: sset() with 2 parameters uses the draw state colour as default + Changed: line() or line(col) can be used to skip drawing and set the (line_x1, line_y1) state on the next call to line(x1,y1) + Changed: vital system functions (load, reboot etc.) can only be overwritten during cartridge execution + Changed: sqrt(x) is now more accurate, and a little faster than x^.5 + Changed: sqrt(x) returns 0 for negative values of x + Changed: btnp() delay and repeats now work independently per-button + Changed: pairs(nil) returns an empty function + Changed: Default screenshot scale (now 4x), gif scale (now 3x) + Changed: gif_len now means the length when no start point is specified (used to be the maximum recordable length) + Changed: (Multicarts) When loading data from many different carts, the swap delay maxes out at ~2 seconds + Changed: (Raspberry Pi) removed support for (and dependency on) libsndio + Changed: camera(), cursor(), color(), pal(), palt(), fillp(), clip() return their previous state + Changed: Can not call folder() from a BBS cart running under splore + Changed: F9 resets the video, so that multiple presses results in a sequence of clips that can be joined to together + Changed: color() defaults to 6 (was 0) + Changed: Backed up filenames are prefixed with a timestamp. + Changed: Automatically start on the (host's) current path if it is inside PICO-8's root path + Changed: tostr(x,true) can also be used to view the hex value of functions and tables (uses Lua's tostring) + Changed: Can hold control when clicking number fields (spd, pattern index etc.) to increment/decrement by 4 (was shift) + Fixed: HTML exports running at 60fps sometimes appear to repeatedly speed up and slow down + Fixed: HTML export layout: sometimes broken -- option buttons overlapping in the same place + Fixed: __tostring metatable methods not observed by tostr() / print() / printh() + Fixed: Mac OSX keyboard permissions (fixed in SDL2 0.2.12) + Fixed: Audio mixer: SFX with loop_end > 32 would sometimes fail to loop back + Fixed: btn() firing a frame late, and not on the same frame as stat(30) + Fixed: #include can not handle files saved by some Windows text editors in default format (w/ BOM / CRLF) + Fixed: Exports do not flatten #include'd files + Fixed: Default window size has too much black border (now reverted to previous default) + Fixed: Functions yielded inbetween frames occasionally push an extra return value (type:function) to the stack + Fixed: can't load png-encoded carts with code that starts with a : + Fixed: .gif output unnecessarily large + Fixed: .gif recording skipping frames when running at 15fps + Fixed: printh does not convert to unicode when writing to console or to a file + Fixed: cart data sometimes not flushed when loading another cart during runtime + Fixed: Can not navigate patterns with -,+ during music playback + Fixed: Mouse cursor not a hand over some buttons + Fixed: Laggy mouseover messages (e.g. showing current colour index, or map coordinates) + Fixed: Can't paste glyphs into search field + Fixed: Tab spacing always jumps config.tab_spaces instead of snapping to next column + Fixed: -p switch name is wrong (was only accepting "-param" in 0.12.* + Fixed: Code editor highlighting goes out of sync after some operations + Fixed: Multicart communication problem (affecting PICOWARE) + Fixed: time() speeds up after using the RESUME command + Fixed: Audio state is clobbered when using the RESUME command + Fixed: Audio glitch when fading out music containing slide effect (1) + Fixed: Toggling sound from splore cart->options menu has no effect + Fixed: Devkit keyboard works when paused + Fixed: "-32768 % y" gives wrong results + Fixed: Replacing all text in code editor breaks undo history + Fixed: Double click to select last word in code does not include the last character + Fixed: Weird block comment behavior in code editor + Fixed: HTML export: cart names can not contain quotes + Fixed: HTML export: menu button layout under chromium + Fixed: HTML export: Adding content above cartridge breaks mobile layout + Fixed: HTML export: Can touch-drag PICO-8 screen around (breaks simulated mouse input) + Fixed: LOAD("#ABC") does not always immediately yield + Fixed: Infinite RUN() loop crashes PICO-8 + Fixed: Mouse cursor is not a finger on top of most "pressable" button-style elements + Fixed: CD command fails when root_path is relative (e.g. "pico8 -root_path .") + Fixed: poke in fill pattern addresses (0x5f31..0x5f33) discards some bits + Fixed: After using ctrl-click in map editor, can not modify map outside that region + Fixed: Shift-selecting sprites from bottom right to top left selects wrong region + Fixed: Changing GIF_LEN from PICO-8 commandline sometimes breaks gif saving + Fixed: pget() sometimes returns values with high bits set + Fixed: Preprocessor: unary operator lhs is not separated in some cases (e.g. x=1y+=1) + Fixed: Preprocessor: ? shorthand prevents other preprocess replacements on same line + Fixed: Preprocessor: fails when multiple shorthand expressions + strings containing brackets appear on the same line + Fixed: Loading a .p8 file with too many tabs discards the excess code. + Fixed: Map editor's stamp tool wraps around when stamping overlapping the right edge. + Fixed: Very quick/light tap events sometimes do not register + Fixed: SFX tracker mode: can't copy notes with shift-cursors before clicking (whole sfx is copied instead) + Fixed: "..." breaks syntax highlighting + Fixed: Click on text, press up/down -> cursor reverts to previous horizontal position + Fixed: CTRL-[a..z] combinations processed twice under some linux window managers + Fixed: ctrl-up/down to jump to functions in the code editor breaks when "function" is followed by a tab + Fixed: map & gfx drawing selection is not applied consistently between tools + Fixed: Using right mouse button to pick up a colour / tile value sometimes also applies current tool + + + v0.1.12c + + Fixed: CPU usage reported by stat(1) is higher than actual value + Fixed: Fail to load .p8 cartridges w/ BOM marker / CRLF endlines + Fixed: Syntax errors / crash caused by #including files containing BOM / CRLFs + Fixed: Can not save .p8 when contains unresolved #includes + Fixed: Can't open pico-8.txt in Notepad.exe (added CRLFs) + Fixed: Can delete null terminator at end of code (revealing previously deleted code) + + + v0.1.12b + + Added: config command (e.g. CONFIG THEME CLASSIC) + Fixed: Windows sound resampling artifacts (moved to SDL2 2.0.9 audio:directsound) + Fixed: Glyphs stored as unicode can not load when #include'd + Fixed: Code highlighting is wrong after select and delete a line + Fixed: Last line endpoint not present in draw state memory + Fixed: Ubuntu 16.04 can not run because requires glibc 2.27 (reduced dependency to 2.14) + Fixed: stat(102) returns nil when run from binary instead of 0 (now 0) + Fixed: Loading cartridge from commandline fails when path contains "../" + Fixed: (OSX) Crash when reloading external changes with CTRL-R + Fixed: (Windows) Crash when running cart with included code + Fixed: Can not export or include extra cartridges outside of current directory + Fixed: Off by 1 when search for line 1 (affected ctrl-b, ctrl-l) + Fixed: html template -- mouse cursor showing over canvas (now hidden by default) + + + v0.1.12 + + Added: #include a text file, or a tab from another cartridge + Added: Unlimited undo for gfx,map,sfx + Added: [sfx] snippets: copy and paste sound & music between PICO-8 instances and BBS posts + Added: (BBS) sfx snippet player + Added: CTRL-G in code editor to repeat search across all tabs + Added: Splore search text entry with cursor key button presses + Added: Custom tab widths (tab_width in config.txt) + Added: Web exporter template: joystick & touch support, preview image, menu buttons, adaptive size, controls screen + Added: .wasm exporter (use -w) + Added: Raspberry Pi binary exporter + Added: -export // run the EXPORT command from host commandline + Added: Toggle flags on multiple sprites at once by selecting them first + Added: Confirmations when loading/saving with unsaved changes + Added: Windowed mode support for Raspberry Pi + Added: serial() interface for Raspberry Pi // serial() -- spi, ws281x, direct bit banging // 0.2.1 update: dropped spi + Added: api: peek2 poke2 rawset rawget rawlen rawequal next + Added: Comment/uncomment selected block with CTRL-B + Added: Can save screenshots and gifs from exported binaries via EXTCMD + Added: Can exit exported binaries after runtime error / stop(), and also via EXTCMD("SHUTDOWN") + Added: SHUTDOWN menu item added to pause menu when running via "-run cartfile" + Added: -kiosk to run in kiosk mode: boot into splore, favourites menu only, no cart menu + Added: -root_path to set root cartridges folder from commandline + Added: shift+space in song view to play from the current quarter of the selected channel + Added: CTRL-W, CTRL-E in code editor to jump to start / end of line + Added: -accept_future to load cartides made with future versions of PICO-8 + Added: -preblit_scale (default: auto) for less blurry scaling with -pixel_perfect 0 + Added: -pixel_perfect -1 (auto) only uses pixel perfect scaling when < 10% of the containing screen axis is wasted + Added: highlight all occurances when searching for text in code editor + Added: tab completion across directories + Added: In map editor, non-zero cels that are drawn all black are marked with a single blue dot + Changed: all(), foreach() cpu cost is now much cheaper (but still a little more than using a for loop) + Changed: cursor() can also set the current color with a third parameter + Changed: stat 24..26 return -1 when no music is playing + Changed: 3x4 font characters (uppercase in ascii) allowed in code editor (but not pasteable/editable) + Changed: time() / t() always means seconds since run (but still updated once per _update() / _update60) + Changed: line(x1,y1) can be used to draw from the end of the last line + Changed: del() returns the item deleted on success + Changed: single setting for audio volume (-volume switch, "volume" in config.txt) + Changed: allow '-' in cartdat() names + Changed: 8 and - only map to buttons 4 and 5 by default for CHIP build + Changed: Raspberry Pi pico8_dyn build does not support gpio/serial (and so does not require wiringPi) + Changed: Default theme is 1 (blue background in code editor) + Changed: When loading a cart from commandline, automatically set the current path if inside PICO-8's filesystem + Fixed: Code editor uses too much cpu / battery power + Fixed: cstore() with an external cart name broken when run from exported cart or as bbs cart + Fixed: Undoing changes to SFX after using pitch drawing tool clears SFX data + Fixed: Running headless scripts under Windows / Mac OSX crashes + Fixed: Running headless scripts with no video driver fails + Fixed: Can not load BBS carts in headless script mode (without auto-running) + Fixed: (Web exporter) mouse cursor doesn't work in fullscreen + Fixed: (Web exporter) mouse button 2 brings up context menu + Fixed: (Web exporter) Clusters of FS.syncfs calls causing error messages (and inefficient?) + Fixed: (Windows) PICO-8 behaves as if it is not the foreground application + Fixed: divide and abs sign flipping for 0x8000.0000 + Fixed: sqrt(0x0000.0001) freezes + Fixed: "-1"+0 evaluates to 0xffff.0001 + Fixed: shift-tabbing to unindent alters selection range + Fixed: background_sleep_ms reverts to default value + Fixed: "open in thread" option appears for local carts + Fixed: (code editor) undo markers in unexpected places + Fixed: root_path, desktop_path in config.txt doesn't work without trailing slash + Fixed: Audio sampling rate is wrong when device/driver doesn't support 22050MHz + Fixed: Loading cart with less than 5 pixel rows of gfx does not clear default white cross sprite + Fixed: cpu cycle exploit using peek4 with no parameters + Fixed: SFX keyboard editing operations (e.g. SPD +/-) sometimes applied to the wrong SFX + Fixed: Cursor behaviour when moving between song and sfx view, and when playing music + Fixed: Selecting SFX notes with shift + home/end/pgup/pgdown + Fixed: Vibrato (2) and drop (3) effects in SFX instruments not observed + Fixed: Can not place note at C-0 in pitch mode + Fixed: CTRL-F search in code skips matches that are close together + Fixed: (Mac) warning about unoptimized program (built with SDL 2.0.9, + now 64-bit) + Fixed: (Raspberry Pi) Keypresses leaking to desktop + Fixed: (Raspberry Pi) Keyboard layout fixed to US + Fixed: printh(nil) prints [false] instead of [nil] + Fixed: toggling audio mute twice returns to maximum volume + Fixed: alt+cursors moves cursor in code editor + Fixed: del does not work on first character of code or commandline + Fixed: preprocessor breaks on double slash in string s="\\" + Fixed: sometimes code executing a little after point of runtime error + Fixed: Token count reported in editor is more than 0 after rebooting + Fixed: "Removed empty tabs" message displayed when loading cart with fewer tabs + Fixed: Member variables highlighted when same as API function names (e.g. actor.spr) + Fixed: Hot-plugged joysticks not recognized + + + v0.1.11g + + Added: CTRL-C to copy contents of commandline + Added: stat(100..102) for current breadcrumb label, bbs cart id, and hostname (web) + Added: content_filter in config.txt + Added: Cartverse cart id support (not live server-side yet though) + Fixed: Tab preview does not show on mouseover + Fixed: Can't paste uppercase characters into commandline + Fixed: Preprocessor can't handle glyphs in form: "♥.x += 1" + Fixed: Unsaved changes sometimes reported when filename is not set + Fixed: Pause menu doesn't open inside infinite loop inside _draw + Fixed: load() crashes when "parameter string" parameter is not a string + Fixed: cstore(),reload() crash when external cart filename is not a string + Fixed: printh(str, "@clip") fails for glyph characters in str + + + v0.1.11f + + Fixed: Pause menu doesn't open inside an infinite loop + Fixed: Binary and hex string digits outside of 0xffff.ffff alter result + + + v0.1.11e + + Added: stat(30..31) for devkit keyboard input + Added: extcmd("pause") extcmd("reset") extcmd("breadcrumb") + Added: lshr(), ceil(), rotl(), rotr(), peek4(), poke4() + Added: stat(12..15) to grab the position of the pause menu (x0,y0,y1,y1) + Added: DPAD game controller buttons mapped to LRUD + Added: CTRL-click on song navigator to scroll by 4 patterns + Added: Can type and paste glyphs in commandline + Added: Notification when CTRL-R fails to reload because of unsaved changes + Added: Notification when code automatically converted to lower-case + Added: INFO() checks for "external changes" (e.g. when using a separate text editor) + Added: .p8.png format can be used with cstore() and carts bundled in multicarts + Added: Can optionally set fill pattern using colour parameter + Changed: Glyphs can be used as variable names + Changed: Glyphs stored in clipboard and .p8 format as roughly corresponding unicode + Changed: .p8 format skips storing tailing rows of data that match default state + Changed/Fixed: shr(x,n) is now equivalent to calling shr(x,1) n times when n >= 32 + Fixed: Error message and stack trace line numbers 0 or slightly out + Fixed: Unclosed block error navigates cursor to rather than start of block + Fixed: Exported binaries can load carts outside of bundle + Fixed: BBS cart loaded from a local cart loses data cstore()ed during previous run + Fixed: btn() returns same as btnp() + Fixed: btnp(6) always returns false + Fixed: Missing mask pixels in cart download animation frame + Fixed: Crash when try to load a directory as a cart + Fixed: Sometimes cursor position set by keyboard mouse emulation in code editor + + + v0.1.11d + + Added: t() aliased to time() + Fixed: time() always returns 0 when there is no _update function + Fixed: (raspi) Keyboard stops responding after pressing CTRL-F, CTRL-Z + Fixed: (raspi) Double keypresses in sound editor when entering notes + Fixed: stat(6) pads parameter string with spaces + + + v0.1.11c + + Added: Local and UT time queries using stat() + Added: host_framerate_control (config.txt) to improve performance on slower machines and web + Added: Control over cpu usage when running in background (-background_sleep_ms / config.txt) + Added: Windows icon in exported exe + Added: F11 to toggle fullscreen + Added: export -c switch to indicate transparent icon colour + Added: show_backup_messages (config.txt) to turn off backup notifications + Added: SFX instruments documentation in pico8.txt + Added: Error message when trying to export carts with code size over the compressed limit + Changed: If config.txt is not found, the same directory as the executable is searched + Changed: If sdl_controllers.txt exists in the same directory as the executeable, it is processed first + Changed: Shorthand if () statements must be written on a single line + Fixed: reload() from bundled, non-primary cart in exported html multicart reads only original data + Fixed: Exported binaries wrongly observe F7 (capture label) + Fixed: Loading carts from earlier versions alters SFX data not intended for audio + Fixed: Old version of fill patterns documentation near end of pico8.txt + Fixed: 'backed up unsaved changes' message displayed during runtime for cstored() carts + Fixed: PICO-8 runs too slowly when in background (new default background_sleep_ms: 20) + Fixed: Saving screenshots and videos from exported binaries are named 0_* + Fixed: Compressed size limit warning on save doesn't mention exported carts + Fixed: btn(), btnp() don't work in infinite loops + Fixed: btnp() timing inconsistent between 30fps / 60fps / during frame-skipping / with no _update + Fixed: Can't move between channels while music is playing in song mode + + + v0.1.11b + + Fixed: Preprocessor bug regressions: "if (..) or", "a.b -= c - d" + Fixed: Crash when pressing menu button on an empty favourites list + + + v0.1.11 + + Added: Binary exporters (Windows, Linux, Mac OSX) + Added: Code tabs + Added: Splore cart menu + Added: Fill patterns + Added: Custom sfx instruments + Added: load("#1234") to load [and run] a BBS cart + Added: -x switch // execute a cart headless, for making commandline toolchains + Added: Compressed size display and limit warning lights in code editor + Added: CTRL-L to jump to a line number in code editor + Added: numbers can be written in binary: 0b10100010 + Added: tostr(), tonum() + Added: extcmd(): audio_rec, audio_end to record all audio output. + Added: ls() returns a list of local files if called while running + Added: getmetatable() + Added: coroutine error reporting // wrap coresume() in assert() + Added: sfx() can take a 4th parameter: number of notes to play + Added: Live sfx and music editing + better navigation controls + Added: Transpose selected sfx notes relative to C by entering a note w/ SHIFT held + Added: Insert and delete sfx rows with enter and backspace + Added: Hidden note data is shown in sfx editor when relevant (slide, arps) + Added: Warning displayed when unsaved changes backed up + Added: Separate animation for downloading vs. loading a cart + Added: export -p switch to supply a customized html template + Added: Mousewheel when devkit mouse enabled: stat(36) // not supported in web + Added: < > to change zoom level in gfx and map editors + Changed: Rebalanced / fixed api cpu costs + Changed: Screenshot and gif filenames based on current cart if available + Changed: add() returns the added object + Changed: removed global hpf on audio + Changed: (sfx) can slide to volume 0 + Changed: removed master low pass filter + Changed: assert() can take an optional error_message parameter + Changed: ? (shorthand for print()) can be prefixed by whitespace + Changed: shl(), shr() return 0 if second parameter >= 32 + Changed: Automatically drop down to software blitting mode if opengl fails + Changed: Lua memory limit set to 2MB (was 1MB) + Changed: Some options (-width, -show_fps) apply only to the session; not saved to config.txt + Updated: Internal game controller mappings from SDL_GameControllerDB + Fixed: Pops & clicks in audio when switching between playing SFX + Fixed: Crash in audio mixer because of bad locking + Fixed: Crash when loading .p8 files with more than 64k of code + Fixed: Indexing of sparse tables fails after removing n/2 elements + Fixed: Calling stat() inside an infinite loop crashes + Fixed: Resetting cartridge corrupts cartridge data in range 0x5e00..0x5eff + Fixed: Can not recover from a cart error caused by glitchy data on resetting + Fixed: String->negative number conversion off by 0x0.0001 (-1 --> 0xffff0001) + Fixed: Crash when running cart closed to 64k char limit + Fixed: Cursor can't move to the right of last character in code editor + Fixed: Missing highlighted keywords: in, add, del, menuitem + Fixed: Preprocessor bugs: "a+=1+2\n*3", "a+=(1)ba=42", "a[(1)]+=1" + Fixed: Preprocessor performs replacements inside a string printed with ? + Fixed: Display freezes when terminating a program running at >100% cpu + Fixed: Quick-running (CTRL-R) clobbers some editor state (e.g. current sprite page) + Fixed: Loading a .p8 file with a future version reports a generic failure + Fixed: alt-enter to toggle fullscreen also triggers pause menu + Fixed: Splore scrolling jumps around when list gets too long + + + v0.1.10c + + Fixed: atan flips sign for very negative values of x close to zero + + + v0.1.10b + Fixed: HTML exporter carts don't run + Fixed: HTML export 60fps support broken + Fixed: HTML export when path has a space in it (common for OSX) + Fixed: atan2 ignores sign of y + Fixed: (Raspberry Pi) Crash when access gpio not as root + + + v0.1.10 + + Added: Multi-cart export in html + Added: Cart reset glitch + Added: Demo carts: bounce, sort + Added: .p8 format can now store cart labels + Added: Splore navigation keys: pageup/down, home, end + Added: Splore usage hint shown on empty favourites list + Added: Warning on boot when data folder is read-only or can't be created + Added: Pressing tab with code selected indents those lines (shift-tab to un-indent) + Added: Double click word to select it + Added: Trigger screenshot/video/label capture from inside program: extcmd() + Changed: CTRL+left/right in code editor skips to end of word or span of non-whitespace + Changed: When a cart terminates from splore, button press is required to continue + Changed: load("@clip") can only be called from commandline (security) + Fixed: Can over-allocate host memory if exceed it within one frame + Fixed: atan2(-1, -32768) crash, and error for small values of dy + Fixed: (Web) using cstore() on self causes unloadable cart (bug introduced in 0.1.8?) + Fixed: (web) Pressing ctrl-v crashes the player (should do nothing) + Fixed: (Raspberry Pi) WiringPi library required in static build + Fixed: (Raspberry Pi) Crash on exit when launching via desktop icon + Fixed: (Raspberry Pi) keyboard input broken (observed on raspi2s) + + + v0.1.9b + + Added: Alternative function key mapping: ctrl-6..9 for F6..F9 + Added: Alternative glyph entry method: (ctrl-k) to toggle glyph mode + Changed: Enter glyphs with shift a..z, but can be disabled in config.txt + Changed: Increased emscripten ram to 128MB (some carts at risk of running out) + Fixed: Crash when window size is tiny or minified + Fixed: Crash on toggling fullscreen mode + Fixed: printh can write files outside filetree (security issue) + Fixed: show_fps (can also now be toggled with ctrl-1) + Fixed: Shorthand if/then syntax error when using the form: (functionname)(param) + Fixed: log.txt not saved in path specified by -home switch + Fixed: Default application data folder created even when -home specified + Fixed: Missing dynamic builds (pico8_dyn) from linux archives + Fixed: Removed unneeded RPATH from linux binaries + Fixed: export foo%d.wav fails to write multiple files + + v0.1.9 + + Added: Copy and paste sprites and whole cartridges directly to BBS posts + Added: JAM category in splore + Added: GPIO support for Raspberry Pi + Added: Read clipboard using stat(4) after user presses CTRL-V + Added: printh() can optionally write to a file or the host clipboard + Added: Editor tool information and tips shown on mouseover + Added: Set desktop path with -desktop (screenshots and gifs are saved here) + Added: Warning on saving .p8 when compressed code size exceeds .p8.png limit + Added: Alternative editor colours // config.txt: gui_theme 1 + Added: Dotted line every 8 rows in song view + Added: -screenshot_scale (default: 3) and -gif_scale (default: 2) + Added: Can use ctrl-up, ctrl-down to jump to start and end of code + Added: CTRL-M to mute/unmute sound + Added: HTML5-exported carts support 60fps + Added: Timeout switch for splore downloads: -timeout + Changed: Glyph characters typed with alt + a..z + Changed: stat(0) does not include allocations waiting to be garbage collected + Changed: Unfiltered screen stretching at integer scales by default + Changed: Removed -aspect and -scale settings (use draw_rect instead) + Fixed: -home has no effect under Windows + Fixed: Sometimes frame skipping starts before CPU usage has reached 100% + Fixed: Double-speed BTNP() timing in 60fps mode + Fixed: Exported HTML fails when _update60 is used instead of _update + Fixed: Can't copy and paste button glyphs + Fixed: Lines containing glyphs do not scroll far enough horizontally + Fixed: Loading .p8 renamed as .p8.png from splore freezes + Fixed: Bucketfill in map doesn't sync to shared memory + Fixed: fset fails when de-setting flags + Fixed: Syntax error when beginning with the form: IF (..) [OR|AND]\n + Fixed: cls() costs twice as much cpu as it should + Fixed: wav file exporter missing some data / writing truncated buffers + Fixed: Entering new notes in song view doesn't observe current volume, instrument + Fixed: alt-tab sometimes generates alt character text entry event + Fixed: Resuming a cancelled download in splore causes crash + Fixed: Controller attributes in log.txt always shown as -1 + + + v0.1.8 + + Added: 60fps support + Added: Music exporter + Added: Custom GIF length (maximum 120 seconds) + Added: -,+ to navigate sprite tabs, sfx, music patterns + Added: sfx editor: navigate with home, end, pageup/down, mousewheel + Added: <, > to modify sfx speed, or click and drag + Added: Middle mouse button to pan around spritesheet / map + Added: Shortcut command for splore: S + Added: Pre-installed selection of BBS cart (use INSTALL_GAMES) + Added: Warning when saving .p8.png with no label + Added: (OSX) logging to ~/Library/Logs (viewable with Console.app) + Added: -pixel_perfect switch (on by default) + Added: -draw_rect switch + Changed: Can not CTRL-S save over a loaded bbs cart + Changed: Only .p8 files listed by dir() and by splore + Changed: Command history increased to 256 + Changed: exit() / shutdown() have no effect while running cart + Fixed: Memory usage (stat(0)) inconsistent across host platforms + Fixed: Spinny disks shows when reloading current cart with load() + Fixed: GIF saver does not respect 64x64 / mirrored modes + Fixed: Miscellaneous multi-line comments / strings issues + Fixed: Empty map cels cost cpu in mapdraw() + Fixed: mapdraw() slowdown when drawing bottom half of map + Fixed: preprocess changes semantics when += and : operators on same line + Fixed: Identifiers starting with underscore counted as extra token + Fixed: Saving .png exceeding compressed code limit fails silently + Fixed: Right-clicking a sprite does not set the currently edited sprite + Fixed: (Windows) extra space added to pasted lines + Fixed: spr() expensive when drawn with low negative coordinates + Fixed: pipe character identical to colon character + Fixed: (Raspberry Pi) shift key appends a character when entering text + Fixed: Editor mode buttons are still clickable during cart runtime + Fixed: When loading a .p8.png file, label is reset and needs to be re-captured + Fixed: export() does not report failure + Fixed: mset()'d changes in shared memory not readable via peek() / sget() + Fixed: cstore() saving edited code + Fixed: audio pop between patterns during music playback + + v0.1.7 + + Added: menuitem() + Added: button glyphs in code (shift-L, R, U, D, X, O) + Added: Customisable data directory (e.g. pico8 -home mydata) + Added: Web gpio pins: read and write pico8_gpio[] in javscript + Fixed: SPLORE search doesn't reset + Fixed: Splore skipping 33rd cart listing after loading more items + Fixed: Crash when selecting a local binary file in splore + Fixed: Semicolon can't be used as a list or statement separator + Fixed: Exported html can not cstore self + + + v0.1.6 + + Added: SPLORE local & bbs cartridge explorer + Added: setmetatable(), cocreate(), coresume(), costatus(), yield() + Added: Spinning cart icon to show when a cart is swapped / written to + Added: Permanent storage when carts played in a browser + Added: Adjustable aspect ratio (-aspect 420 for 1:1) + Changed: Lua memory limit: 1024k (was 512k) + Changed: Music channel now resumes after being clobbered by an sfx + Changed: Arpeggios double speed when SFX speed <= 8 + Changed: Exceeding compressed code limit does not block saving in .p8 format + Changed: spr() half as expensive, to be consistent with map() + Changed: Fractional hex number notation: 0x0.3 == 0x0.3000, (was 0x0.0003) + Changed: : operator doesn't count as an extra token (same as .) + Changed: cstore() writes directly to disk + Changed: cstore(), reload() return number of bytes read / written + Changed: save() while running does nothing. (use cstore() instead) + Changed: load() while running loads and runs the specified cartridge + Fixed: Small pops in audio mixer caused by sound wave discontinuities + Fixed: HTML5-exported sound clicks badly under Chrome + Fixed: Display palette is not oberserved when exporting GIFs + Fixed: Rapid keypresses causes duplicate readings in tracker & text editor + Fixed: += inside comments breaks preprocessor + Fixed: sspr() cpu cost the same when clipped + Fixed: cartdata() with bad parameters crashes + Fixed: EXPORT from commandline can not be used without brackets and quotes + + + v0.1.5 + + Added: Raspberry Pi Build + Added: Keyboard configuration for player buttons (KEYCONFIG) + Added: Music tracker select / copy / paste + Added: Single-level undo in audio tools + Added: Live preview of frequencies in sound editor + Fixed: Command history extends past last reboot + Fixed: Sfx exporter broken + Fixed: Slashes at end of path resolve to double slashes + Fixed: Load cart from commandline under Windows + + + v0.1.4d + v0.1.4c + + Fixed: International character entry inserting extra characters + Fixed: Lines with tabs have broken cursor placement and display boundary + + v0.1.4b + + Fixed: OSX command-key combinations broken + + v0.1.4 + + Added: spritesheet importing and exporting with import("blah.png"), export("blah.png") + Added: sfx exporting with export("blah%d.wav") + Added: External cartridge parameter for reload() and cstore() + Added: Persistent cartridge data mapped to 0x5e00 + Added: Click token limit to toggle token & char limit display + Added: assert(), type() + Added: P to pause + Changed: code char limit: 64k (was 32k) + Changed: local declarations and semicolons not counted as tokens + Changed: Pairs of brackets and block delimitations count as one token + Changed: Only _update() or _draw() need to exist to enter main loop + Changed: Allow forward-slash in code editor + Changed: info() reports current (last loaded or saved) filename + Changed: html5 version compiled with NO_DYNAMIC_EXECUTION + Changed: can only cstore up to 64 different files in one session + Changed: load() automatically copies data section of cart to base ram + Fixed: Shift-drag-copy sprites -> paste only pastes 1x1 + Fixed: ".." should count as one token + Fixed: Tracker displaying D instead of . + Fixed: Multi-line comments + Fixed: Crash on run when code close to char limit + Fixed: When over token limit, can not run any command + Fixed: Unused high bits in SFX section not saved in .p8 format + Fixed: Camera position memory mapping out of sync + Fixed: pico8.txt link broken in windows installer + Fixed: print() crashes when parameter is not a string or numbers + Fixed: Multi-line strings & escape chars mess up tokenizer and print() + Fixed: Joystick not responding when left stick is up to the left + Fixed: Alt-F4 saves screenshot before quitting + Fixed: Sprite editor mode button doesn't show fullscreen mode + Fixed: -sound parameter not working in html5 version + + + v0.1.3 + + Added: paste into commandline + Fixed: lua standard libraries accessible + Fixed: command-line loading doesn't work + Fixed: music pattern finished too early when all tracks set to looping + Fixed: peek()ing odd bytes in sfx address space masks bit 7 + Fixed: cstore and reload from code space should have no effect + + v0.1.2 + + Added: html5 cartridge exporter + Added: Cartridge save data (64 fixed point numbers) + Added: 8-player input + Added: Demo carts: COLLIDE and BUTTERFLY + Added: Command-line parameters // load cart, -run, settings + Added: Alternative function keys (F6..F9 aliased as F1..F4) + Added: pairs() + Added: printh() for debugging + Added: Tab completion for filenames in console + Added: stack trace on runtime error + Changed: music pattern length taken to be first non-looping channel's length + Changed: noise instrument (6) has low frequency white noise scaled by volume + Changed: screenshot captures whole window contents at display resolution + Changed: del() moves remaining items up one index to maintain a packed table + Changed: add(),del(),count(),all() no longer store extra fields + Changed: removed count() from docs -- now just a legacy function. Use # operator instead. + Changed: cursor only blinks while window is active + Changed: peek(), poke() and bitwise operations (band()..) have no function call overhead + Changed: yellow slightly warmer + Changed: No camera snapping after pan in map mode + Fixed: sqrt() crashing for 0 or >= 32761 + Fixed: Semi-colon characters in text editor + Fixed: Long lines split when saving in .p8 format + Fixed: pget() does not respect camera position + Fixed: Error message when peeking or poking outside of legal address space + Fixed: Search replace colour fills one pixel outside of selected region + Fixed: Playing an empty music pattern breaks subsequent music playback + Fixed: Invalid sfx editing state on startup + Fixed: Painting instruments values in frequency view also sets volumes + Fixed: Inconsistent gif recording speeds + Fixed: Unmapped joystick support + Fixed: Compressed code size sometimes larger than uncompressed + Fixed: mid() fails when first argument is not smallest + Fixed: Scroll wheel changes sprite/map zoom while in code editor + Fixed: CTRL-R (quick-run) drawing over current line in command mode + Fixed: Label capture (F7) does not respect display palette state + Fixed: Syntax highlighting of api functions and hex numbers + Fixed: Looping to 0 with negative step finishes at 1 + Fixed: nil values printed as false instead of nil + Fixed: Hexadecimal fractional parts + Fixed: btnp() unresponsive when skipping frames + Fixed: Editing mode is lost when using ctrl-r to run + Fixed: Tracker note entry keys mapped, messing up piano-like layout + Fixed: Shared gfx/map memory out of sync after some editor operations + Fixed: Alt-gr character entry + Fixed: Can map display palette to entries >= 16 using poke() + Fixed: Using shift to select in code editor has wrong selection range + Fixed: Dragging above top of text causes selection to flip to end + Fixed: Duplicate at end of file listing + + + v0.1.1 + + Added: Token-based code limiting (8192 tokens, 32k ascii text) + Added: Freeform move, pan and selection in sprite and map editors + Added: Flood-fill tool (sprite and map) + Added: .GIF saver + Added: CTRL-Stamp to stamp with transparency + Added: Single-step undo for map and sprites + Added: 2x2 brush + Added: sqrt(), atan2() + Added: CTRL-S to quick-save + Added: CTRL-R reloads .p8 file and runs (useful for external text editing) + Added: Automatic backups on overwriting or quitting without saving + Added: Scroll wheel zooms in sprite editor + Added: Customisable resolution // e.g. pico8 -width 580 + Added: Strings highlighted as green + Added: ALT-click can optionally simulate right click (see config.txt) + Added: palt() to control transparency for spr(), sspr() + Added: info() + Changed: load() tries adding .p8.png, .png if file doesn't exist + Changed: Draw operations apply only to selection when active + Changed: Move operations (cursors) apply to selection if present + Changed: Removed time() + Changed: Random seed is random on cart startup + Changed: api functions never read directly from cart rom + Changed: sspr() can take negative values for dw, dh + Fixed: Sparse table indexing with integers fails + Fixed: Assignment operators and shortform if-then-else failing + Fixed: sspr() failed when w0 == 128 + Fixed: Circle drawing broken when camera not (0,0) + Fixed: CPU hogging + Fixed: Noise instrument clobbers rnd() sequence + Fixed: Audio system not resetting on program reset + Fixed: % operator sometimes wrong for negative values + Fixed: Length operator (#) + Fixed: Power operator (^) + Fixed: Line clipping bug on right and bottom edges + Fixed: print() precision for whole numbers + Fixed: print() broken for negative y values + Fixed: tokenization and keyword highlighting + Fixed: sprite properties not copied/pasted + Fixed: Only sfx 0..32 could be used as music patterns + Fixed: Saving and loading a .p8 file adds newline to end of code + Fixed: Drag selection to left margin in code editor -> selects all + + + v0.1.0 + + Added: demo cart: hello.p8 (use install_demos) + Added: CTRL-R from anywhere to run cart or restart cart + Added: use a,s to select colour in gfx editor + Added: consistent operation cpu costs + Added: btn(), btnp() with no arguments returns bitfield + Added: fget(id) returns bitfield of that sprite's flags + Changed: renamed mapdraw() to map() for consistency + Changed: default sleep time is 5ms (better cpu consumption for laptops) + Fixed: memory limiter + Fixed: wonky line and circle drawing + Fixed: shift-click volume in sfx editor to set all + Fixed: number formatting is now never in scientific notation + Fixed: clipped error messages in console + Fixed: text undo stores rollback points when chaning line number + Fixed: print(str) carriage returns to previous x + + + v0.0.5 + + Added: help() + Added: Ctrl+F / Ctrl+G to search for text, repeat search + Added: del key in code editor + Added: Short-hand single-line IF statements + Added: Unary operators += -= /= *= %= + Added: srand(), time(), added rnd() to docs + Added: Ctrl+D to duplicate line + Added: interactive ls() for multi-page file listings + Added: band() bor() bxor() bnot() shl() shr() + Added: runtime error line number + Added: dir() (aliased to ls()) + Changed: print() only autoscrolls when called with no parameters + Changed: alt+up/down to skip between function definitions (was ctrl) + Changed: sspr() dw, dh defaults to sw, sh + Fixed: Load crashes on files that are not .p8 format or directories + Fixed: Misc editor cursor position glitches + Fixed: Crash when syntax error occurs before viewing code + Fixed: Broken newlines after rebooting + Fixed: mkdir() called with no parameters creating "(null)" directory + Fixed: scrolling past top of code with scrollwheel + Fixed: alt-f4 to fastquit + + + v0.0.4 + + Added: Jelpi demo cart + Added: Internal carts // use install_demos() + Added: Joystick support + Added: Undo/redo in code editor + Added: Scroll wheel in code editor + Added: LCTRL + UP/DOWN to navigate functions in code editor + Added: LALT + LEFT/RIGHT to switch editing modes + Added: btnp() + Added: Release looping sample (a in editor , sfx(-2, channel) in code) + Changed: Music stops when pausing program execution + Changed: Allow 8 settable sprite flags + Changed: Made noise instrument more bassy + Fixed: Home, end keys + Fixed: Sprite flags 4,5 not saved + Fixed: mset() discarding 4 high bits + Fixed: Crash when highlighting long strings + + + v0.0.3 + + Added: Palette mapping type 1 (on display) + Added: Collections can be initialized with c={1,2,..} + Added: holdframe() // used automatically by _draw(), update() + Added: Sprite selections and operations across selections + Added: Map selection and stamp tool + Added: Immediate mode screen buffer preserved while switching views + Added: Channel mask for music playback + Added: Memory mapping for live sound data + Added: .png cart format + Added: Sprite navigation by keyboard (-, +) + Fixed: Strict 4-channel sound + Fixed: Automatic sfx channel selection (channel index: -1) + + + v0.0.2 + + Added: Command history + Added: P2 keys + Added: Boot sequence + Added: Windows, 64-bit linux builds + Added: CPU cost of internal api functions + Added: Separate song channel index and mute status + Added: Memory mapping + Added: Search/replace colour in sprite editor + Added: Copy/paste sprites and map regions + Improved: Immediate mode command editing + Improved: Editor cursor behaviour + Fixed: Automatic audio channel selection + + + v0.0.1 + + First Alpha + + +

      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%0ASZb}c%l*asNBHzGpBH_exk!l|Te6VnJ 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 FnO0 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%0DYH;>$Cug=s3Jjo#*ekC~|< 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

      ^EvzuE^Kz!i|Xnn8oy#5I7!ZRW2 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�QHr>Pm^Cay_Iy*eS*nRMD_*QZKDH|2*% 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

  • ggorD(+u-*^lVICYe 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

    Dl_ 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≥ue0IlHhi-U&$8ipHe6uC3vGC*4c}(N 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%0D<%W-Y&6*p%t^+rEjo@mpSnw&Y zQS)i9IP__+oUq30+IF+o*t-_b+~c*6eI9Y|_1cHN;FWFndCjc*z4FilUTeW7uet6) zugrJ|`TnZc3V$7Owt8jNH@xToZLfHZjlc6+YhLx5yZ`ESb^pyP(vNyA&uiY(x?b~| zp4ai-H&AZj6FtIb9CZ0yS+-AXvwc>j+vi&0_8I#KgAeW?$kH-Iw@`ZI|Nu1fQ{Qg3sJH#b-n>_lfLE+@IzXtEc&_q8UEf zHN$6QR{N~=HAu6@=h<_m&uE(MlUru{jH)?4xp}V7wR5h|3^w`f9UVS%f2YsNTI!QM zOMPPVbv|SJ3ZLAy!k1QcJ@R_J&lEQxy;VMQ`%OM$?`og9?q=lwW}m(77Ub`Cq3 zwe@zN`@kJObL;&+G4uhSv3`?J9NpwIy1wkQf?Is09k9>Cak5QJVeX{#$pS^Ln&$IcL$kQ*8&M$q&y!}3F|4Tk|?<+p5 z=T)CE^!K2{?|pLB?|rUroFBxw=MO$}$6tM}!+-UO;NN_%1%LCI6OQ^s)<1mq{(tza zegE{y;(z%vHd<*iXs206>@-)ICrws((kzcRO=f%3j0wIpvBsAs8wRDNZ#^r`t{Ivp zE6+)$8LV1|&<4CwzK5MtX0VAD8XxF(!0jDTOb7QnWUet~cmUjX|7 z@ECB-FyT5hOc?7g6t0~Y3b_aNhN?{19x{d4n<)mb$`W4K7>wd7lw}$8`{lx_yiOPy zD}+_{5g|5wL>Tj~ht1)m(D_%QoF5lr{VHK@{)~_fw+JI^t+3PY5XRO!aQ{x>3EU-Q z5$p=V&%q|J0r58oZ_Rxu!+j{rL&8_{6=C)~D#VdTg;n)UA+x>(N^OU|;c?;V{x0kV z{{y=IP*_Dz3FF|?LTvmA^6`uihn^AEx@S?&=fpYdo)fNp&%uVUNBDxz3)kl7g|%R> zFb?kpyjg=_0?VOKgRtnIG|qw9D0 zX0Hk(`;ZXbhwyEGFJ##tg|F$)!Z`3}VTF$f*>*%2$BqbJ_us|Yn_m;Y^kZUZ*Be5@ zc45qu&}CgReT7?^l^%KCQJ)mqY0#0=prf8A#nAUj(+~T@%Hh(=fDIyhv@{RpNSPUs z>Bn;AnPMVz>r&|ZrP6bxTpC+oUsyX?+6yYAl{rP)!AdF1Dxpim#<21VX&;&)tsT|S z>1V<|aHX{N&z9bXurxBRk>0B7q08SUEerblVCeBRcR=61Lz)75e9c`_>;a~K4*K}# zq>SDz#pb)AYu^oh`W|U#-YaGCy;7{Z7j~3xDc5~LiXmT=(*H$itlTKA^e^H3OVHgP zKzSa7UEo1!Y}zbE#l!M_#~zk)$RkorctjfFD^ecZ2D`wwVTbrOY$VS}_sVBsA9)t( zJty6Vo|9(!Po;7Ar?9E~RGPuP$lG3NtomQrR(>yy%0EhT#h;`-_%G7*{9W3IUz0|~ zF=?(d4P&rnq#d#hIS=~#S{L+k+ixG7_SZIg?z+(#y zqh^sIS1dw$4R~LpaoXl3hIMqQVeY!yK;<@ELpLD)J<#DFGK}u6xb_WP`v!FP#|+bY z2Jd>tu(kqsJYyJJp2ho~2ktfGwigU@!pq3RZ;jJe{@$=x{M9g<-ay$5)2tW-!{iwz z^afKd$bilUz1X_Iw2HD!v8Dw2Tp4u0a?>@h+!RMAnb!Wv&|fP|SyW-VRzV+LJH<4j zmzn5SOjq_a(+o~G#fs^s+z4DX3wr2mQx2YEisGxFx6U